示例#1
0
文件: models.py 项目: boxed/curia
    def get_absolute_url(self):
        return "/forums/threads/%s/" % self.id

    def __unicode__(self):
        return self.name

    class Admin:
        search_fields = ["name"]

    class Meta:
        verbose_name = _("thread")
        verbose_name_plural = _("threads")


enable_notifications(Thread)


class Message(models.Model):
    body = models.TextField(verbose_name=_("Body"))
    parent_thread = models.ForeignKey(Thread, related_name="child_message", verbose_name=_("Thread"))
    parent_message = models.ForeignKey(
        "self", null=True, blank=True, related_name="child_message", verbose_name=_("Parent message")
    )
    cache_hierarchy = models.CharField(max_length=767, null=True, blank=True, editable=False, db_index=True)
    owner = models.ForeignKey(User, related_name="thread_messages", verbose_name=_("Owner"))
    creation_time = models.DateTimeField(auto_now_add=True, verbose_name=_("Creation time"))
    deleted = models.BooleanField(default=False, verbose_name=_("Deleted"))
    deleted_by = models.ForeignKey(
        User, blank=True, null=True, default=None, related_name="deleted_messages", verbose_name=_("Deleted by")
    )
示例#2
0
文件: models.py 项目: boxed/curia
    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return '/images/sets/%s/' % self.id

    class Admin:
        pass
        
    class Meta:
        ordering = ('-creation_time',)
        verbose_name = _('image set')
        verbose_name_plural = _('images sets')

def set_image_size(sender, instance, **kwargs):
    from PIL import Image
    # This function is called twice for file uploads, because the object is saved twice: once without the file on 
    # disk and one with. We ignore the first save by checking if the filename has been set yet
    if instance.image:
        image = Image.open(instance.image.path)
        image.thumbnail(settings.THUMBNAIL_SIZE, Image.ANTIALIAS)
        image.save(instance.image.path.replace(os.sep+'images'+os.sep, os.sep+'thumbnails'+os.sep))
        image = Image.open(instance.image.path)
        image.thumbnail(settings.IMAGE_SIZE, Image.ANTIALIAS)
        image.save(instance.image.path)
    
signals.post_save.connect(set_image_size, sender=Image)

enable_notifications(ImageSet)
示例#3
0
文件: models.py 项目: boxed/curia
        return Reply.objects.filter(event=self, choice='N').count()

    def number_of_unknown(self):
        return Reply.objects.filter(event=self, choice='?').count()

    def number_of_noanswer(self):
        return Reply.objects.filter(event=self, choice='-').count()

    def user_answer(self):
        try:
            from curia import get_current_user
            return Reply.objects.get(event=self, user=get_current_user())
        except Reply.DoesNotExist:
            return Reply(event=self, choice='-')

enable_notifications(Event)

def notify_event(sender, instance, **kwargs):
    if instance.event_parent == None:
        notify(sender, instance)

signals.post_save.connect(notify_event, sender=Event)

class Reply(models.Model):
    REPLY_CHOICES = (
        ('Y', _('Yes')),
        ('N', _('No')),
        ('?', _('Unsure')),
        ('-', _('No reply')),
    )
    
示例#4
0
文件: models.py 项目: boxed/curia
import os

class File(models.Model):
    file = models.FileField(upload_to='files', blank=True, verbose_name=_('File'))
    title = models.CharField(max_length=1024, verbose_name=_('Title'))
    owner_user = models.ForeignKey(User, blank=True, null=True, verbose_name=_('Owner user'))
    owner_group = models.ForeignKey(Group, blank=True, null=True, verbose_name=_('Owner group'))
    creation_time = models.DateTimeField(auto_now_add=True, verbose_name=_('Creation time'))
    description = models.TextField(blank=True, verbose_name=_('Description'))
    deleted = models.BooleanField(default=False, verbose_name=_('Deleted'))
    deleted_by = models.ForeignKey(User, blank=True, null=True, default=None, related_name="deleted_files", verbose_name=_('Deleted by'))
    deletion_time = models.DateTimeField(blank=True, null=True, verbose_name=_('Deletion time'))
    
    def __unicode__(self):
        return self.title

    def save(self, force_insert=False, using=None):
        if self.owner_user is None and self.owner_group is None:
            raise ValueError('A thread must be owned by a user or a group.')
    
        models.Model.save(self, force_insert, using=using)
    
    class Admin:
        search_fields = ['description']
 
    class Meta:
        verbose_name = _('file')
        verbose_name_plural = _('files')    
 
enable_notifications(File)
示例#5
0
文件: models.py 项目: boxed/curia
    def __unicode__(self):
        return self.name

    def get_absolute_url(self):
        return '/labels/%s/' % self.name

    def get_corresponding_object(self):
        return self.content_type.get_object_for_this_type(pk=self.object_id)

    class Meta:
        verbose_name = _('label')
        verbose_name_plural = _('labels')


enable_notifications(Label)


