X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=influences%2Fmodels.py;h=7ddd9d53e44300ef16d8dc054fa6626e9086f075;hb=06863704f30a2025ee82fd89a41716f5ab2cce87;hp=d27e0e0aae73d58e5f452556206b1ecdcaeac1ff;hpb=2b9a90d7af0908f440a54987ce6978c307febfaf;p=matthijs%2Fprojects%2Fxerxes.git diff --git a/influences/models.py b/influences/models.py index d27e0e0..7ddd9d5 100644 --- a/influences/models.py +++ b/influences/models.py @@ -1,22 +1,71 @@ from django.db import models -from ee.base.models import EEObject +from django.contrib.auth.models import User +from django.utils.translation import ugettext_lazy as _ +from threadedcomments.models import ThreadedComment # Create your models here. -class Character(EEObject): - name = models.CharField(max_length=255) - def __str__(self): - return self.name +class Character(models.Model): + STATUS_CHOICES = ( + ('N', _('New')), + ('A', _('Approved')), + ) + created = models.DateField(auto_now_add=1, verbose_name = _("Creation time")) + modified = models.DateField(auto_now=1, verbose_name = _("Modification time")) + name = models.CharField(max_length=255, verbose_name = _("Name")) + status = models.CharField(max_length=2, choices=STATUS_CHOICES, default='N', verbose_name = _("Status")) + player = models.ForeignKey(User, verbose_name = _("Player")) - class Admin: - pass + def __str__(self): + return self.name -class Influence(EEObject): - contact = models.CharField(max_length=255) - character = models.ForeignKey(Character, edit_inline=models.TABULAR, num_in_admin=3, core=True) - description = models.TextField() + class Meta: + verbose_name = _("Character") + verbose_name_plural = _("Characters") - def __str__(self): - return self.description[0:10] +class Influence(models.Model): + STATUS_CHOICES = ( + ('N', _('New')), + ('U', _('Under discussion')), + ('P', _('Processing')), + ('D', _('Done')), + ) + created = models.DateField(auto_now_add=1, verbose_name = _("Creation time")) + modified = models.DateField(auto_now=1, verbose_name = _("Modification time")) + + character = models.ForeignKey(Character, verbose_name = _("Character")) + contact = models.CharField(max_length=255, verbose_name = _("Contact Name")) + summary = models.CharField(max_length=255, verbose_name = _("Summary")) + description = models.TextField(verbose_name = _("Description")) + status = models.TextField(max_length=1, choices=STATUS_CHOICES, default='N', verbose_name = _("Status")) + longterm = models.BooleanField(default=False, verbose_name = _("Long term")) - class Admin: - pass + result = models.TextField(blank=True,verbose_name = _("Result")) + + def __str__(self): + return self.summary + + def get_comments(self, private): + def quote_reply(comment): + return "\n".join(["> " + l for l in comment.comment.split("\n")]) + + # Import here to prevent dependency loop, since forms depends on + # models as well + from forms import get_influence_comment_form + + if private: + comments = ThreadedComment.objects.get_tree(self) + else: + comments = ThreadedComment.public.get_tree(self) + + # Annotate each comment with a proper reply form + for comment in comments: + initial = { 'comment' : quote_reply(comment) } + comment.reply_form = get_influence_comment_form(private, comment)(initial=initial) + + return comments + + class Meta: + verbose_name = _("Influence") + verbose_name_plural = _("Influences") + +# vim: set sts=4 sw=4 expandtab: