From 657b72eb7a1e6d5a78e6c2513fea6e7be223a0ef Mon Sep 17 00:00:00 2001 From: Stan <1939656+GDay@users.noreply.github.com> Date: Wed, 31 Dec 2025 05:32:39 +0100 Subject: [PATCH] few updates --- back/admin/people/forms.py | 52 ++++++++++--------- .../people/templates/colleague_update.html | 1 + back/admin/people/templates/colleagues.html | 18 ++++--- .../people/templates/new_hire_detail.html | 10 ++-- back/admin/people/views/colleagues.py | 9 +--- back/admin/people/views/new_hires.py | 41 ++++++++++++--- back/admin/settings/forms.py | 4 +- back/admin/settings/views.py | 1 + back/back/templatetags/general.py | 9 ++-- back/new_hire/views.py | 3 +- back/users/models.py | 13 ----- back/users/utils.py | 14 +++++ 12 files changed, 106 insertions(+), 69 deletions(-) diff --git a/back/admin/people/forms.py b/back/admin/people/forms.py index 077ef2e0..5c61ab76 100644 --- a/back/admin/people/forms.py +++ b/back/admin/people/forms.py @@ -14,9 +14,14 @@ MultiSelectField, UploadField, ) -from misc.mixins import FilterDepartmentsFieldByUserMixin from organization.models import Organization -from users.models import User +from users.models import DepartmentRole, User +from users.selectors import get_available_roles_for_user + + +class RoleModelMultipleChoiceField(forms.ModelMultipleChoiceField): + def label_from_instance(self, obj): + return obj.department.name + " // " + obj.name class NewHireAddForm(forms.ModelForm): @@ -25,7 +30,13 @@ class NewHireAddForm(forms.ModelForm): to_field_name="id", initial=Sequence.onboarding.filter(auto_add=True), required=False, - label=_("Sequences"), + label=_("Additional sequences"), + ) + roles = RoleModelMultipleChoiceField( + queryset=DepartmentRole.objects.none(), + to_field_name="id", + required=False, + label=_("Roles"), ) buddy = forms.ModelChoiceField( queryset=get_user_model().managers_and_admins_or_slack_users.all(), @@ -41,7 +52,7 @@ class NewHireAddForm(forms.ModelForm): widget=forms.DateInput(attrs={"type": "date"}, format=("%Y-%m-%d")), ) - def __init__(self, *args, **kwargs): + def __init__(self, user, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["buddy"].required = False self.fields["manager"].required = False @@ -49,6 +60,10 @@ def __init__(self, *args, **kwargs): self.fields["language"].initial = Organization.object.get().language self.fields["timezone"].initial = Organization.object.get().timezone self.fields["start_day"].initial = timezone.now().date() + self.fields["roles"].queryset = get_available_roles_for_user( + user=user + ).order_by("department") + print(self.fields["roles"].queryset) self.helper = FormHelper() layout = Layout( Div( @@ -93,7 +108,7 @@ def __init__(self, *args, **kwargs): css_class="row", ), Div( - Div(Field("departments"), css_class="col-6"), + Div(Field("roles"), css_class="col-6"), Div( UploadField( "profile_image", @@ -140,7 +155,7 @@ class Meta: "language", "buddy", "manager", - "departments", + "roles", "profile_image", ) @@ -189,6 +204,10 @@ def __init__(self, *args, **kwargs): Div( Field("last_name"), Field("phone"), + UploadField( + "profile_image", + extra_context={"file": self.instance.profile_image}, + ), Field("start_day"), css_class="col-6", ), @@ -198,17 +217,6 @@ def __init__(self, *args, **kwargs): Div(Field("message"), css_class="col-12"), css_class="row", ), - Div( - Div(Field("departments"), css_class="col-6"), - Div( - UploadField( - "profile_image", - extra_context={"file": self.instance.profile_image}, - ), - css_class="col-6", - ), - css_class="row", - ), Div( Div( Field("timezone"), @@ -228,19 +236,17 @@ class Meta: "last_name", "position", "email", - "phone", "start_day", "message", "timezone", "language", "buddy", "manager", - "departments", "profile_image", ) -class ColleagueUpdateForm(FilterDepartmentsFieldByUserMixin, forms.ModelForm): +class ColleagueUpdateForm(forms.ModelForm): birthday = forms.DateField( widget=forms.DateInput(attrs={"type": "date"}, format=("%Y-%m-%d")), required=False, @@ -259,7 +265,6 @@ def __init__(self, *args, **kwargs): Div( Div(Field("email"), css_class="col-12"), Div(Field("position"), css_class="col-12"), - Div(Field("departments"), css_class="col-12"), Div(Field("phone"), css_class="col-12"), Div(Field("birthday"), css_class="col-12"), Div(Field("message"), css_class="col-12"), @@ -281,7 +286,6 @@ class Meta: "first_name", "last_name", "position", - "departments", "birthday", "email", "phone", @@ -295,7 +299,7 @@ class Meta: ) -class ColleagueCreateForm(FilterDepartmentsFieldByUserMixin, forms.ModelForm): +class ColleagueCreateForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() @@ -311,7 +315,6 @@ def __init__(self, *args, **kwargs): Div( Div(Field("email"), css_class="col-12"), Div(Field("position"), css_class="col-12"), - Div(Field("departments"), css_class="col-12"), Div(Field("phone"), css_class="col-12"), Div(Field("message"), css_class="col-12"), Div(Field("facebook"), css_class="col-12"), @@ -332,7 +335,6 @@ class Meta: "first_name", "last_name", "position", - "departments", "email", "phone", "message", diff --git a/back/admin/people/templates/colleague_update.html b/back/admin/people/templates/colleague_update.html index ce666372..adc8c5b2 100644 --- a/back/admin/people/templates/colleague_update.html +++ b/back/admin/people/templates/colleague_update.html @@ -3,6 +3,7 @@ {% load crispy_forms_tags %} {% block actions %} +{% translate "Progress" %} {% if object.termination_date is None %} {% translate "Terminate" %} {% else %} diff --git a/back/admin/people/templates/colleagues.html b/back/admin/people/templates/colleagues.html index 8e19d313..e546212f 100644 --- a/back/admin/people/templates/colleagues.html +++ b/back/admin/people/templates/colleagues.html @@ -33,7 +33,7 @@