Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/users/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def middleware(request: HttpRequest) -> HttpResponse:
language=_extract_language(request),
# Lazily computed properties:
isAuthenticated=lambda: request.user.is_authenticated,
user=lambda: User.to_dict(request.user) if request.user.is_authenticated else None,
user=lambda: User.to_json(request.user) if request.user.is_authenticated else None,
)
return get_response(request)

Expand Down
15 changes: 15 additions & 0 deletions backend/users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.forms.models import model_to_dict
from django.utils.translation import gettext as _

from tools.display import format_dates
from tools.utils.choices import CommonLabelValueChoices


Expand Down Expand Up @@ -119,6 +120,20 @@ class Meta:
def to_dict(self):
return model_to_dict(self, exclude=("password", "is_superuser", "is_staff", "groups", "user_permissions"))

def to_json(self):
return {
"id": self.id,
"firstName": self.first_name,
"lastName": self.last_name,
"fullName": self.name,
"email": self.email,
"roleLabel": RoleChoices(self.main_role).label,
"roleValue": RoleChoices(self.main_role).value,
"addedSince": format_dates.short_date(self.date_joined),
"lastActivity": format_dates.short_datetime(self.last_login),
"ngohubId": self.ngohub_id,
}

def __str__(self):
return self.email

Expand Down
24 changes: 8 additions & 16 deletions backend/users/views/team/listing.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from django.views.decorators.cache import cache_control

from tools.data_models.filtering import FilterField, FilterItem
from tools.display import format_dates as display_dates
from tools.display.url_build import build_ngohub_url
from tools.utils.filtering import build_filters_display, build_filters_mapping, filter_qs
from tools.utils.pagination import paginate_queryset
Expand All @@ -27,21 +26,14 @@


def _serialize_users(users_page: Page[User], user_id: int) -> List[Dict]:
return [
{
"id": user.id,
"firstName": user.first_name,
"lastName": user.last_name,
"email": user.email,
"isCurrentUser": user.id == user_id,
"roleLabel": RoleChoices(user.main_role).label,
"roleValue": RoleChoices(user.main_role).value,
"addedSince": display_dates.short_date(user.date_joined),
"lastActivity": display_dates.short_datetime(user.last_login),
"ngohubId": user.ngohub_id,
}
for user in users_page
]
users = []
for user in users_page:
new_user = user.to_json()
new_user["isCurrentUser"] = bool(user.id == user_id)

users.append(new_user)

return users


def _get_filter_options() -> List[FilterField]:
Expand Down
4 changes: 2 additions & 2 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"scripts": {
"dev": "vite",
"prod": "tsc -b && vite build",
"tsc": "tsc -b",
"preview": "vite preview",
"lint": "eslint .",
"prettier:format": "prettier --config prettier.config.mjs --write src/**/*.{ts,tsx}",
Expand All @@ -24,7 +25,7 @@
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.2",
"@radix-ui/react-collapsible": "^1.1.11",
"@radix-ui/react-dialog": "^1.1.14",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.15",
"@radix-ui/react-label": "^2.1.7",
"@radix-ui/react-popover": "^1.1.14",
Expand All @@ -33,7 +34,7 @@
"@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-switch": "^1.2.5",
"@radix-ui/react-tabs": "^1.1.12",
"@radix-ui/react-tooltip": "^1.2.7",
"@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/vite": "^4.1.10",
"@tanstack/react-table": "^8.21.3",
"class-variance-authority": "^0.7.1",
Expand Down
15 changes: 15 additions & 0 deletions frontend/src/components/hooks/use-sidebar.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { SidebarContextProps } from "@/components/types/sidebarContextProps";
import * as React from "react";

export const SidebarContext = React.createContext<SidebarContextProps | null>(null);

function useSidebar() {
const context = React.useContext(SidebarContext);
if (!context) {
throw new Error("useSidebar must be used within a SidebarProvider.");
}

return context;
}

export { useSidebar };
117 changes: 0 additions & 117 deletions frontend/src/components/paul/app-sidebar.tsx

This file was deleted.

Loading