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 __must_tweet_and_prefix(event, tweet_type): # check if already tweeted, reweet only when changed tweet = None tweet_list = TweetedEvent.objects.filter(event=event).filter(type=tweet_type).order_by('-date_time_created') if tweet_list: tweet = tweet_list[0] changed, prefix = utils.get_changed_and_change_prefix(event, tweet.date_time_created) if changed and not tweet.tweet.startswith(prefix): return (True, prefix) else: return (False, '') # always tweet canceled event once canceled, prefix = utils.get_canceled_and_cancel_prefix(event) if canceled: return (True, prefix) else: return (True, '')