Add RRO, portal section perms, dislocation presets, and hiring intern flow.

Ship cash-register registry, section-based portal access, configurable dislocation columns, and trial-hire intern accounts with credentials PDF.
This commit is contained in:
2026-08-09 14:58:17 +03:00
parent 237275abd0
commit ae5c1f1848
63 changed files with 5987 additions and 2217 deletions
+14 -3
View File
@@ -3,7 +3,7 @@ from datetime import datetime
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import login_required
from django.db import models
from django.db.models import Sum
from django.db.models import Q, Sum
from django.http import HttpResponseForbidden
from django.shortcuts import get_object_or_404
from django.utils import timezone
@@ -22,9 +22,20 @@ Employee = get_user_model()
def _is_it_staff(user):
return user.is_superuser or user.groups.filter(name='IT').exists()
from core.portal_access import user_can_access
return user_can_access(user, 'it_manager')
def _it_assignees():
"""Кандидаты в исполнители: группа IT, а также staff/superuser
(если в группу IT ещё никого не добавили — селект не пустой)."""
return (
Employee.objects.filter(is_active=True)
.filter(Q(groups__name='IT') | Q(is_staff=True) | Q(is_superuser=True))
.distinct()
.order_by('last_name', 'first_name')
)
def _directory_choices(type_code):
"""(code, name)-кортежі активних записів довідника — та сама форма,
що й колишні CharField(choices=...), для сумісності з шаблонами."""
@@ -136,7 +147,7 @@ def _it_manager_context(request):
'ticket_statuses': ticket_statuses,
'ticket_priorities': _directory_choices('ticket_priority'),
'ticket_types': _directory_choices('ticket_type'),
'it_staff': Employee.objects.filter(groups__name='IT', is_active=True).order_by('last_name'),
'it_staff': _it_assignees(),
'worklogs_page': worklogs_page,
'worklog_types': _directory_choices('worklog_type'),