[UPDT] BASE: Updated form and company manager to prevent database call when django loading
This commit is contained in:
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user