class SuggestedLabel(models.Model):
    group = models.ForeignKey(Group, verbose_name=_('Group'))
    title = models.CharField(max_length=1024, verbose_name=_('Title'))
    label = models.CharField(max_length=1024, verbose_name=_('Label'))
    content_type = models.ForeignKey(ContentType,
                                     verbose_name=_('Content type'))
    creation_time = models.DateTimeField(auto_now_add=True,
                                         verbose_name=_('Creation time'))
    created_by = models.ForeignKey(User,
                                   blank=True,
                                   null=True,
                                   default=None,
                                   related_name="created_suggested_labels",
示例#6
0
文件: models.py 项目: boxed/curia
    def number_of_unknown(self):
        return Reply.objects.filter(event=self, choice='?').count()

    def number_of_noanswer(self):
        return Reply.objects.filter(event=self, choice='-').count()

    def user_answer(self):
        try:
            from curia import get_current_user
            return Reply.objects.get(event=self, user=get_current_user())
        except Reply.DoesNotExist:
            return Reply(event=self, choice='-')


enable_notifications(Event)


def notify_event(sender, instance, **kwargs):
    if instance.event_parent == None:
        notify(sender, instance)


signals.post_save.connect(notify_event, sender=Event)


class Reply(models.Model):
    REPLY_CHOICES = (
        ('Y', _('Yes')),
        ('N', _('No')),
        ('?', _('Unsure')),
示例#7
0
    def get_absolute_url(self):
        return '/forums/threads/%s/' % self.id

    def __unicode__(self):
        return self.name

    class Admin:
        search_fields = ['name']

    class Meta:
        verbose_name = _('thread')
        verbose_name_plural = _('threads')


enable_notifications(Thread)


class Message(models.Model):
    body = models.TextField(verbose_name=_('Body'))
    parent_thread = models.ForeignKey(Thread,
                                      related_name='child_message',
                                      verbose_name=_('Thread'))
    parent_message = models.ForeignKey('self',
                                       null=True,
                                       blank=True,
                                       related_name='child_message',
                                       verbose_name=_('Parent message'))
    cache_hierarchy = models.CharField(max_length=767,
                                       null=True,
                                       blank=True,
示例#8
0
    description = models.TextField(blank=True, verbose_name=_('Description'))
    deleted = models.BooleanField(default=False, verbose_name=_('Deleted'))
    deleted_by = models.ForeignKey(User,
                                   blank=True,
                                   null=True,
                                   default=None,
                                   related_name="deleted_files",
                                   verbose_name=_('Deleted by'))
    deletion_time = models.DateTimeField(blank=True,
                                         null=True,
                                         verbose_name=_('Deletion time'))

    def __unicode__(self):
        return self.title

    def save(self, force_insert=False, using=None):
        if self.owner_user is None and self.owner_group is None:
            raise ValueError('A thread must be owned by a user or a group.')

        models.Model.save(self, force_insert, using=using)

    class Admin:
        search_fields = ['description']

    class Meta:
        verbose_name = _('file')
        verbose_name_plural = _('files')


enable_notifications(File)
示例#9
0
文件: models.py 项目: boxed/curia
        search_fields = ['name']

    def __unicode__(self):
        return self.name

    def get_absolute_url(self):
        return '/labels/%s/' % self.name

    def get_corresponding_object(self):
        return self.content_type.get_object_for_this_type(pk=self.object_id)

    class Meta:
        verbose_name = _('label')
        verbose_name_plural = _('labels')

enable_notifications(Label)
class SuggestedLabel(models.Model):
    group = models.ForeignKey(Group, verbose_name=_('Group'))
    title = models.CharField(max_length=1024, verbose_name=_('Title'))
    label = models.CharField(max_length=1024, verbose_name=_('Label'))
    content_type = models.ForeignKey(ContentType, verbose_name=_('Content type'))
    creation_time = models.DateTimeField(auto_now_add=True, verbose_name=_('Creation time'))
    created_by = models.ForeignKey(User, blank=True, null=True, default=None, related_name="created_suggested_labels", verbose_name=_('Created by'))
    deleted = models.BooleanField(default=False, verbose_name=_('Deleted'))
    deleted_by = models.ForeignKey(User, blank=True, null=True, default=None, related_name="deleted_suggested_labels", verbose_name=_('Deleted by'))
    deletion_time = models.DateTimeField(blank=True, null=True, verbose_name=_('Deletion time'))

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
示例#10
0
    def get_absolute_url(self):
        return '/images/sets/%s/' % self.id

    class Admin:
        pass

    class Meta:
        ordering = ('-creation_time', )
        verbose_name = _('image set')
        verbose_name_plural = _('images sets')


def set_image_size(sender, instance, **kwargs):
    from PIL import Image
    # This function is called twice for file uploads, because the object is saved twice: once without the file on
    # disk and one with. We ignore the first save by checking if the filename has been set yet
    if instance.image:
        image = Image.open(instance.image.path)
        image.thumbnail(settings.THUMBNAIL_SIZE, Image.ANTIALIAS)
        image.save(
            instance.image.path.replace(os.sep + 'images' + os.sep,
                                        os.sep + 'thumbnails' + os.sep))
        image = Image.open(instance.image.path)
        image.thumbnail(settings.IMAGE_SIZE, Image.ANTIALIAS)
        image.save(instance.image.path)


signals.post_save.connect(set_image_size, sender=Image)

enable_notifications(ImageSet)