Add contractor manager role.

This commit is contained in:
aminhashemi92 2025-12-19 20:00:16 +03:30
parent 9cadf4eed5
commit 5971860c4f
7 changed files with 15 additions and 6 deletions

View file

@ -45,6 +45,10 @@ class Command(BaseCommand):
"name": "ستاد آب‌منطقه‌ای",
"slug": UserRoles.HEADQUARTER,
},
{
"name": "مدیر پیمانکار",
"slug": UserRoles.CONTRACTOR_MANAGER,
},
]
for role in roles:

View file

@ -58,3 +58,7 @@ def is_headquarter(user):
def is_customer(user):
return _has_profile(user) and user.profile.has_role(UserRoles.CUSTOMER)
@register.filter
def is_contractor_manager(user):
return _has_profile(user) and user.profile.has_role(UserRoles.CONTRACTOR_MANAGER)

View file

@ -11,6 +11,7 @@ class UserRoles(Enum):
REGIONAL_WATER_AUTHORITY = "rwa" # کارشناس امور
WATER_RESOURCE_MANAGER = "wrm" # مدیر منابع آب
HEADQUARTER = "hdq" # ستاد آب منطقه‌ای
CONTRACTOR_MANAGER = "cmn" # مدیر پیمانکار
USER_TYPE_CHOICES = [

Binary file not shown.

View file

@ -30,7 +30,7 @@ def installation_assign_step(request, instance_id, step_id):
profile = getattr(request.user, 'profile', None)
is_manager = False
try:
is_manager = bool(profile and profile.has_role(UserRoles.MANAGER))
is_manager = bool(profile and profile.has_role(UserRoles.MANAGER)) or bool(profile and profile.has_role(UserRoles.CONTRACTOR_MANAGER))
except Exception:
is_manager = False

View file

@ -155,7 +155,7 @@
{% endfor %}
</select>
</div>
{% if request.user|is_admin or request.user|is_manager or request.user|is_accountant %}
{% if request.user|is_admin or request.user|is_manager or request.user|is_accountant or request.user|is_contractor_manager %}
<div class="col-sm-6 col-md-3">
<label class="form-label">امور</label>
<select class="form-select" name="affairs">
@ -166,7 +166,7 @@
</select>
</div>
{% endif %}
{% if request.user|is_admin or request.user|is_manager or request.user|is_accountant %}
{% if request.user|is_admin or request.user|is_manager or request.user|is_accountant or request.user|is_contractor_manager %}
<div class="col-sm-6 col-md-3">
<label class="form-label">کارگزار</label>
<select class="form-select" name="broker">

View file

@ -20,7 +20,7 @@ def scope_instances_queryset(user, queryset=None):
return qs.filter(id__in=assign_ids)
if profile.has_role(UserRoles.BROKER):
return qs.filter(broker=profile.broker)
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER):
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER) or profile.has_role(UserRoles.CONTRACTOR_MANAGER):
return qs.filter(broker__affairs__county__city=profile.county.city)
if profile.has_role(UserRoles.ADMIN):
return qs
@ -69,7 +69,7 @@ def scope_wells_queryset(user, queryset=None):
return qs
if profile.has_role(UserRoles.BROKER):
return qs.filter(broker=profile.broker)
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER):
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER) or profile.has_role(UserRoles.CONTRACTOR_MANAGER):
return qs.filter(broker__affairs__county__city=profile.county.city)
if profile.has_role(UserRoles.INSTALLER):
# Wells that have instances assigned to this installer
@ -102,7 +102,7 @@ def scope_customers_queryset(user, queryset=None):
return qs
if profile.has_role(UserRoles.BROKER):
return qs.filter(broker=profile.broker)
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER):
if profile.has_role(UserRoles.ACCOUNTANT) or profile.has_role(UserRoles.MANAGER) or profile.has_role(UserRoles.WATER_RESOURCE_MANAGER) or profile.has_role(UserRoles.CONTRACTOR_MANAGER):
return qs.filter(county__city=profile.county.city)
if profile.has_role(UserRoles.INSTALLER):
# Customers that are representatives of instances assigned to this installer