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 Permission
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from appointment.models import Appointment, Service, StaffMember
|
from appointment.models import Appointment, Service, StaffMember
|
||||||
@ -905,14 +906,18 @@ class GroupForm(forms.ModelForm):
|
|||||||
|
|
||||||
class PermissionForm(forms.ModelForm):
|
class PermissionForm(forms.ModelForm):
|
||||||
name = forms.ModelMultipleChoiceField(
|
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(),
|
widget=forms.CheckboxSelectMultiple(),
|
||||||
required=True
|
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:
|
class Meta:
|
||||||
model = Permission
|
model = Permission
|
||||||
fields = ["name"]
|
fields = ["name"]
|
||||||
|
|
||||||
class UserGroupForm(forms.ModelForm):
|
class UserGroupForm(forms.ModelForm):
|
||||||
name = forms.ModelMultipleChoiceField(
|
name = forms.ModelMultipleChoiceField(
|
||||||
queryset= CustomGroup.objects.all(),
|
queryset= CustomGroup.objects.all(),
|
||||||
|
|||||||
@ -1811,28 +1811,43 @@ class CustomGroup(models.Model):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
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()
|
self.clear_permissions()
|
||||||
allowed_models = ["car","carequipment","interiorcolors","exteriorcolors","carcolors","carlocation","customcard"]
|
if self.name == "Manager":
|
||||||
self.set_permissions(allowed_models,['view_carfinance'])
|
self.set_permissions(app="inventory",allowed_models=["car","carfinance","carlocation","customcard"])
|
||||||
def set_default_accountant_permissions(self):
|
self.set_permissions(app="django_ledger",allowed_models=["accountmodel","chartofaccountmodel","customcard","billmodel"])
|
||||||
self.clear_permissions()
|
elif self.name == "Inventory":
|
||||||
allowed_models = [""]
|
self.set_permissions(allowed_models=["car","carequipment","interiorcolors","exteriorcolors","carcolors","carlocation","customcard"]
|
||||||
self.set_permissions(allowed_models)
|
,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):
|
def set_permissions(self,app="inventory", allowed_models=[],other_perms=[]):
|
||||||
pass
|
|
||||||
|
|
||||||
def set_default_sales_permissions(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def set_permissions(self, allowed_models,other_perms=[]):
|
|
||||||
self.clear_permissions()
|
|
||||||
try:
|
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)
|
self.add_permission(perm)
|
||||||
for perm in other_perms:
|
|
||||||
Permission.objects.get(codename=perm)
|
|
||||||
self.add_permission(perm)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
from django.contrib.auth.models import Group
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from django.db.models.signals import post_save, post_delete, pre_delete, pre_save
|
from django.db.models.signals import post_save, post_delete, pre_delete, pre_save
|
||||||
from .utils import to_dict
|
from .utils import to_dict
|
||||||
@ -16,6 +17,7 @@ from django_ledger.models import (
|
|||||||
)
|
)
|
||||||
from . import models
|
from . import models
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
|
from django.db import transaction
|
||||||
|
|
||||||
User = get_user_model()
|
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="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)
|
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)
|
@receiver(post_save, sender=models.Dealer)
|
||||||
group_manager.set_default_manager_permissions()
|
def create_dealer_groups(sender, instance, created, **kwargs):
|
||||||
group_inventory = models.CustomGroup.objects.create(name="Inventory", dealer=instance)
|
|
||||||
group_inventory.set_default_inventory_permissions()
|
group_names = ["Manager", "Inventory", "Accountant", "Agent", "Sales"]
|
||||||
group_accountant = models.CustomGroup.objects.create(name="Accountant", dealer=instance)
|
|
||||||
group_accountant.set_default_accountant_permissions()
|
def create_groups():
|
||||||
group_agent = models.CustomGroup.objects.create(name="Agent", dealer=instance)
|
for group_name in group_names:
|
||||||
group_agent.set_default_agent_permissions()
|
group, created = Group.objects.get_or_create(name=f"{instance.pk}_{group_name}")
|
||||||
group_sales = models.CustomGroup.objects.create(name="Sales", dealer=instance)
|
group_manager,created = models.CustomGroup.objects.get_or_create(name=group_name, dealer=instance, group=group)
|
||||||
group_sales.set_default_sales_permissions()
|
group_manager.set_default_permissions()
|
||||||
|
|
||||||
|
transaction.on_commit(create_groups)
|
||||||
# Create Vendor
|
# Create Vendor
|
||||||
@receiver(post_save, sender=models.Vendor)
|
@receiver(post_save, sender=models.Vendor)
|
||||||
def create_ledger_vendor(sender, instance, created, **kwargs):
|
def create_ledger_vendor(sender, instance, created, **kwargs):
|
||||||
|
|||||||
@ -1941,15 +1941,14 @@ def GroupDeleteview(request, pk):
|
|||||||
def GroupPermissionView(request, pk):
|
def GroupPermissionView(request, pk):
|
||||||
group = get_object_or_404(models.CustomGroup, pk=pk)
|
group = get_object_or_404(models.CustomGroup, pk=pk)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = forms.PermissionForm(request.POST)
|
form = forms.PermissionForm(request.POST)
|
||||||
group.clear_permissions()
|
group.clear_permissions()
|
||||||
permissions = request.POST.getlist("name")
|
permissions = request.POST.getlist("name")
|
||||||
for i in permissions:
|
for i in permissions:
|
||||||
group.add_permission(Permission.objects.get(id=int(i)))
|
group.add_permission(Permission.objects.get(id=int(i)))
|
||||||
messages.success(request, _("Permission added successfully."))
|
messages.success(request, _("Permission added successfully."))
|
||||||
return redirect("group_detail", pk=group.pk)
|
return redirect("group_detail", pk=group.pk)
|
||||||
|
form = forms.PermissionForm(initial={"name": group.permissions})
|
||||||
form = forms.PermissionForm(initial={"name": group.permissions})
|
|
||||||
return render(request,"groups/group_permission_form.html",{"group": group, "form": form})
|
return render(request,"groups/group_permission_form.html",{"group": group, "form": form})
|
||||||
|
|
||||||
# Users
|
# Users
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
|
from django.contrib.auth.models import Group
|
||||||
from django_ledger.models.invoice import InvoiceModel
|
from django_ledger.models.invoice import InvoiceModel
|
||||||
from django_ledger.utils import accruable_net_summary
|
from django_ledger.utils import accruable_net_summary
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from django_ledger.models import EstimateModel,EntityModel,ItemModel,ItemTransactionModel,AccountModel,CustomerModel
|
from django_ledger.models import EstimateModel,EntityModel,ItemModel,ItemTransactionModel,AccountModel,CustomerModel
|
||||||
from rich import print
|
from rich import print
|
||||||
from datetime import date
|
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 inventory.utils import CarFinanceCalculator
|
||||||
from appointment.models import Appointment,AppointmentRequest,Service,StaffMember
|
from appointment.models import Appointment,AppointmentRequest,Service,StaffMember
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
@ -121,6 +122,18 @@ def run():
|
|||||||
|
|
||||||
# print(CustomerModel.objects.all())
|
# print(CustomerModel.objects.all())
|
||||||
# customer = CustomerModel.objects.first()
|
# 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()
|
dealer = Dealer.objects.filter(user__email="esma3el555@gmail.com").first()
|
||||||
customer = CustomerModel.objects.filter(dealer=dealer).first()
|
group_names = ["Manager", "Inventory", "Accountant", "Agent", "Sales"]
|
||||||
print(Car.objects.filter(dealer=dealer,status="available"))
|
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