-class Activity(GenericContent):\r
- """\r
- We keep some history data for user activities\r
- """\r
- user = models.ForeignKey(User)\r
- activity_type = models.SmallIntegerField(choices=TYPE_ACTIVITY)\r
- active_at = models.DateTimeField(default=datetime.datetime.now)\r
- is_auditted = models.BooleanField(default=False)\r
-\r
- class Meta:\r
- app_label = 'forum'\r
- db_table = u'activity'\r
-\r
- def __unicode__(self):\r
- return u'[%s] was active at %s' % (self.user.username, self.active_at)\r
-\r
- def save(self, *args, **kwargs):\r
- super(Activity, self).save(*args, **kwargs)\r
- if self._is_new:\r
- activity_record.send(sender=self.activity_type, instance=self)\r
-\r
- @property\r
- def node(self):\r
- if self.activity_type in (const.TYPE_ACTIVITY_ANSWER, const.TYPE_ACTIVITY_ASK_QUESTION,\r
- const.TYPE_ACTIVITY_MARK_ANSWER, const.TYPE_ACTIVITY_UPDATE_QUESTION):\r
- return self.content_object\r
-\r
- if self.activity_type in (const.TYPE_ACTIVITY_COMMENT_QUESTION,\r
- const.TYPE_ACTIVITY_COMMENT_ANSWER, const.TYPE_ACTIVITY_UPDATE_ANSWER):\r
- return self.content_object.node.leaf\r
- \r
- raise NotImplementedError()\r
-\r
- @property\r
- def type_as_string(self):\r
- if self.activity_type == const.TYPE_ACTIVITY_ASK_QUESTION:\r
- return _("asked")\r
- elif self.activity_type == const.TYPE_ACTIVITY_ANSWER:\r
- return _("answered")\r
- elif self.activity_type == const.TYPE_ACTIVITY_MARK_ANSWER:\r
- return _("marked an answer")\r
- elif self.activity_type == const.TYPE_ACTIVITY_UPDATE_QUESTION:\r
- return _("edited a question")\r
- elif self.activity_type == const.TYPE_ACTIVITY_COMMENT_QUESTION:\r
- return _("commented a question")\r
- elif self.activity_type == const.TYPE_ACTIVITY_COMMENT_ANSWER:\r
- return _("commented an answer")\r
- elif self.activity_type == const.TYPE_ACTIVITY_UPDATE_ANSWER:\r
- return _("edited an answer")\r
- elif self.activity_type == const.TYPE_ACTIVITY_PRIZE:\r
- return _("received badge")\r
- else:\r
- raise NotImplementedError()\r
-\r
-\r
-activity_record = django.dispatch.Signal(providing_args=['instance'])\r
-\r