This commit is contained in:
Faheedkhan 2025-07-06 13:45:48 +03:00
parent 85efc27bf1
commit 4e97f0523b
3 changed files with 31 additions and 26 deletions

View File

@ -2550,6 +2550,15 @@ class CustomGroup(models.Model):
pass
def set_default_permissions(self):
Permission.objects.get_or_create(name="Can approve estimate",codename="can_approve_estimatemodel",content_type=ContentType.objects.get_for_model(EstimateModel))
Permission.objects.get_or_create(name="Can approve bill",codename="can_approve_billmodel",content_type=ContentType.objects.get_for_model(BillModel))
Permission.objects.get_or_create(name="Can view inventory",codename="can_view_inventory",content_type=ContentType.objects.get_for_model(Car))
Permission.objects.get_or_create(name="Can view sales",codename="can_view_sales",content_type=ContentType.objects.get_for_model(EstimateModel))
Permission.objects.get_or_create(name="Can view crm",codename="can_view_crm",content_type=ContentType.objects.get_for_model(Lead))
Permission.objects.get_or_create(name="Can view financials",codename="can_view_financials",content_type=ContentType.objects.get_for_model(AccountModel))
Permission.objects.get_or_create(name="Can view reports",codename="can_view_reports",content_type=ContentType.objects.get_for_model(LedgerModel))
self.clear_permissions()
######################################
######################################
@ -2599,6 +2608,8 @@ class CustomGroup(models.Model):
"vendormodel",
"journalentrymodel",
"purchaseordermodel",
"ledgermodel",
"transactionmodel"
],
other_perms=["can_approve_estimatemodel","can_approve_billmodel","can_view_inventory","can_view_sales","can_view_crm","can_view_financials","can_view_reports"],
@ -2689,6 +2700,7 @@ class CustomGroup(models.Model):
"view_carcolors",
"view_cartransfer",
"view_saleorder",
],
)
self.set_permissions(
@ -2706,7 +2718,9 @@ class CustomGroup(models.Model):
"estimatemodel",
"customermodel",
"vendormodel",
"TransactionModel"
"ledgermodel",
"transactionmodel"
],
other_perms=["view_customermodel", "view_estimatemodel","can_view_inventory","can_view_sales","can_view_crm","can_view_financials","can_view_reports"],
)
@ -2956,22 +2970,4 @@ class ExtraInfo(models.Model):
verbose_name_plural = "Extra Info"
def __str__(self):
return f"ExtraInfo for {self.content_object} ({self.content_type})"
@classmethod
def get_sale_orders(cls, staff=None,is_dealer=False):
if not staff and not is_dealer:
return []
if is_dealer:
qs = ExtraInfo.objects.filter(
content_type=ContentType.objects.get_for_model(EstimateModel),
related_content_type=ContentType.objects.get_for_model(Staff),
)
else:
qs = ExtraInfo.objects.filter(
content_type=ContentType.objects.get_for_model(EstimateModel),
related_content_type=ContentType.objects.get_for_model(Staff),
related_object_id=staff.pk,
)
return [x.content_object.sale_orders.first for x in qs]
return f"ExtraInfo for {self.content_object} ({self.content_type})"

View File

@ -8638,7 +8638,7 @@ class LedgerModelListView(LoginRequiredMixin,PermissionRequiredMixin, ListView,
show_visible = False
allow_empty = True
paginate_by = 30
permission_required = "ledger.view_ledgermodel"
permission_required = "django_ledger.view_ledgermodel"
def get_queryset(self):
qs = super().get_queryset()
@ -8683,7 +8683,7 @@ class LedgerModelDetailView(LoginRequiredMixin, PermissionRequiredMixin,DetailVi
model = LedgerModel
context_object_name = "ledger"
template_name = "ledger/ledger/ledger_detail.html"
permission_required = "ledger.view_ledgermodel"
permission_required = "django_ledger.view_ledgermodel"
class LedgerModelCreateView(LedgerModelCreateViewBase):
@ -8712,9 +8712,8 @@ class LedgerModelCreateView(LedgerModelCreateViewBase):
)
def form_valid(self, form):
dealer = get_user_type(self.request)
instance = form.save(commit=False)
instance.entity = dealer.entity
dealer = get_user_type(self.request)
form.field["entity"] = dealer.entity
return super().form_valid(form)
def get_success_url(self):
@ -8808,7 +8807,7 @@ class JournalEntryListView(LoginRequiredMixin,PermissionRequiredMixin, ListView)
template_name = "ledger/journal_entry/journal_entry_list.html"
permission_required = ["django_ledger.view_journalentrymodel"]
ordering = ["-timestamp"]
permission_required = "ledger.view_ledger"
permission_required = "django_ledger.view_ledger"
def get_queryset(self):
qs = super().get_queryset()

View File

@ -10,7 +10,9 @@
<div class="d-flex justify-content-between mb-2">
<h3 class="">{% trans "Ledger" %}</h3>
{% if perms.django_ledger.add_ledgermodel%}
<a href="{% url 'ledger_create' request.dealer.slug %}" class="btn btn-md btn-phoenix-primary"><i class="fa fa-plus me-2"></i>{% trans 'Create Ledger' %}</a>
{% endif %}
</div>
<div class="table-responsive px-1 scrollbar mt-3">
<table class="table align-items-center table-flush">
@ -32,14 +34,19 @@
<tr class="hover-actions-trigger btn-reveal-trigger position-static">
<td class="align-middle product white-space-nowrap px-1">
{% if ledger.invoicemodel %}
{% if perms.django_ledger.view_invoicemodel%}
<a href="{% url 'invoice_detail' request.dealer.slug ledger.invoicemodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
{% endif %}
{% elif ledger.billmodel %}
{% if perms.django_ledger.view_billmodel %}
<a href="{% url 'bill-detail' request.dealer.slug request.dealer.entity.slug ledger.billmodel.pk %}">{{ ledger.get_wrapped_model_instance }}</a>
{% endif %}
{% else %}
<a href="#">{{ ledger.name }}</a>
{% endif %}
</td>
<td class="align-middle product white-space-nowrap">
{% if perms.django_ledger.view_journalentrymodel %}
<a class="btn btn-sm btn-phoenix-primary"
href="{% url 'journalentry_list' request.dealer.slug ledger.pk %}">
<i class="fa-solid fa-right-left"></i>
@ -48,6 +55,7 @@
<span>{{ _('Journal Entries') }}</span>
</span>
</a>
{% endif %}
</td>
<td class="align-middle product white-space-nowrap">
{{ ledger.created |date }}
@ -79,6 +87,7 @@
<span class="fas fa-ellipsis-h fs-10"></span>
</button>
<div class="dropdown-menu dropdown-menu-end py-2">
{% if perms.django_ledger.change_ledgermodel%}
{% if ledger.can_lock %}
<a href="{% url 'ledger-action-lock' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
class="dropdown-item has-text-info has-text-weight-bold">{% trans 'Lock' %}</a>
@ -109,6 +118,7 @@
<a href="{% url 'ledger-delete' dealer_slug=request.dealer.slug entity_slug=entity_slug ledger_pk=ledger.uuid %}"
class="dropdown-item has-text-danger has-text-weight-bold text-danger">{% trans 'Delete' %}</a>
{% endif %}
{% endif %}
</div>
</div>
</td>