diff --git a/accounts/migrations/0007_alter_user_profile_picture.py b/accounts/migrations/0007_alter_user_profile_picture.py new file mode 100644 index 0000000..03c5138 --- /dev/null +++ b/accounts/migrations/0007_alter_user_profile_picture.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0 on 2025-12-19 22:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0006_user_profile_picture'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='profile_picture', + field=models.ImageField(blank=True, default='default.png', null=True, upload_to='profile_pictures/'), + ), + ] diff --git a/events/forms.py b/events/forms.py index 5afdaa2..08dcaa1 100644 --- a/events/forms.py +++ b/events/forms.py @@ -13,10 +13,11 @@ class EventForm(forms.ModelForm): 'title': forms.TextInput(attrs={'class': 'form-control'}), 'important_information': forms.Textarea(attrs={'class': 'form-control'}), 'venue_name': forms.TextInput(attrs={'class': 'form-control'}), - 'start_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'end_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), - 'start_time': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time'}), - 'end_time': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time'}), + 'start_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date', 'id': 'id_start_date'}), + 'end_date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date', 'id': 'id_end_date'}), + 'start_time': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time', 'id': 'id_start_time'}), + 'end_time': forms.TimeInput(attrs={'class': 'form-control', 'type': 'time', 'id': 'id_end_time'}), + 'all_year_event': forms.CheckboxInput(attrs={'class': 'form-check-input', 'id': 'id_all_year_event'}), 'latitude': forms.NumberInput(attrs={'class': 'form-control'}), 'longitude': forms.NumberInput(attrs={'class': 'form-control'}), 'pincode': forms.TextInput(attrs={'class': 'form-control'}), @@ -31,6 +32,37 @@ class EventForm(forms.ModelForm): 'is_eventify_event': forms.CheckboxInput(attrs={'class': 'form-check-input'}), } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # Check if all_year_event is True (from instance or initial data) + all_year_event = False + if self.instance and self.instance.pk: + all_year_event = self.instance.all_year_event + elif 'all_year_event' in self.initial: + all_year_event = self.initial['all_year_event'] + elif self.data and 'all_year_event' in self.data: + all_year_event = self.data.get('all_year_event') == 'on' or self.data.get('all_year_event') == 'True' + + # If all_year_event is True, disable date/time fields + if all_year_event: + self.fields['start_date'].widget.attrs['disabled'] = True + self.fields['end_date'].widget.attrs['disabled'] = True + self.fields['start_time'].widget.attrs['disabled'] = True + self.fields['end_time'].widget.attrs['disabled'] = True + + def clean(self): + cleaned_data = super().clean() + all_year_event = cleaned_data.get('all_year_event', False) + + # If all_year_event is True, clear date/time fields + if all_year_event: + cleaned_data['start_date'] = None + cleaned_data['end_date'] = None + cleaned_data['start_time'] = None + cleaned_data['end_time'] = None + + return cleaned_data + class MultipleFileInput(forms.ClearableFileInput): allow_multiple_selected = True diff --git a/events/migrations/0004_event_all_year_event_alter_event_end_date_and_more.py b/events/migrations/0004_event_all_year_event_alter_event_end_date_and_more.py new file mode 100644 index 0000000..957178b --- /dev/null +++ b/events/migrations/0004_event_all_year_event_alter_event_end_date_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0 on 2025-12-19 22:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0003_event_end_time_event_start_time'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='all_year_event', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='event', + name='end_date', + field=models.DateField(blank=True, null=True), + ), + migrations.AlterField( + model_name='event', + name='start_date', + field=models.DateField(blank=True, null=True), + ), + ] diff --git a/events/models.py b/events/models.py index d0a2456..cd457a4 100644 --- a/events/models.py +++ b/events/models.py @@ -6,10 +6,11 @@ class Event(models.Model): created_date = models.DateField(auto_now_add=True) name = models.CharField(max_length=200) description = models.TextField() - start_date = models.DateField() - end_date = models.DateField() + start_date = models.DateField(blank=True, null=True) + end_date = models.DateField(blank=True, null=True) start_time = models.TimeField(blank=True, null=True) end_time = models.TimeField(blank=True, null=True) + all_year_event = models.BooleanField(default=False) latitude = models.DecimalField(max_digits=9, decimal_places=6) longitude = models.DecimalField(max_digits=9, decimal_places=6) diff --git a/templates/events/event_form.html b/templates/events/event_form.html index 5796105..57f65c7 100644 --- a/templates/events/event_form.html +++ b/templates/events/event_form.html @@ -20,4 +20,30 @@ Cancel + + {% endblock %}