Esempio n. 1
0
    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