Added a view, to get the list of open events for registration as json

This commit is contained in:
2024-09-12 13:21:06 +02:00
parent 05ea38dd0e
commit e2f12577cd
3 changed files with 117 additions and 0 deletions

View File

@@ -527,3 +527,94 @@ class Event(models.Model):
template_name = os.path.join('dav_events', 'event', 'default.html')
template = get_template(template_name)
return template.render(self.get_template_context())
def as_dict(self, json=True):
d = {
'number': self.get_number(),
'title': self.title,
'description': self.description,
'mode': self.mode,
'mode_display': self.get_mode_display(),
'sport': self.sport,
'sport_display': self.get_sport_display(),
'level': self.level,
'level_display': self.get_level_display(),
'first_day': self.first_day,
'last_day': self.last_day,
'alt_first_day': self.alt_first_day,
'alt_last_day': self.alt_last_day,
'location': self.location,
'basecamp': self.basecamp,
'meeting_time': self.meeting_time,
'departure_time': self.departure_time,
'departure_ride': self.departure_ride,
'return_departure_time': self.return_departure_time,
'return_arrival_time': self.return_arrival_time,
'requirements': self.requirements,
'equipment': self.equipment,
'pre_meeting_1': self.pre_meeting_1,
'pre_meeting_2': self.pre_meeting_2,
'trainer_fullname': self.get_trainer_full_name(),
'trainer_firstname': self.trainer_firstname,
'trainer_familyname': self.trainer_familyname,
'trainer_email': self.trainer_email,
'trainer_phone': self.trainer_phone,
'trainer_2_fullname': self.trainer_2_fullname,
'trainer_2_email': self.trainer_2_email,
'trainer_2_phone': self.trainer_2_phone,
'trainer_3_fullname': self.trainer_3_fullname,
'trainer_3_email': self.trainer_3_email,
'trainer_3_phone': self.trainer_3_phone,
'min_participants': self.min_participants,
'max_participants': self.max_participants,
'registration_required': self.registration_required,
'registration_howto': self.registration_howto,
'deadline': self.deadline,
'registration_closed': self.registration_closed,
'charge': self.charge,
'additional_costs': self.additional_costs,
'course_topic_1': self.course_topic_1,
'course_topic_2': self.course_topic_2,
'course_topic_3': self.course_topic_3,
'course_topic_4': self.course_topic_4,
'course_topic_5': self.course_topic_5,
'course_topic_6': self.course_topic_6,
'course_goal_1': self.course_goal_1,
'course_goal_2': self.course_goal_2,
'course_goal_3': self.course_goal_3,
'course_goal_4': self.course_goal_4,
'course_goal_5': self.course_goal_5,
'course_goal_6': self.course_goal_6,
}
if json:
d['country'] = str(self.country)
d['country_display'] = self.get_country_display()
for field in ('transport', 'meeting_point', 'accommodation', 'meals'):
value = getattr(self, field)
d[field] = value
display_field_name = '%s_display' % field
if value == 'NONE':
d[display_field_name] = None
elif value == 'OTHER':
other = getattr(self, '%s_other' % field)
d[display_field_name] = other
else:
func = getattr(self, 'get_%s_display' % field)
d[display_field_name] = func()
else:
d['country'] = self.country
for field in ('transport', 'meeting_point', 'accommodation', 'meals'):
value = getattr(self, field)
d[field] = value
return d