diff --git a/base/forms.py b/base/forms.py index 4eff4b599..0608585a3 100644 --- a/base/forms.py +++ b/base/forms.py @@ -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): """ diff --git a/base/signals.py b/base/signals.py index 88fac6d85..4e4182393 100644 --- a/base/signals.py +++ b/base/signals.py @@ -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): """