models.py attached.

On Sun, 2007-02-18 at 16:51 +0100, Honza Král wrote:

> 
> that's odd can you post your Model definition?
> >
> >
> > >
> >
> 
> 
-- 
TomᚠPokorný
=============
email: [EMAIL PROTECTED]
mobil: +420 776 379 631
icq# 22996508
==============================
1.Robotická s.r.o.
http://www.roboticka.cz

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

# -*- encoding: utf-8 -*- 

from django.db import models
from django.contrib.auth.models import User 
from django.conf import settings
from django.core import validators
import datetime

# Create your models here.

class UserProfile(models.Model):
    """ User/Member information """
    user = models.ForeignKey(User, unique=True)
    icq = models.IntegerField(null=True, blank=True)
    is_member = models.BooleanField(default=False)
    description = models.TextField(null=True, blank=True)

    icon_width = models.SmallIntegerField(null=True, blank=True)
    icon_height = models.SmallIntegerField(null=True, blank=True)
    icon_mimetype = models.CharField(maxlength=64, null=True, blank=True)

    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        ordering = ('id',)

    class Admin:
        fields = (
            (None, {'fields': ('user', 'icq', 'is_member', 'description')}),
            (_('User icon'), {'fields': ('icon_width', 'icon_height', 'icon_mimetype')}),
        )
        list_display = ('user', 'name', 'email', 'icq', 'icon_size', 'is_member')
        list_filter = ('is_member',)
        search_fields = ('user__first_name', 'user__last_name', 'user__email', 'user__username', 'description',)
        list_select_related = True

    def __str__(self):
        return self.name()

    def icon_url(self):
        return settings.DATA_DIR + 'usericon/' + self.id + '/'

    def has_icon(self):
        return self.icon_width and self.icon_height

    def icon_img_tag(self):
        if self.has_icon():
            return '<img class="usericon" src="/usericon/%s/" width="%d" height="%d" alt="" />' % (self.id, self.icon_width, self.icon_height)
        return '<img class="usericon" src="%simg/unknown.png" width="40" height="50" alt="" />' % settings.MEDIA_URL
    
    def name(self):
        return self.user.get_full_name()

    def email(self):
        return self.user.email

    def icon_size(self):
        if self.has_icon():
            return "%dx%d" % (self.icon_width, self.icon_height)


