[UPDT] BASE: Updated form and company manager to prevent database call when django loading

This commit is contained in:
Horilla
2025-11-07 14:06:41 +05:30
parent 4b4771ff1c
commit 0199c886ca
2 changed files with 39 additions and 9 deletions

View File

@@ -357,7 +357,6 @@ class UserGroupForm(ModelForm):
try:
permissions = forms.MultipleChoiceField(
choices=[(perm.codename, perm.name) for perm in Permission.objects.all()],
required=False,
error_messages={
"required": "Please choose a permission.",
@@ -374,6 +373,16 @@ class UserGroupForm(ModelForm):
model = Group
fields = ["name", "permissions"]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
try:
self.fields["permissions"].choices = [
(perm.codename, perm.name) for perm in Permission.objects.all()
]
except Exception:
# Safe fallback when DB is not ready
self.fields["permissions"].choices = []
def save(self, commit=True):
"""
ModelForm save override
@@ -481,7 +490,6 @@ class AssignPermission(Form):
)
try:
permissions = forms.MultipleChoiceField(
choices=[(perm.codename, perm.name) for perm in Permission.objects.all()],
error_messages={
"required": "Please choose a permission.",
},
@@ -493,6 +501,15 @@ class AssignPermission(Form):
super().__init__(*args, **kwargs)
reload_queryset(self.fields)
# Dynamically load permission choices only when DB is ready
try:
self.fields["permissions"].choices = [
(perm.codename, perm.name) for perm in Permission.objects.all()
]
except Exception:
# Fallback in case the DB isn't ready yet
self.fields["permissions"].choices = []
def clean(self):
emps = self.data.getlist("employee")
if emps:
@@ -1290,13 +1307,6 @@ class EmployeeShiftForm(ModelForm):
fields = "__all__"
exclude = ["days", "is_active", "weekly_full_time", "full_time"]
def clean(self):
full_time = self.data["full_time"]
validate_time_format(full_time)
full_time = self.data["weekly_full_time"]
validate_time_format(full_time)
return super().clean()
class EmployeeShiftScheduleUpdateForm(ModelForm):
"""

View File

@@ -111,6 +111,26 @@ def create_shift_days(sender, **kwargs):
)
@receiver(post_migrate)
def create_shift_days(sender, **kwargs):
from base.models import EmployeeShiftDay
if not EmployeeShiftDay.objects.exists():
days = [
("monday", "Monday"),
("tuesday", "Tuesday"),
("wednesday", "Wednesday"),
("thursday", "Thursday"),
("friday", "Friday"),
("saturday", "Saturday"),
("sunday", "Sunday"),
]
EmployeeShiftDay.objects.bulk_create(
[EmployeeShiftDay(day=day[0]) for day in days]
)
@receiver(m2m_changed, sender=Announcement.employees.through)
def filtered_employees(sender, instance, action, **kwargs):
"""