[UPDT] HORILLA BREADCRUMBS: Replaced user based breadcrumbs to session based breadcrumbs
This commit is contained in:
@@ -18,6 +18,7 @@ try:
|
||||
horilla_mail.save()
|
||||
|
||||
horilla_mail_templates = HorillaMailTemplate.objects.all()
|
||||
RecruitmentMailTemplate.objects.all().delete()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -41,6 +42,7 @@ try:
|
||||
horilla.save()
|
||||
|
||||
base_leaves = BaseHoliday.objects.all()
|
||||
LeaveHoliday.objects.all().delete()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -85,6 +87,7 @@ try:
|
||||
horilla.deduct_from_carry_forward = penalty.deduct_from_carry_forward
|
||||
horilla.save()
|
||||
penalty_accounts = PenaltyAccounts.objects.all()
|
||||
PenaltyAccount.objects.all().delete()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -106,6 +109,7 @@ try:
|
||||
horilla.save()
|
||||
|
||||
base_leaves = BaseCompanyLeave.objects.all()
|
||||
CompanyLeave.objects.all().delete()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -140,5 +144,6 @@ try:
|
||||
new_work_record.save()
|
||||
|
||||
new_work_records = WorkRecords.objects.all()
|
||||
WorkRecord.objects.all().delete()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import contextlib
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
|
||||
@@ -44,3 +45,29 @@ def dynamic_attr(obj, attribute_path):
|
||||
if obj is None:
|
||||
break
|
||||
return obj
|
||||
|
||||
|
||||
def horilla_users_with_perms(permissions):
|
||||
"""
|
||||
Filters users who have any of the specified permissions or are superusers.
|
||||
|
||||
:param permissions: A list of permission strings in the format 'app_label.codename'
|
||||
or a single permission string.
|
||||
:return: A queryset of users who have any of the specified permissions or are superusers.
|
||||
"""
|
||||
# Ensure permissions is a list even if a single permission string is provided
|
||||
if isinstance(permissions, str):
|
||||
permissions = [permissions]
|
||||
|
||||
# Start with a queryset that includes all superusers
|
||||
users_with_permissions = User.objects.filter(is_superuser=True)
|
||||
|
||||
# Filter users based on the permissions list
|
||||
for perm in permissions:
|
||||
app_label, codename = perm.split(".")
|
||||
users_with_permissions |= User.objects.filter(
|
||||
user_permissions__codename=codename,
|
||||
user_permissions__content_type__app_label=app_label,
|
||||
)
|
||||
|
||||
return users_with_permissions.distinct()
|
||||
|
||||
@@ -132,11 +132,17 @@ sidebar_urls = [
|
||||
"view-time-sheet",
|
||||
"templates",
|
||||
"sidebar.html",
|
||||
"objective-detailed-view",
|
||||
"mail-automations",
|
||||
"faq-view",
|
||||
]
|
||||
remove_urls = [
|
||||
"feedback-detailed-view",
|
||||
"question-template-detailed-view",
|
||||
"employee-view-new",
|
||||
"objective-detailed-view",
|
||||
"ticket-detail",
|
||||
"faq-view",
|
||||
]
|
||||
|
||||
user_breadcrumbs = {}
|
||||
@@ -144,15 +150,15 @@ user_breadcrumbs = {}
|
||||
|
||||
def breadcrumbs(request):
|
||||
base_url = request.build_absolute_uri("/")
|
||||
user_id = str(request.user)
|
||||
|
||||
if user_id not in user_breadcrumbs:
|
||||
user_breadcrumbs[user_id] = [
|
||||
# Initialize breadcrumbs in the session if not already present
|
||||
if "breadcrumbs" not in request.session:
|
||||
request.session["breadcrumbs"] = [
|
||||
{"url": base_url, "name": "Horilla", "found": True}
|
||||
]
|
||||
|
||||
try:
|
||||
user_breadcrumb = user_breadcrumbs[user_id]
|
||||
breadcrumbs = request.session["breadcrumbs"]
|
||||
|
||||
qs = request.META.get("QUERY_STRING", "")
|
||||
pairs = qs.split("&")
|
||||
@@ -160,7 +166,7 @@ def breadcrumbs(request):
|
||||
filtered_query_string = "&".join(filtered_pairs)
|
||||
emp_query_string = None
|
||||
|
||||
for item in user_breadcrumb:
|
||||
for item in breadcrumbs:
|
||||
if item["name"] in ["employee-view", "candidate-view"]:
|
||||
items = item["url"].split("?", 1)
|
||||
if len(items) > 1:
|
||||
@@ -210,8 +216,8 @@ def breadcrumbs(request):
|
||||
]
|
||||
|
||||
if len(parts) == 0:
|
||||
user_breadcrumbs[user_id].clear()
|
||||
user_breadcrumb.append({"url": base_url, "name": "Horilla", "found": True})
|
||||
request.session["breadcrumbs"].clear()
|
||||
breadcrumbs.append({"url": base_url, "name": "Horilla", "found": True})
|
||||
|
||||
if len(parts) > 1:
|
||||
last_path = parts[-1]
|
||||
@@ -221,10 +227,9 @@ def breadcrumbs(request):
|
||||
or parts[-2] == "candidate-view"
|
||||
or parts[-2] == "view-payslip"
|
||||
):
|
||||
breadcrumbs = user_breadcrumbs[user_id]
|
||||
first_path = breadcrumbs[0]
|
||||
user_breadcrumbs[user_id].clear()
|
||||
user_breadcrumbs[user_id].append(first_path)
|
||||
request.session["breadcrumbs"].clear()
|
||||
request.session["breadcrumbs"].append(first_path)
|
||||
for i, item in enumerate(parts):
|
||||
path = path + item + "/"
|
||||
parsed_url = urlparse(path)
|
||||
@@ -232,7 +237,7 @@ def breadcrumbs(request):
|
||||
try:
|
||||
resolver_match = resolve(check_path)
|
||||
found = True
|
||||
except Resolver404 as e:
|
||||
except Resolver404:
|
||||
found = False
|
||||
|
||||
new_dict = {"url": path, "name": item, "found": found}
|
||||
@@ -245,15 +250,15 @@ def breadcrumbs(request):
|
||||
|
||||
if model_value:
|
||||
try:
|
||||
object = model_value.objects.get(id=item)
|
||||
new_dict["name"] = str(object)
|
||||
obj = model_value.objects.get(id=item) # completed
|
||||
new_dict["name"] = str(obj)
|
||||
except:
|
||||
pass
|
||||
|
||||
key = "HTTP_HX_REQUEST"
|
||||
names = [d["name"] for d in user_breadcrumb]
|
||||
names = [d["name"] for d in breadcrumbs]
|
||||
if (
|
||||
new_dict not in user_breadcrumb
|
||||
new_dict not in breadcrumbs
|
||||
and new_dict["name"] not in remove_urls + names
|
||||
and key not in request.META.keys()
|
||||
and not new_dict["name"].isdigit()
|
||||
@@ -261,10 +266,10 @@ def breadcrumbs(request):
|
||||
if new_dict["name"] in ["employee-view", "candidate-view"]:
|
||||
new_dict["url"] = f'{new_dict["url"]}?{emp_query_string}'
|
||||
|
||||
user_breadcrumb.append(new_dict)
|
||||
breadcrumbs.append(new_dict)
|
||||
|
||||
try:
|
||||
prev_url = user_breadcrumb[-1]
|
||||
prev_url = breadcrumbs[-1]
|
||||
prev_url["url"] = prev_url["url"].split("?")[0]
|
||||
if filtered_query_string:
|
||||
prev_url["url"] = f'{prev_url["url"]}?{filtered_query_string}'
|
||||
@@ -273,14 +278,13 @@ def breadcrumbs(request):
|
||||
except:
|
||||
pass
|
||||
|
||||
user_breadcrumbs[user_id] = user_breadcrumb
|
||||
request.session["breadcrumbs"] = breadcrumbs
|
||||
|
||||
except Exception as e:
|
||||
user_breadcrumb[user_id].clear()
|
||||
user_breadcrumbs[user_id] = [
|
||||
request.session["breadcrumbs"] = [
|
||||
{"url": base_url, "name": "Horilla", "found": True}
|
||||
]
|
||||
return {"breadcrumbs": user_breadcrumbs[user_id]}
|
||||
return {"breadcrumbs": request.session["breadcrumbs"]}
|
||||
|
||||
|
||||
urlpatterns.append(
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<button id="reloadMessagesButton" hx-get="{% url 'reload-messages' %}" hidden hx-target="#reloadMessages"></button>
|
||||
<button id="reloadMessagesButton" hx-get="{% url 'reload-messages' %}" hx-swap="afterend" hidden hx-target="#reloadMessages"></button>
|
||||
|
||||
<div class="oh-wrapper-main" :class="!sidebarOpen ? 'oh-wrapper-main--closed' : ''" x-data="{sidebarOpen: true}"
|
||||
@load.window="
|
||||
@@ -148,7 +148,6 @@
|
||||
</a>
|
||||
<!-- <span class="oh-navbar__page-title">Attendances</span> -->
|
||||
{% if breadcrumbs %}
|
||||
{% comment %} {{breadcrumbs}} {% endcomment %}
|
||||
<ul class="oh-navbar__breadcrumb">
|
||||
{% for breadcrumb in breadcrumbs %}
|
||||
{% if forloop.last %}
|
||||
@@ -593,12 +592,12 @@
|
||||
if (count) {
|
||||
targetElement.html(count)
|
||||
targetElement.parent().removeClass("d-none");
|
||||
$(`#unselect_${id}, #export_${id}`).removeClass("d-none");
|
||||
$(`#unselect_${id}, #export_${id}, #bulk_udate_${id}`).removeClass("d-none");
|
||||
|
||||
|
||||
}else{
|
||||
targetElement.parent().addClass("d-none")
|
||||
$(`#unselect_${id}, #export_${id}`).addClass("d-none")
|
||||
$(`#unselect_${id}, #export_${id}, #bulk_udate_${id}`).addClass("d-none")
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user