[UPDT] PMS: Objective permissions changed
This commit is contained in:
@@ -82,7 +82,7 @@
|
|||||||
>
|
>
|
||||||
<ion-icon name="eye-outline"></ion-icon>
|
<ion-icon name="eye-outline"></ion-icon>
|
||||||
</a>
|
</a>
|
||||||
{% if request.user|is_reportingmanager or perms.pms.view_employeekeyresult %}
|
{% if request.user.employee_get in emp_objective.objective_id.managers.all or emp_objective.employee_id == request.user.employee_get or perms.pms.view_employeekeyresult %}
|
||||||
<a
|
<a
|
||||||
hx-get='{% url "objective-detailed-view-activity" emp_objective.id %}'
|
hx-get='{% url "objective-detailed-view-activity" emp_objective.id %}'
|
||||||
hx-target="#activityContainer"
|
hx-target="#activityContainer"
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
<ion-icon name="newspaper-outline"></ion-icon>
|
<ion-icon name="newspaper-outline"></ion-icon>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if request.user|is_reportingmanager or perms.pms.add_employeekeyresult %}
|
{% if request.user.employee_get in emp_objective.objective_id.managers.all or perms.pms.add_employeekeyresult %}
|
||||||
<button style="border-right:1px solid hsl(8, 77%, 56%)"
|
<button style="border-right:1px solid hsl(8, 77%, 56%)"
|
||||||
class="oh-btn oh-btn--secondary-outline float-end"
|
class="oh-btn oh-btn--secondary-outline float-end"
|
||||||
hx-get='{% url "employee-key-result-creation" emp_objective.id %}'
|
hx-get='{% url "employee-key-result-creation" emp_objective.id %}'
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
<ion-icon name="add-outline" class="m-0 md hydrated" role="img" aria-label="add outline"></ion-icon>
|
<ion-icon name="add-outline" class="m-0 md hydrated" role="img" aria-label="add outline"></ion-icon>
|
||||||
</button>
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if request.user|is_reportingmanager or perms.pms.add_employeeobjective %}
|
{% if request.user.employee_get in emp_objective.objective_id.managers.all or perms.pms.add_employeeobjective %}
|
||||||
|
|
||||||
<div class="" onclick="event.stopPropagation()">
|
<div class="" onclick="event.stopPropagation()">
|
||||||
<div class="oh-dropdown" x-data="{show: false}">
|
<div class="oh-dropdown" x-data="{show: false}">
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="oh-dropdown__menu oh-dropdown__menu--dark-border oh-dropdown__menu--right" x-show="show" @click.outside="show = false" style="display: none;">
|
<div class="oh-dropdown__menu oh-dropdown__menu--dark-border oh-dropdown__menu--right" x-show="show" @click.outside="show = false" style="display: none;">
|
||||||
<ul class="oh-dropdown__items">
|
<ul class="oh-dropdown__items">
|
||||||
{% if perms.pms.change_employeeobjective or request.user|is_reportingmanager %}
|
{% if perms.pms.change_employeeobjective or request.user.employee_get in emp_objective.objective_id.managers.all %}
|
||||||
<li class="oh-dropdown__item">
|
<li class="oh-dropdown__item">
|
||||||
<a
|
<a
|
||||||
class="fw-light"
|
class="fw-light"
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.pms.delete_employeeobjective or request.user|is_reportingmanager %}
|
{% if perms.pms.delete_employeeobjective or request.user.employee_get in emp_objective.objective_id.managers.all %}
|
||||||
<li class="oh-dropdown__item">
|
<li class="oh-dropdown__item">
|
||||||
<a
|
<a
|
||||||
class="fw-light"
|
class="fw-light"
|
||||||
|
|||||||
182
pms/views.py
182
pms/views.py
@@ -753,38 +753,46 @@ def objective_detailed_view_activity(request, id):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
objective = EmployeeObjective.objects.get(id=id)
|
objective = EmployeeObjective.objects.get(id=id)
|
||||||
key_result_history = objective_history(id)
|
if (
|
||||||
history = objective.tracking()
|
request.user.employee_get == objective.employee_id
|
||||||
comments = Comment.objects.filter(employee_objective_id=objective)
|
or request.user.employee_get in objective.objective_id.managers.all()
|
||||||
activity_list = []
|
or request.user.has_perm("pms.view_comment")
|
||||||
for hist in history:
|
):
|
||||||
hist["date"] = hist["pair"][0].history_date
|
key_result_history = objective_history(id)
|
||||||
activity_list.append(hist)
|
history = objective.tracking()
|
||||||
for com in comments:
|
comments = Comment.objects.filter(employee_objective_id=objective)
|
||||||
comment = {
|
activity_list = []
|
||||||
"type": "comment",
|
for hist in history:
|
||||||
"comment": com,
|
hist["date"] = hist["pair"][0].history_date
|
||||||
"date": com.created_at,
|
activity_list.append(hist)
|
||||||
|
for com in comments:
|
||||||
|
comment = {
|
||||||
|
"type": "comment",
|
||||||
|
"comment": com,
|
||||||
|
"date": com.created_at,
|
||||||
|
}
|
||||||
|
activity_list.append(comment)
|
||||||
|
|
||||||
|
for key in key_result_history:
|
||||||
|
key_result = {
|
||||||
|
"type": "key_result",
|
||||||
|
"key_result": key,
|
||||||
|
"date": key["changed_date"],
|
||||||
|
}
|
||||||
|
activity_list.append(key_result)
|
||||||
|
|
||||||
|
activity_list = sorted(activity_list, key=lambda x: x["date"], reverse=True)
|
||||||
|
|
||||||
|
context = {
|
||||||
|
"objective": objective,
|
||||||
|
"historys": history,
|
||||||
|
"comments": comments,
|
||||||
|
"activity_list": activity_list,
|
||||||
}
|
}
|
||||||
activity_list.append(comment)
|
return render(request, "okr/objective_detailed_view_activity.html", context)
|
||||||
|
else:
|
||||||
for key in key_result_history:
|
messages.info(request, _("You dont have permission."))
|
||||||
key_result = {
|
return HttpResponse("<script>window.location.reload();</script>")
|
||||||
"type": "key_result",
|
|
||||||
"key_result": key,
|
|
||||||
"date": key["changed_date"],
|
|
||||||
}
|
|
||||||
activity_list.append(key_result)
|
|
||||||
|
|
||||||
activity_list = sorted(activity_list, key=lambda x: x["date"], reverse=True)
|
|
||||||
|
|
||||||
context = {
|
|
||||||
"objective": objective,
|
|
||||||
"historys": history,
|
|
||||||
"comments": comments,
|
|
||||||
"activity_list": activity_list,
|
|
||||||
}
|
|
||||||
return render(request, "okr/objective_detailed_view_activity.html", context)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -1069,7 +1077,6 @@ def create_employee_objective(request):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@hx_request_required
|
@hx_request_required
|
||||||
@manager_can_enter(perm="pms.change_employeeobjective")
|
|
||||||
def update_employee_objective(request, emp_obj_id):
|
def update_employee_objective(request, emp_obj_id):
|
||||||
"""
|
"""
|
||||||
This function is used to update the employee objective
|
This function is used to update the employee objective
|
||||||
@@ -1079,16 +1086,23 @@ def update_employee_objective(request, emp_obj_id):
|
|||||||
redirect to form of employee objective
|
redirect to form of employee objective
|
||||||
"""
|
"""
|
||||||
emp_objective = EmployeeObjective.objects.get(id=emp_obj_id)
|
emp_objective = EmployeeObjective.objects.get(id=emp_obj_id)
|
||||||
form = EmployeeObjectiveForm(instance=emp_objective)
|
if (
|
||||||
if request.method == "POST":
|
request.user.employee_get == emp_objective.employee_id
|
||||||
form = EmployeeObjectiveForm(request.POST, instance=emp_objective)
|
or request.user.employee_get in emp_objective.objective_id.managers.all()
|
||||||
if form.is_valid():
|
):
|
||||||
emp_obj = form.save(commit=False)
|
form = EmployeeObjectiveForm(instance=emp_objective)
|
||||||
emp_obj.save()
|
if request.method == "POST":
|
||||||
messages.success(request, _("Employee objective Updated successfully"))
|
form = EmployeeObjectiveForm(request.POST, instance=emp_objective)
|
||||||
return HttpResponse("<script>window.location.reload()</script>")
|
if form.is_valid():
|
||||||
context = {"form": form, "k_form": KRForm()}
|
emp_obj = form.save(commit=False)
|
||||||
return render(request, "okr/emp_objective_form.html", context=context)
|
emp_obj.save()
|
||||||
|
messages.success(request, _("Employee objective Updated successfully"))
|
||||||
|
return HttpResponse("<script>window.location.reload()</script>")
|
||||||
|
context = {"form": form, "k_form": KRForm()}
|
||||||
|
return render(request, "okr/emp_objective_form.html", context=context)
|
||||||
|
else:
|
||||||
|
messages.info(request, _("You don't have permission."))
|
||||||
|
return HttpResponse("<script>window.location.reload()</script>")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -3069,7 +3083,6 @@ def view_single_anonymous_feedback(request, obj_id):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@hx_request_required
|
@hx_request_required
|
||||||
@manager_can_enter(perm="pms.add_employeekeyresult")
|
|
||||||
def employee_keyresult_creation(request, emp_obj_id):
|
def employee_keyresult_creation(request, emp_obj_id):
|
||||||
"""
|
"""
|
||||||
This view is for employee keyresult creation , and returns a employee keyresult form.
|
This view is for employee keyresult creation , and returns a employee keyresult form.
|
||||||
@@ -3080,47 +3093,54 @@ def employee_keyresult_creation(request, emp_obj_id):
|
|||||||
employee keyresult created, and returnes to employee objective details view
|
employee keyresult created, and returnes to employee objective details view
|
||||||
"""
|
"""
|
||||||
emp_objective = EmployeeObjective.objects.get(id=emp_obj_id)
|
emp_objective = EmployeeObjective.objects.get(id=emp_obj_id)
|
||||||
employee = emp_objective.employee_id
|
if (
|
||||||
data = request.GET.copy()
|
request.user.employee_get in emp_objective.objective_id.managers.all()
|
||||||
# Convert QueryDict to a regular dictionary
|
or request.user.has_perm("pms.add_employeekeyresult")
|
||||||
cleaned_data = {
|
):
|
||||||
key: value if len(value) > 1 else value[0] for key, value in data.lists()
|
employee = emp_objective.employee_id
|
||||||
}
|
data = request.GET.copy()
|
||||||
if not cleaned_data.get("employee_objective_id"):
|
# Convert QueryDict to a regular dictionary
|
||||||
cleaned_data["employee_objective_id"] = emp_obj_id
|
cleaned_data = {
|
||||||
emp_key_result = EmployeeKeyResultForm(initial=cleaned_data)
|
key: value if len(value) > 1 else value[0] for key, value in data.lists()
|
||||||
if request.method == "POST":
|
}
|
||||||
emp_key_result = EmployeeKeyResultForm(request.POST)
|
if not cleaned_data.get("employee_objective_id"):
|
||||||
if emp_key_result.is_valid():
|
cleaned_data["employee_objective_id"] = emp_obj_id
|
||||||
emp_key_result.save()
|
emp_key_result = EmployeeKeyResultForm(initial=cleaned_data)
|
||||||
emp_objective.update_objective_progress()
|
if request.method == "POST":
|
||||||
key_result = emp_key_result.cleaned_data["key_result_id"]
|
emp_key_result = EmployeeKeyResultForm(request.POST)
|
||||||
|
if emp_key_result.is_valid():
|
||||||
|
emp_key_result.save()
|
||||||
|
emp_objective.update_objective_progress()
|
||||||
|
key_result = emp_key_result.cleaned_data["key_result_id"]
|
||||||
|
|
||||||
emp_objective.key_result_id.add(key_result)
|
emp_objective.key_result_id.add(key_result)
|
||||||
# assignees = emp_key_result.cleaned_data['assignees']
|
# assignees = emp_key_result.cleaned_data['assignees']
|
||||||
# start_date =emp_key_result.cleaned_data['start_date']
|
# start_date =emp_key_result.cleaned_data['start_date']
|
||||||
|
|
||||||
messages.success(request, _("Key result assigned sucessfully."))
|
messages.success(request, _("Key result assigned sucessfully."))
|
||||||
|
|
||||||
notify.send(
|
notify.send(
|
||||||
request.user.employee_get,
|
request.user.employee_get,
|
||||||
recipient=employee.employee_user_id,
|
recipient=employee.employee_user_id,
|
||||||
verb="You got an Key Result!.",
|
verb="You got an Key Result!.",
|
||||||
verb_ar="لقد حصلت على نتيجة رئيسية!",
|
verb_ar="لقد حصلت على نتيجة رئيسية!",
|
||||||
verb_de="Du hast ein Schlüsselergebnis erreicht!",
|
verb_de="Du hast ein Schlüsselergebnis erreicht!",
|
||||||
verb_es="¡Has conseguido un Resultado Clave!",
|
verb_es="¡Has conseguido un Resultado Clave!",
|
||||||
verb_fr="Vous avez obtenu un Résultat Clé!",
|
verb_fr="Vous avez obtenu un Résultat Clé!",
|
||||||
redirect=reverse(
|
redirect=reverse(
|
||||||
"objective-detailed-view",
|
"objective-detailed-view",
|
||||||
kwargs={"obj_id": emp_objective.objective_id.id},
|
kwargs={"obj_id": emp_objective.objective_id.id},
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
return HttpResponse("<script>window.location.reload()</script>")
|
return HttpResponse("<script>window.location.reload()</script>")
|
||||||
context = {
|
context = {
|
||||||
"form": emp_key_result,
|
"form": emp_key_result,
|
||||||
"emp_objective": emp_objective,
|
"emp_objective": emp_objective,
|
||||||
}
|
}
|
||||||
return render(request, "okr/key_result/kr_form.html", context=context)
|
return render(request, "okr/key_result/kr_form.html", context=context)
|
||||||
|
else:
|
||||||
|
messages.info(request, _("You are don't have permissions."))
|
||||||
|
return HttpResponse("<script>window.location.reload()</script>")
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
Reference in New Issue
Block a user