class Action(models.Model):
    name = models.CharField(maxlength=64, unique=True)
    from_date = models.DateField(null=True, blank=True, validator_list=[validators.IsLessThanOtherField('to_date', _('From_date must be before to_date!'))])
    to_date = models.DateField(null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    photo = models.ForeignKey('Photo', null=True, blank=True)
    rank = models.IntegerField(null=True, blank=True)
    enabled = models.BooleanField(default=True)

    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        ordering = ('rank', 'from_date', 'to_date', 'id')
    
    class Admin:
        list_display = ('name', 'from_date', 'to_date', 'rank', 'enabled')
        list_filter = ('enabled',)
        search_fields = ('name', 'description',)
        list_select_related = True

    def rank_is_null(self):
        return rank is None

    def __str__(self):
        if not self.enabled:
            return "%s (disabled)" % self.name
        return self.name

    def group_name(self):
        return {0: 'Starší', 9999: 'Plánované'}.get(self.group_rank, "Rok %d" % self.from_date.year)

    def group_rank(self):
        if not self.from_date:
            return 0
        if self.from_date > datetime.datetime.now():
            return 9999
        return self.from_date.year



class Album(models.Model):
    action = models.ForeignKey(Action, null=True, blank=True)
    name = models.CharField(maxlength=64)
    description = models.TextField(null=True, blank=True)
    directory = models.CharField(maxlength=64, unique=True)
    rank = models.IntegerField(null=True, blank=True)
    enabled = models.BooleanField(default=True)

    # access permissions 
    public_read = models.BooleanField(default=True)

    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        unique_together = (('action', 'name'),)
        #order_with_respect_to = 'action'
        ordering = ('rank', 'name')

    class Admin:
        list_display = ('action', 'name', 'directory', 'rank', 'public_read', 'enabled')
        list_display_links = ('name', 'directory')
        list_filter = ('enabled', 'public_read', 'action')
        search_fields = ('name', 'directory', 'description',)
        list_select_related = True

    def __str__(self):
        if self.action:
            text = "%s - %s" % (self.action, self.name)
        else:
            text = self.name
        if not self.enabled:
            text += " (disabled)"
        return text



class Forum(models.Model):
    action = models.ForeignKey(Action, null=True, blank=True)
    name = models.CharField(maxlength=64)
    description = models.TextField(null=True, blank=True)
    rank = models.IntegerField(null=True, blank=True)
    enabled = models.BooleanField(default=True)
    # forum options 
    with_subject = models.BooleanField(default=True)
    with_usericon = models.BooleanField(default=True)
    with_photo = models.BooleanField(default=False)

    # access permissions 
    public_read = models.BooleanField(default=True)
    public_write = models.BooleanField(default=False)

    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        unique_together = (('action', 'name'),)
        #order_with_respect_to = 'action'
        ordering = ('rank', 'name')

    class Admin:
        list_display = ('action', 'name', 'rank', 'with_subject', 'with_usericon', 'with_photo', 'public_read', 'public_write', 'enabled')
        list_display_links = ('name',)
        list_filter = ('enabled', 'public_read', 'public_write', 'action')
        search_fields = ('name', 'description',)
        list_select_related = True

    def __str__(self):
        if self.action:
            text = "%s - %s" % (self.action, self.name)
        else:
            text = self.name
        if not self.enabled:
            text += " (disabled)"
        return text



class Photo(models.Model):
    album = models.ForeignKey(Album)
    file_name = models.CharField(maxlength=64)
    file_mtime = models.DateTimeField()
    file_size = models.IntegerField()
    file_md5sum = models.CharField(maxlength=40)
    width = models.SmallIntegerField()
    height = models.SmallIntegerField()
    mimetype = models.CharField(maxlength=64)
    rotate = models.SmallIntegerField(choices=((0, 0), (90, 90), (180, 180), (270, 270)), default=0)
    description = models.TextField(null=True, blank=True)
    rank = models.IntegerField(null=True, blank=True)
    enabled = models.BooleanField(default=True)
    # TODO: doplnit 
    
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        unique_together = (('album', 'file_name'),)
        #order_with_respect_to = 'album'
        ordering = ('rank', 'file_name')

    class Admin:
        list_display = ('album', 'file_name', 'size', 'rotate', 'rank', 'enabled')
        list_display_links = ('file_name',)
        list_filter = ('enabled', 'album')
        search_fields = ('file_name', 'description',)
        list_select_related = True

    def __str__(self):
        return "%s/%s" % (self.album.directory, self.file_name)

    def size(self):
        return "%dx%d" % (self.width, self.height)


class Message(models.Model):
    forum = models.ForeignKey(Forum, null=True, blank=True)
    subject = models.CharField(maxlength=64, null=True, blank=True)
    body = models.TextField()
    name = models.CharField(maxlength=64)
    email = models.EmailField(null=True, blank=True)
    user = models.ForeignKey(User, related_name='messages')
    photo = models.ForeignKey(Photo, null=True, blank=True)
    enabled = models.BooleanField(default=True)

    created_at = models.DateTimeField(auto_now_add=True, null=True)
    changed_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        ordering = ('created_at', 'id')

    class Admin:
        list_display = ('forum', 'id', 'subject', 'name', 'email', 'user', 'enabled', 'created_at')
        list_display_links = ('id', 'subject')
        list_filter = ('enabled', 'forum', 'user')
        search_fields = ('subject', 'body')
        list_select_related = True
        

    def __str__(self):
        if self.subject:
            return "%s - %s" % (self.forum, self.subject)
        return "%s - (%d)" % (self.forum, self.id)

    

Reply via email to