agendas: add fields to allow partial bookings (#78056)
This commit is contained in:
parent
12a1fbaa72
commit
640466742c
|
@ -0,0 +1,32 @@
|
||||||
|
# Generated by Django 3.2.18 on 2023-05-31 08:16
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
('agendas', '0153_event_index'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='agenda',
|
||||||
|
name='partial_bookings',
|
||||||
|
field=models.BooleanField(default=False),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='booking',
|
||||||
|
name='end_time',
|
||||||
|
field=models.TimeField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='booking',
|
||||||
|
name='start_time',
|
||||||
|
field=models.TimeField(null=True),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='end_time',
|
||||||
|
field=models.TimeField(null=True, verbose_name='End time'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -289,6 +289,7 @@ class Agenda(models.Model):
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
)
|
)
|
||||||
|
partial_bookings = models.BooleanField(default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['label']
|
ordering = ['label']
|
||||||
|
@ -1934,6 +1935,7 @@ class Event(models.Model):
|
||||||
|
|
||||||
agenda = models.ForeignKey(Agenda, on_delete=models.CASCADE)
|
agenda = models.ForeignKey(Agenda, on_delete=models.CASCADE)
|
||||||
start_datetime = models.DateTimeField(_('Date/time'))
|
start_datetime = models.DateTimeField(_('Date/time'))
|
||||||
|
end_time = models.TimeField(_('End time'), null=True)
|
||||||
recurrence_days = ArrayField(
|
recurrence_days = ArrayField(
|
||||||
models.IntegerField(choices=WEEKDAY_CHOICES),
|
models.IntegerField(choices=WEEKDAY_CHOICES),
|
||||||
verbose_name=_('Recurrence days'),
|
verbose_name=_('Recurrence days'),
|
||||||
|
@ -2429,6 +2431,7 @@ class Event(models.Model):
|
||||||
agenda=self.agenda,
|
agenda=self.agenda,
|
||||||
primary_event=self,
|
primary_event=self,
|
||||||
slug=self.slug,
|
slug=self.slug,
|
||||||
|
end_time=self.end_time,
|
||||||
duration=self.duration,
|
duration=self.duration,
|
||||||
places=self.places,
|
places=self.places,
|
||||||
waiting_list_places=self.waiting_list_places,
|
waiting_list_places=self.waiting_list_places,
|
||||||
|
@ -2665,6 +2668,9 @@ class Booking(models.Model):
|
||||||
absence_callback_url = models.URLField(blank=True)
|
absence_callback_url = models.URLField(blank=True)
|
||||||
color = models.ForeignKey(BookingColor, null=True, on_delete=models.SET_NULL, related_name='bookings')
|
color = models.ForeignKey(BookingColor, null=True, on_delete=models.SET_NULL, related_name='bookings')
|
||||||
|
|
||||||
|
start_time = models.TimeField(null=True)
|
||||||
|
end_time = models.TimeField(null=True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user_name(self):
|
def user_name(self):
|
||||||
return ('%s %s' % (self.user_first_name, self.user_last_name)).strip()
|
return ('%s %s' % (self.user_first_name, self.user_last_name)).strip()
|
||||||
|
|
|
@ -1245,7 +1245,7 @@ class ImportEventsForm(forms.Form):
|
||||||
raise ValidationError(_('Invalid file format. (duration, {event_no} event)'), i)
|
raise ValidationError(_('Invalid file format. (duration, {event_no} event)'), i)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
event.full_clean(exclude=['desk', 'meeting_type', 'primary_event'])
|
event.full_clean(exclude=['desk', 'meeting_type', 'primary_event', 'end_time'])
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
errors = [_('Invalid file format:\n')]
|
errors = [_('Invalid file format:\n')]
|
||||||
for label, field_errors in e.message_dict.items():
|
for label, field_errors in e.message_dict.items():
|
||||||
|
|
Loading…
Reference in New Issue