update
This commit is contained in:
parent
1bd663446b
commit
68652d17e5
@ -1,3 +1,4 @@
|
||||
from django.core.cache import cache
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import Group
|
||||
from appointment.models import Appointment, Service, StaffMember
|
||||
@ -905,14 +906,18 @@ class GroupForm(forms.ModelForm):
|
||||
|
||||
class PermissionForm(forms.ModelForm):
|
||||
name = forms.ModelMultipleChoiceField(
|
||||
queryset=Permission.objects.filter(content_type__app_label='inventory'),
|
||||
queryset=cache.get('permissions_queryset', Permission.objects.filter(content_type__app_label__in=["inventory","django_ledger"])),
|
||||
widget=forms.CheckboxSelectMultiple(),
|
||||
required=True
|
||||
)
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
cache.set('permissions_queryset', Permission.objects.filter(content_type__app_label__in=["inventory","django_ledger"]), 60*60)
|
||||
|
||||
class Meta:
|
||||
model = Permission
|
||||
fields = ["name"]
|
||||
|
||||
|
||||
class UserGroupForm(forms.ModelForm):
|
||||
name = forms.ModelMultipleChoiceField(
|
||||
queryset= CustomGroup.objects.all(),
|
||||
|
||||
@ -1811,28 +1811,43 @@ class CustomGroup(models.Model):
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def set_default_inventory_permissions(self):
|
||||
# def set_default_inventory_permissions(self):
|
||||
# self.clear_permissions()
|
||||
# allowed_models = ["car","carequipment","interiorcolors","exteriorcolors","carcolors","carlocation","customcard"]
|
||||
# self.set_permissions(allowed_models=allowed_models,other_perms=['view_carfinance'])
|
||||
# def set_default_accountant_permissions(self):
|
||||
# self.clear_permissions()
|
||||
# allowed_models = ["car","carfinance","carlocation","customcard"]
|
||||
# allowed_models_ledger = ["accountmodel","chartofaccountmodel","customcard","billmodel"]
|
||||
# self.set_permissions(allowed_models=allowed_models,other_perms=['view_carfinance'])
|
||||
# self.set_permissions(app="django_ledger",allowed_models=allowed_models_ledger)
|
||||
|
||||
def set_default_permissions(self):
|
||||
self.clear_permissions()
|
||||
allowed_models = ["car","carequipment","interiorcolors","exteriorcolors","carcolors","carlocation","customcard"]
|
||||
self.set_permissions(allowed_models,['view_carfinance'])
|
||||
def set_default_accountant_permissions(self):
|
||||
self.clear_permissions()
|
||||
allowed_models = [""]
|
||||
self.set_permissions(allowed_models)
|
||||
if self.name == "Manager":
|
||||
self.set_permissions(app="inventory",allowed_models=["car","carfinance","carlocation","customcard"])
|
||||
self.set_permissions(app="django_ledger",allowed_models=["accountmodel","chartofaccountmodel","customcard","billmodel"])
|
||||
elif self.name == "Inventory":
|
||||
self.set_permissions(allowed_models=["car","carequipment","interiorcolors","exteriorcolors","carcolors","carlocation","customcard"]
|
||||
,other_perms=['view_carfinance'])
|
||||
elif self.name == "Sales":
|
||||
self.set_permissions(app="inventory",allowed_models=["lead","salequotation","salequotationcar"],
|
||||
other_perms=['view_car','view_carlocation','view_customcard','view_carcolors','view_cartransfer'].
|
||||
extend(['view_estimatemodel','view_invoicemodel','view_saleorder']))
|
||||
elif self.name == "Accountant":
|
||||
self.set_permissions(app="inventory",allowed_models=["carfinance"],other_perms=['view_car','view_carlocation','view_customcard','view_carcolors','view_cartransfer'])
|
||||
self.set_permissions(app="django_ledger",allowed_models=["accountmodel","chartofaccountmodel","customcard","billmodel"])
|
||||
elif self.name == "Agent":
|
||||
# Todo : set permissions for agent
|
||||
pass
|
||||
|
||||
|
||||
def set_default_agent_permissions(self):
|
||||
pass
|
||||
|
||||
def set_default_sales_permissions(self):
|
||||
pass
|
||||
|
||||
def set_permissions(self, allowed_models,other_perms=[]):
|
||||
self.clear_permissions()
|
||||
def set_permissions(self,app="inventory", allowed_models=[],other_perms=[]):
|
||||
try:
|
||||
for perm in Permission.objects.filter(content_type__app_label="inventory",content_type__model__in=allowed_models):
|
||||
for perm in Permission.objects.filter(content_type__app_label=app,content_type__model__in=allowed_models):
|
||||
self.add_permission(perm)
|
||||
for perm in other_perms:
|
||||
Permission.objects.get(codename=perm)
|
||||
self.add_permission(perm)
|
||||
for perm in other_perms:
|
||||
Permission.objects.get(codename=perm)
|
||||
self.add_permission(perm)
|
||||
except Exception as e:
|
||||
pass
|
||||
@ -1,3 +1,4 @@
|
||||
from django.contrib.auth.models import Group
|
||||
from decimal import Decimal
|
||||
from django.db.models.signals import post_save, post_delete, pre_delete, pre_save
|
||||
from .utils import to_dict
|
||||
@ -16,6 +17,7 @@ from django_ledger.models import (
|
||||
)
|
||||
from . import models
|
||||
from django.utils.timezone import now
|
||||
from django.db import transaction
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
@ -614,18 +616,19 @@ def create_ledger_entity(sender, instance, created, **kwargs):
|
||||
entity.create_account(coa_model=coa, code="6303", role=roles.EXPENSE_OTHER, name=_("Foreign Currency Translation"), balance_type="debit", active=True)
|
||||
entity.create_account(coa_model=coa, code="6304", role=roles.EXPENSE_OTHER, name=_("Interest Expenses"), balance_type="debit", active=True)
|
||||
|
||||
# Create groups
|
||||
group_manager = models.CustomGroup.objects.create(name="Manager", dealer=instance)
|
||||
group_manager.set_default_manager_permissions()
|
||||
group_inventory = models.CustomGroup.objects.create(name="Inventory", dealer=instance)
|
||||
group_inventory.set_default_inventory_permissions()
|
||||
group_accountant = models.CustomGroup.objects.create(name="Accountant", dealer=instance)
|
||||
group_accountant.set_default_accountant_permissions()
|
||||
group_agent = models.CustomGroup.objects.create(name="Agent", dealer=instance)
|
||||
group_agent.set_default_agent_permissions()
|
||||
group_sales = models.CustomGroup.objects.create(name="Sales", dealer=instance)
|
||||
group_sales.set_default_sales_permissions()
|
||||
|
||||
|
||||
@receiver(post_save, sender=models.Dealer)
|
||||
def create_dealer_groups(sender, instance, created, **kwargs):
|
||||
|
||||
group_names = ["Manager", "Inventory", "Accountant", "Agent", "Sales"]
|
||||
|
||||
def create_groups():
|
||||
for group_name in group_names:
|
||||
group, created = Group.objects.get_or_create(name=f"{instance.pk}_{group_name}")
|
||||
group_manager,created = models.CustomGroup.objects.get_or_create(name=group_name, dealer=instance, group=group)
|
||||
group_manager.set_default_permissions()
|
||||
|
||||
transaction.on_commit(create_groups)
|
||||
# Create Vendor
|
||||
@receiver(post_save, sender=models.Vendor)
|
||||
def create_ledger_vendor(sender, instance, created, **kwargs):
|
||||
|
||||
@ -1941,15 +1941,14 @@ def GroupDeleteview(request, pk):
|
||||
def GroupPermissionView(request, pk):
|
||||
group = get_object_or_404(models.CustomGroup, pk=pk)
|
||||
if request.method == "POST":
|
||||
form = forms.PermissionForm(request.POST)
|
||||
form = forms.PermissionForm(request.POST)
|
||||
group.clear_permissions()
|
||||
permissions = request.POST.getlist("name")
|
||||
for i in permissions:
|
||||
group.add_permission(Permission.objects.get(id=int(i)))
|
||||
permissions = request.POST.getlist("name")
|
||||
for i in permissions:
|
||||
group.add_permission(Permission.objects.get(id=int(i)))
|
||||
messages.success(request, _("Permission added successfully."))
|
||||
return redirect("group_detail", pk=group.pk)
|
||||
|
||||
form = forms.PermissionForm(initial={"name": group.permissions})
|
||||
return redirect("group_detail", pk=group.pk)
|
||||
form = forms.PermissionForm(initial={"name": group.permissions})
|
||||
return render(request,"groups/group_permission_form.html",{"group": group, "form": form})
|
||||
|
||||
# Users
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
from django.contrib.auth.models import Group
|
||||
from django_ledger.models.invoice import InvoiceModel
|
||||
from django_ledger.utils import accruable_net_summary
|
||||
from decimal import Decimal
|
||||
from django_ledger.models import EstimateModel,EntityModel,ItemModel,ItemTransactionModel,AccountModel,CustomerModel
|
||||
from rich import print
|
||||
from datetime import date
|
||||
from inventory.models import Car, Dealer, VatRate,Lead,CarMake,CarModel,Schedule
|
||||
from inventory.models import Car, Dealer, VatRate,Lead,CarMake,CarModel,Schedule,CustomGroup
|
||||
from inventory.utils import CarFinanceCalculator
|
||||
from appointment.models import Appointment,AppointmentRequest,Service,StaffMember
|
||||
from django.contrib.auth import get_user_model
|
||||
@ -121,6 +122,18 @@ def run():
|
||||
|
||||
# print(CustomerModel.objects.all())
|
||||
# customer = CustomerModel.objects.first()
|
||||
# dealer = Dealer.objects.filter(user__email="esma3el555@gmail.com").first()
|
||||
# customer = CustomerModel.objects.filter(dealer=dealer).first()
|
||||
# print(Car.objects.filter(dealer=dealer,status="available"))
|
||||
|
||||
# CustomGroup.objects.all().delete()
|
||||
# Group.objects.all().delete()
|
||||
|
||||
dealer = Dealer.objects.filter(user__email="esma3el555@gmail.com").first()
|
||||
customer = CustomerModel.objects.filter(dealer=dealer).first()
|
||||
print(Car.objects.filter(dealer=dealer,status="available"))
|
||||
group_names = ["Manager", "Inventory", "Accountant", "Agent", "Sales"]
|
||||
for group_name in group_names:
|
||||
group,created = Group.objects.get_or_create(name=f"{dealer.pk}_{group_name}")
|
||||
group_manager,created = CustomGroup.objects.get_or_create(name=group_name, dealer=dealer, group=group)
|
||||
group_manager.set_default_permissions()
|
||||
|
||||
print(CustomGroup.objects.all())
|
||||
Loading…
x
Reference in New Issue
Block a user