def test_get_number_of_days_with_end_date_within_24_hours(self): event = Event(date_time_begin = datetime.datetime(2012, 1, 1, 19, 0, 0, 0, timezone.utc), date_time_end = datetime.datetime(2012, 1, 1, 22, 0, 0, 0, timezone.utc)) self.assertEqual(0, event.get_number_of_days()) event = Event(date_time_begin = datetime.datetime(2012, 1, 1, 19, 0, 0, 0, timezone.utc), date_time_end = datetime.datetime(2012, 1, 2, 18, 30, 0, 0, timezone.utc)) self.assertEqual(0, event.get_number_of_days())
def __create_or_update_event_with_location (form, user, event): "Creates or updates an Event from the submitted EventForm. If the given Event is None a new Event is created." if event == None: event = Event() event.title = form.cleaned_data['title'] event.date_time_begin = form.cleaned_data['date_time_begin'] event.date_time_end = form.cleaned_data['date_time_end'] event.url = form.cleaned_data['url'] event.description = form.cleaned_data['description'] event.location = __get_and_update_or_create_location(form) # Only when a new event is created if event.id == None: # auto-publish for staff users event.published = user.is_staff # link event to user if user.is_authenticated(): event.user = user # Event must be persisted before tags can be set (many-to-may relationship) #if event.id == None: # event.save() event.tags = form.cleaned_data['tags'] #event.save() return event
def test_event_versioning(self): now = timezone.now().replace(microsecond=0) tomorrow = now + datetime.timedelta(days=1) event = Event(title=u'Test', description='Test', url='http://www.example.com', date_time_begin=now) event.save() version_list = reversion.get_for_object(event) self.assertEqual(1, len(version_list)) event.date_time_begin=tomorrow event.save() version_list = reversion.get_for_object(event) self.assertEqual(2, len(version_list)) self.assertEqual(now, version_list[1].field_dict['date_time_begin']) self.assertEqual(tomorrow, version_list[0].field_dict['date_time_begin'])
def test_get_number_of_days_with_no_end_date(self): event = Event(date_time_begin = datetime.datetime(2012, 1, 1, 19, 0, 0, 0, timezone.utc)) self.assertEqual(0, event.get_number_of_days())
def test_event_versioning(self): now = timezone.now() t1 = now + datetime.timedelta(days=3) t2 = now + datetime.timedelta(days=5) # just created event, empty prefix expected event = Event(title=u'Test', description='Test', url='http://www.example.com', date_time_begin=t1) event.save() changed, prefix = utils.get_changed_and_change_prefix(event, now) self.assertFalse(changed) self.assertEqual("", prefix) # date updated, prefix expected now = timezone.now() event.date_time_begin = t2 event.save() changed, prefix = utils.get_changed_and_change_prefix(event, now) self.assertTrue(changed) self.assertEqual("[Update][Datum] ", prefix) # location added, no update expected now = timezone.now() event.location = Location.objects.get(id=1) event.save() changed, prefix = utils.get_changed_and_change_prefix(event, now) self.assertFalse(changed) self.assertEqual("", prefix) # location updated, prefix expected now = timezone.now() event.location = Location.objects.get(id=2) event.save() changed, prefix = utils.get_changed_and_change_prefix(event, now) self.assertTrue(changed) self.assertEqual("[Update][Ort] ", prefix) # canceled, prefix expected now = timezone.now() event.canceled = True; event.save() changed, prefix = utils.get_changed_and_change_prefix(event, now) self.assertTrue(changed) self.assertEqual("[Abgesagt] ", prefix)
def save_event_from_json(event_as_json, user): ev = json.loads(event_as_json) event = Event() event.user = user if 'id' in ev: event.id = ev['id'] event.title = ev['title'] if 'date_time_begin' in ev: event.date_time_begin = __json_string_to_date_time(ev['date_time_begin']) if 'date_time_end' in ev: event.date_time_end = __json_string_to_date_time(ev['date_time_end']) if 'url' in ev: event.url = ev['url'] if 'description' in ev: event.description = ev['description'] if 'canceled' in ev: event.canceled = ev['canceled'] event.save() if 'tags' in ev: tags = convert_to_event_tags(ev['tags']) event.tags = tags event.save() # TODO: location return event