def save(self, year, user, playa_event_id): if(playa_event_id is not None): existing_event = True logging.debug("existing_event = True") playa_event = self.instance else: existing_event = False logging.debug("existing_event = False") playa_event = PlayaEvent() data = self.cleaned_data playa_event.year=self.year playa_event.creator=user playa_event.title = data['title'] playa_event.slug = slugify(data['title']) playa_event.description = data['description'].strip() playa_event.print_description = data['print_description'].strip() playa_event.event_type = data['event_type'] playa_event.url=data['url'] playa_event.contact_email=data['contact_email'] playa_event.hosted_by_camp=data['hosted_by_camp'] playa_event.located_at_art = data['located_at_art'] playa_event.other_location=data['other_location'] playa_event.check_location=data['check_location'] playa_event.all_day = data['all_day'] playa_event.list_online=data['list_online'] playa_event.list_contact_online=data['list_contact_online'] playa_event.list_contact_online=data['list_contact_online'] playa_event.speaker_series=data['speaker_series'] playa_event.password=data['password'] playa_event.password_hint=data['password_hint'] playa_event.save() if existing_event: # delete the existing occurrences, they will be replaced for occurrence in Occurrence.objects.filter(event=self.instance).all(): occurrence.delete() # add occurrences if data['repeats']: if(data['all_day']): start_time = datetime.strptime("1/1/01 00:00", "%d/%m/%y %H:%M").time() end_time = datetime.strptime("1/1/01 23:59", "%d/%m/%y %H:%M").time() else: start_time = data['start_time'].time() end_time = data['end_time'].time() for day in data['repeat_days'] : event_start = datetime.combine(datetime.strptime(day, "%Y-%m-%d"), start_time) event_end = datetime.combine(datetime.strptime(day, "%Y-%m-%d"), end_time) playa_event.add_occurrences(event_start,event_end) elif(data['all_day']): start_time = datetime.strptime("1/1/01 00:00", "%d/%m/%y %H:%M").time() end_time = datetime.strptime("1/1/01 23:59", "%d/%m/%y %H:%M").time() event_start = datetime.combine(data['start_time'].date(), start_time) event_end = datetime.combine(data['end_time'].date(), end_time) playa_event.add_occurrences(event_start, event_end) else: playa_event.add_occurrences(data['start_time'], data['end_time']) return playa_event