view shoutbox/models.py @ 1132:1407af5472e4

Add our own table stack. Foundation's table.stack only shows the first th in a thead. Added my own version that shows all of them. Updated templates to use new class.
author Brian Neal <bgneal@gmail.com>
date Wed, 28 Sep 2016 20:25:29 -0500
parents eeaf387803c6
children
line wrap: on
line source
"""
Models for the shoutbox application.
"""
import datetime

from django.db import models
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.utils.html import escape, urlize

from smiley.utils 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

    def get_absolute_url(self):
        return reverse('shoutbox-view', args=[str(self.pk)])

    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'