[UPDT] PMS: Change progress of key result and objective wrt current value

This commit is contained in:
Horilla
2023-11-27 22:04:14 +05:30
parent f0d97f1589
commit 3291b06ead
5 changed files with 28 additions and 48 deletions

View File

@@ -135,6 +135,7 @@ class EmployeeKeyResult(models.Model):
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
history = HorillaAuditLog(bases=[HorillaAuditInfo])
progress_percentage = models.IntegerField(null=True, blank=True, default=0)
objects = models.Manager()
def __str__(self):
@@ -143,6 +144,7 @@ class EmployeeKeyResult(models.Model):
def save(self, *args, **kwargs):
if self.employee_id is None:
self.employee_id = self.employee_objective_id.employee_id
self.progress_percentage = (int(self.current_value)/int(self.target_value))*100
super().save(*args, **kwargs)

View File

@@ -11,20 +11,6 @@
{% block content %}
{% if messages %}
<ul class="messages">
{% for message in messages %}
<div class="oh-wrapper">
<div class="oh-alert-container">
<div class="oh-alert oh-alert--animated {{message.tags}}">
{{message}}
</div>
</div>
</div>
{% endfor %}
</ul>
{% endif %}
<main :class="sidebarOpen ? 'oh-main__sidebar-visible' : ''">

View File

@@ -134,23 +134,31 @@
<div class="oh-list-card">
<div class="oh-list-card__header d-flex align-content-center justify-content-between mb-2">
<span class="oh-list-card__title">{{employee_key_result.key_result}}</span>
<div class="d-flex align-items-center justify-content-between mb-2">
<small class="oh-text--light">
<label class="fw-bold oh-text--dark">{% trans "Due" %}:</label>
{{ current_date|timesince:employee_key_result.end_date }}
</small>
<!-- checking userlevel -->
{% if perms.pms.change_employeekeyresult or request.user|filtersubordinates %}
<button
class="oh-btn oh-btn--x-small d-flex align-items-center ms-2 "
data-toggle="oh-modal-toggle"
hx-get="{% url 'key-result-update' id=employee_key_result.id %}"
hx-target="#ObjectiveModalFormTarget"
data-target="#objectiveModalpopup" >
<ion-icon name="create-outline" class="me-1" ></ion-icon>
{% trans "Edit" %}
</button>
{% endif %}
<div class="col-sm-12 col-md-12 col-lg-3">
<div class="d-flex align-items-center justify-content-between mb-2">
<small class="oh-text--light">
<label class="fw-bold oh-text--dark">{% trans "Due" %}:</label>
{{ current_date|timesince:employee_key_result.end_date }}
</small>
<!-- checking userlevel -->
{% if perms.pms.change_employeekeyresult or request.user|filtersubordinates %}
<button
class="oh-btn oh-btn--x-small d-flex align-items-center ms-2 "
data-toggle="oh-modal-toggle"
hx-get="{% url 'key-result-update' id=employee_key_result.id %}"
hx-target="#ObjectiveModalFormTarget"
data-target="#objectiveModalpopup" >
<ion-icon name="create-outline" class="me-1" ></ion-icon>
{% trans "Edit" %}
</button>
{% endif %}
</div>
<div class="oh-progress-container">
<div class="oh-progress" role="progressbar">
<div class="oh-progress__bar oh-progress__bar--secondary" style="width: calc({% if employee_key_result.progress_percentage > 100 %} 100% {% else %} {{ employee_key_result.progress_percentage }}% {% endif %})"></div>
</div>
<span class="oh-progress-container__percentage" >{{employee_key_result.progress_percentage}}%</span>
</div>
</div>
</div>
<div class="oh-list-card__body">

View File

@@ -1,16 +1,6 @@
{% extends 'index.html' %} {% load static i18n %} {% load i18n %} {% load widget_tweaks %} {% load mathfilters %} {% load basefilters %} {% block styles %}
<link rel="stylesheet" href="{% static 'css/pms.css' %}" />
{% endblock styles %} {% block content %}
{% if messages %}
<!-- form errors -->
<div class="oh-wrapper">
<div class="oh-alert-container">
{% for message in messages %}
<div class="oh-alert oh-alert--animated {{message.tags}}">{{message}}</div>
{% endfor %}
</div>
</div>
{% endif %}
<main :class="sidebarOpen ? 'oh-main__sidebar-visible' : ''">
<section class="oh-wrapper oh-main__topbar" x-data="{searchShow: false}">

View File

@@ -419,16 +419,10 @@ def objective_detailed_view(request, emp_obj_id, **kwargs):
key_results = EmployeeKeyResult.objects.filter(employee_objective_id=objective)
comments = Comment.objects.filter(employee_objective_id=objective)
key_results_all = objective.emp_obj_id.all()
# progress of objective calculation
completed_key_result = [
obj.current_value
for obj in key_results_all
if obj.current_value == obj.target_value
]
total_kr = key_results_all.count()
try:
progress = int((len(completed_key_result) / total_kr) * 100)
progress = round(sum(kr.progress_percentage for kr in key_results_all) / (total_kr), 2)
except (ZeroDivisionError, TypeError):
progress = 0