diff --git a/scipost_django/careers/templates/careers/_job_opening_card.html b/scipost_django/careers/templates/careers/_job_opening_card.html index 264f57eca2b1337d18ccd68c9ac75d80d411c2f9..bd4cd749a4fecb42e791c889594c86bbf934abc1 100644 --- a/scipost_django/careers/templates/careers/_job_opening_card.html +++ b/scipost_django/careers/templates/careers/_job_opening_card.html @@ -16,7 +16,7 @@ </h3> </div> </div> - {% if perms.careers.add_job_opening %} + {% if perms.scipost.can_manage_job_openings %} <ul class="list-inline my-4"> <li class="list-inline-item"> <a href="{% url 'careers:job_opening_update' slug=job_opening.slug %}" class="text-warning">Update</a></li> diff --git a/scipost_django/careers/templates/careers/job_opening_detail.html b/scipost_django/careers/templates/careers/job_opening_detail.html index c673876e13c62a9af057845490ea0eacb886d574..6752da2d2ab624f29cccc8defff6d13075855818 100644 --- a/scipost_django/careers/templates/careers/job_opening_detail.html +++ b/scipost_django/careers/templates/careers/job_opening_detail.html @@ -22,7 +22,7 @@ </div> </div> - {% if perms.careers.add_job_opening %} + {% if perms.scipost.can_manage_job_openings %} <h1 class="highlight">Applications for this position</h1> <div class="accordion" id="job_app_accordion"> {% for job_app in job_opening.job_applications.all %} diff --git a/scipost_django/careers/templates/careers/job_opening_list.html b/scipost_django/careers/templates/careers/job_opening_list.html index 2a5a084d5f7648cbd0c53fd16f11d6c55a4c80ff..54ab0c80aa799de275ab6bd2d98058b8a0e24635 100644 --- a/scipost_django/careers/templates/careers/job_opening_list.html +++ b/scipost_django/careers/templates/careers/job_opening_list.html @@ -18,7 +18,7 @@ Job Openings </h1> - {% if perms.careers.add_job_opening %} + {% if perms.scipost.can_manage_job_openings %} <ul> <li><a href="{% url 'careers:job_opening_create' %}">Add a Job Opening</a></li> </ul> @@ -32,7 +32,7 @@ <h1><a href="{{ job.get_absolute_url }}"><strong>{{ job.title }}</strong></a></h1> <p> Announced on {{ job.announced|date:'Y-m-d' }} - {% if perms.careers.add_job_opening %} + {% if perms.scipost.can_manage_job_openings %} ; Status: {{ job.get_status_display }} {% endif %} </p> diff --git a/scipost_django/careers/views.py b/scipost_django/careers/views.py index 3a85e640cde8111d20e78f815353de5fb6d52b67..935b3e17011f5ae93e0dcf34a73a209bce138cc9 100644 --- a/scipost_django/careers/views.py +++ b/scipost_django/careers/views.py @@ -24,7 +24,7 @@ class JobOpeningCreateView(UserPassesTestMixin, CreateView): success_url = reverse_lazy("careers:job_openings") def test_func(self): - return self.request.user.has_perm("careers.add_job_opening") + return self.request.user.has_perm("scipost.can_manage_job_openings") class JobOpeningUpdateView(UserPassesTestMixin, UpdateView): @@ -33,7 +33,7 @@ class JobOpeningUpdateView(UserPassesTestMixin, UpdateView): success_url = reverse_lazy("careers:job_openings") def test_func(self): - return self.request.user.has_perm("careers.add_job_opening") + return self.request.user.has_perm("scipost.can_manage_job_openings") class JobOpeningListView(ListView): @@ -42,7 +42,7 @@ class JobOpeningListView(ListView): def get_queryset(self): qs = JobOpening.objects.all() - if not self.request.user.has_perm("careers.add_job_opening"): + if not self.request.user.has_perm("scipost.can_manage_job_openings"): qs = qs.publicly_visible() return qs @@ -54,7 +54,7 @@ class JobOpeningDetailView(DetailView): def get_queryset(self): qs = JobOpening.objects.all() - if not self.request.user.has_perm("careers.add_job_opening"): + if not self.request.user.has_perm("scipost.can_manage_job_openings"): qs = qs.publicly_visible() return qs diff --git a/scipost_django/scipost/management/commands/add_groups_and_permissions.py b/scipost_django/scipost/management/commands/add_groups_and_permissions.py index 9dcb736d8a6ce814a2d097767d58b4c6c1ad4599..7364f21e88b1bb0386af527ec1fc94634aa43ea3 100644 --- a/scipost_django/scipost/management/commands/add_groups_and_permissions.py +++ b/scipost_django/scipost/management/commands/add_groups_and_permissions.py @@ -22,6 +22,9 @@ class Command(BaseCommand): FinancialAdmin, created = Group.objects.get_or_create( name="Financial Administrators" ) + HumanResourcesAdmin, created = Group.objects.get_or_create( + name="Human Resources Administrators" + ) AdvisoryBoard, created = Group.objects.get_or_create(name="Advisory Board") EditorialAdmin, created = Group.objects.get_or_create( name="Editorial Administrators" @@ -425,11 +428,18 @@ class Command(BaseCommand): name="Can manage subsidies", content_type=content_type, ) + + # Human Resources Administration can_view_timesheets, created = Permission.objects.get_or_create( codename="can_view_timesheets", name="Can view timesheets", content_type=content_type, ) + can_manage_job_openings, created = Permission.objects.get_or_create( + codename="can_manage_job_openings", + name="Can manage job openings", + content_type=content_type, + ) # News administration can_manage_news, created = Permission.objects.get_or_create( @@ -578,6 +588,13 @@ class Command(BaseCommand): ] ) + HumanResourcesAdmin.permissions.set( + [ + can_view_timesheets, + can_manage_job_openings, + ] + ) + AdvisoryBoard.permissions.set( [ can_manage_registration_invitations,