From 91ef0da13be4f5feebea256b7ad6eb791405cf8f Mon Sep 17 00:00:00 2001 From: gitea Date: Wed, 26 Feb 2025 16:01:58 +0000 Subject: [PATCH] update --- inventory/middleware.py | 10 +++- .../migrations/0051_merge_20250226_1654.py | 14 +++++ inventory/models.py | 6 +- inventory/urls.py | 5 ++ inventory/utils.py | 13 ++-- inventory/views.py | 19 ++++-- templates/crm/leads/lead_detail.html | 2 +- templates/crm/leads/lead_list.html | 59 +++++++++++++------ templates/header.html | 21 +++---- 9 files changed, 103 insertions(+), 46 deletions(-) create mode 100644 inventory/migrations/0051_merge_20250226_1654.py diff --git a/inventory/middleware.py b/inventory/middleware.py index be51159c..e0ce85d7 100644 --- a/inventory/middleware.py +++ b/inventory/middleware.py @@ -51,9 +51,13 @@ class InjectDealerMiddleware: self.get_response = get_response def __call__(self, request): - try: - dealer = get_user_type(request) - request.user.dealer = dealer + try: + request.is_dealer = False + request.is_staff = False + if hasattr(request.user, "dealer"): + request.is_dealer = True + if hasattr(request.user, "staffmember"): + request.is_staff = True except Exception as e: pass response = self.get_response(request) diff --git a/inventory/migrations/0051_merge_20250226_1654.py b/inventory/migrations/0051_merge_20250226_1654.py new file mode 100644 index 00000000..53d97437 --- /dev/null +++ b/inventory/migrations/0051_merge_20250226_1654.py @@ -0,0 +1,14 @@ +# Generated by Django 4.2.17 on 2025-02-26 13:54 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0049_alter_lead_status_alter_leadstatushistory_new_status_and_more'), + ('inventory', '0050_remove_carreservation_reserved_for'), + ] + + operations = [ + ] diff --git a/inventory/models.py b/inventory/models.py index 18ffe632..4735de77 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -955,11 +955,11 @@ class Staff(models.Model, LocalizedNameMixin): objects = StaffUserManager() @property - def get_user(self): + def user(self): return self.staff_member.user @property - def get_groups(self): + def groups(self): return [x.customgroup for x in self.user.groups.all()] @@ -1266,6 +1266,8 @@ class Lead(models.Model): def get_latest_schedule(self): return self.schedules.order_by('-scheduled_at').first() + def get_latest_schedules(self): + return self.schedules.filter(scheduled_at__gt=now()).exclude(status='Canceled').order_by('-scheduled_at')[:5] class Schedule(models.Model): PURPOSE_CHOICES = [ diff --git a/inventory/urls.py b/inventory/urls.py index 81b19755..38802a90 100644 --- a/inventory/urls.py +++ b/inventory/urls.py @@ -122,6 +122,11 @@ urlpatterns = [ views.schedule_lead, name="schedule_lead", ), + path( + "crm/leads/schedule//cancel/", + views.schedule_cancel, + name="schedule_cancel", + ), path( "crm/leads//transfer/", views.lead_transfer, diff --git a/inventory/utils.py b/inventory/utils.py index 7f7cbe54..19286b77 100644 --- a/inventory/utils.py +++ b/inventory/utils.py @@ -95,13 +95,12 @@ def send_email(from_, to_, subject, message): send_mail(subject, message, from_email, recipient_list) -def get_user_type(request): - dealer = "" - if hasattr(request.user, "dealer"): - dealer = request.user.dealer - elif hasattr(request.user, "staffmember"): - dealer = request.user.staffmember.staff.dealer - return dealer +def get_user_type(request): + if request.is_dealer: + return request.user.dealer + elif request.is_staff: + return request.user.staffmember.staff.dealer + return None def get_dealer_from_instance(instance): diff --git a/inventory/views.py b/inventory/views.py index db6b157f..6d2de5b7 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -2632,12 +2632,11 @@ class LeadListView(ListView): def get_queryset(self): dealer = get_user_type(self.request) - print(dealer) + qs = models.Lead.objects.filter(dealer=dealer) + if self.request.is_dealer: + return qs staffmember = getattr(self.request.user, "staffmember", None) - if staffmember: - qs = models.Lead.objects.filter(dealer=dealer) - if staffmember.staff.staff_type == models.StaffTypes.MANAGER: - return qs + if staffmember and getattr(staffmember, "staff", None): return qs.filter(staff=staffmember.staff) return models.Lead.objects.none() @@ -3841,4 +3840,12 @@ def DealerSettingsView(request,pk): form.fields['bill_cash_account'].queryset = dealer.entity.get_all_accounts().filter(role=roles.ASSET_CA_CASH) form.fields['bill_prepaid_account'].queryset = dealer.entity.get_all_accounts().filter(role=roles.ASSET_CA_PREPAID) form.fields['bill_unearned_account'].queryset = dealer.entity.get_all_accounts().filter(role=roles.LIABILITY_CL_ACC_PAYABLE) - return render(request, 'account/user_settings.html', {'form': form}) \ No newline at end of file + return render(request, 'account/user_settings.html', {'form': form}) + +def schedule_cancel(request,pk): + schedule = get_object_or_404(models.Schedule, pk=pk) + schedule.status = "Canceled" + schedule.save() + response = HttpResponse() + response.status_code = 200 + return response \ No newline at end of file diff --git a/templates/crm/leads/lead_detail.html b/templates/crm/leads/lead_detail.html index 3437c00b..81f1d43d 100644 --- a/templates/crm/leads/lead_detail.html +++ b/templates/crm/leads/lead_detail.html @@ -135,7 +135,7 @@