add approve need to request list
This commit is contained in:
parent
a195e0b6fc
commit
db61f35711
3 changed files with 61 additions and 1 deletions
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
|
|
@ -223,11 +223,24 @@
|
|||
<tr>
|
||||
<td>{{ item.instance.code }}</td>
|
||||
<td>{{ item.instance.process.name }}</td>
|
||||
<td class="text-primary">
|
||||
<td>
|
||||
{% if item.instance.status == 'completed' %}
|
||||
<a href="{% url 'processes:instance_summary' item.instance.id %}" class="text-primary">{{ item.instance.current_step.name|default:"--" }}</a>
|
||||
{% elif item.instance.current_step %}
|
||||
<a href="{% url 'processes:instance_steps' item.instance.id %}" class="text-primary">{{ item.instance.current_step.name }}</a>
|
||||
{% if item.current_step_approval_status %}
|
||||
<br>
|
||||
<small class="{% if item.current_step_approval_status.status == 'rejected' %}text-danger{% elif item.current_step_approval_status.status == 'approved' %}text-success{% else %}text-warning{% endif %}">
|
||||
{% if item.current_step_approval_status.status == 'rejected' %}
|
||||
<i class="bx bx-x-circle"></i>
|
||||
{% elif item.current_step_approval_status.status == 'approved' %}
|
||||
<i class="bx bx-check-circle"></i>
|
||||
{% else %}
|
||||
<i class="bx bx-time"></i>
|
||||
{% endif %}
|
||||
{{ item.current_step_approval_status.display }}
|
||||
</small>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
--
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -134,6 +134,52 @@ def request_list(request):
|
|||
except Exception:
|
||||
emergency_approved = False
|
||||
|
||||
# Get current step approval status
|
||||
current_step_approval_status = None
|
||||
if instance.current_step:
|
||||
try:
|
||||
current_step_instance = instance.step_instances.filter(step=instance.current_step).first()
|
||||
if current_step_instance:
|
||||
# Check if this step requires approvals
|
||||
required_roles = current_step_instance.required_roles()
|
||||
if required_roles:
|
||||
# Get approvals by role
|
||||
approvals_by_role = current_step_instance.approvals_by_role()
|
||||
|
||||
# Check for rejections
|
||||
latest_rejection = current_step_instance.get_latest_rejection()
|
||||
if latest_rejection and current_step_instance.status == 'rejected':
|
||||
role_name = latest_rejection.role.name if latest_rejection.role else 'نامشخص'
|
||||
current_step_approval_status = {
|
||||
'status': 'rejected',
|
||||
'role': role_name,
|
||||
'display': f'رد شده توسط {role_name}'
|
||||
}
|
||||
else:
|
||||
# Check approval status
|
||||
pending_roles = []
|
||||
approved_roles = []
|
||||
for role in required_roles:
|
||||
if approvals_by_role.get(role.id) == 'approved':
|
||||
approved_roles.append(role.name)
|
||||
else:
|
||||
pending_roles.append(role.name)
|
||||
|
||||
if pending_roles:
|
||||
current_step_approval_status = {
|
||||
'status': 'pending',
|
||||
'roles': pending_roles,
|
||||
'display': f'در انتظار تایید {" و ".join(pending_roles)}'
|
||||
}
|
||||
elif approved_roles and not pending_roles:
|
||||
current_step_approval_status = {
|
||||
'status': 'approved',
|
||||
'roles': approved_roles,
|
||||
'display': f'تایید شده توسط {" و ".join(approved_roles)}'
|
||||
}
|
||||
except Exception:
|
||||
current_step_approval_status = None
|
||||
|
||||
instances_with_progress.append({
|
||||
'instance': instance,
|
||||
'progress_percentage': round(progress_percentage),
|
||||
|
|
@ -142,6 +188,7 @@ def request_list(request):
|
|||
'installation_scheduled_date': installation_scheduled_date,
|
||||
'installation_overdue_days': overdue_days,
|
||||
'emergency_approved': emergency_approved,
|
||||
'current_step_approval_status': current_step_approval_status,
|
||||
})
|
||||
|
||||
# Summary stats for header cards
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue