diff shoutbox/models.py @ 581:ee87ea74d46b

For Django 1.4, rearranged project structure for new manage.py.
author Brian Neal <bgneal@gmail.com>
date Sat, 05 May 2012 17:10:48 -0500
parents gpp/shoutbox/models.py@6a5bdcf93ad3
children 0ca691cccf8d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/shoutbox/models.py	Sat May 05 17:10:48 2012 -0500
@@ -0,0 +1,56 @@
+"""
+Models for the shoutbox application.
+"""
+import datetime
+
+from django.db import models
+from django.contrib.auth.models import User
+from django.utils.html import escape, urlize
+
+from smiley import smilify_html
+
+
+class Shout(models.Model):
+    user = models.ForeignKey(User)
+    shout_date = models.DateTimeField(blank=True)
+    shout = models.TextField()
+    html = models.TextField()
+
+    class Meta:
+        ordering = ('-shout_date', )
+
+    def __unicode__(self):
+        if len(self.shout) > 60:
+            return self.shout[:60] + "..."
+        return self.shout
+
+    @models.permalink
+    def get_absolute_url(self):
+        return ('shoutbox-view', [str(self.id)])
+
+    def save(self, *args, **kwargs):
+        if not self.id:
+            self.shout_date = datetime.datetime.now()
+        self.html = urlize(smilify_html(escape(self.shout)), trim_url_limit=15, 
+                nofollow=True)
+        super(Shout, self).save(*args, **kwargs)
+
+
+class ShoutFlag(models.Model):
+    """This model represents a user flagging a shout as inappropriate."""
+    user = models.ForeignKey(User)
+    shout = models.ForeignKey(Shout)
+    flag_date = models.DateTimeField(auto_now_add=True)
+
+    def __unicode__(self):
+        return u'Shout ID %s flagged by %s' % (self.shout_id, self.user.username)
+
+    class Meta:
+        ordering = ('flag_date', )
+
+    def get_shout_url(self):
+        return '<a href="/admin/shoutbox/shout/%(id)d">Shout #%(id)d</a>' % (
+                {'id': self.shout.id})
+    get_shout_url.allow_tags = True
+    get_shout_url.short_description = 'Link to Shout'
+