Skip to content

Commit

Permalink
Merge pull request vicalloy#10 from thagat/master_to_pep8
Browse files Browse the repository at this point in the history
Minor writing changes to get closer to PEP8
  • Loading branch information
vicalloy committed Feb 12, 2013
2 parents 46a0af3 + 9f38731 commit db2ac0b
Show file tree
Hide file tree
Showing 3 changed files with 232 additions and 128 deletions.
173 changes: 98 additions & 75 deletions lbforum/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,136 +13,144 @@
from attachments.models import Attachment
from onlineuser.models import Online


class Config(models.Model):
key = models.CharField(max_length = 255)#PK
value = models.CharField(max_length = 255)
key = models.CharField(max_length=255) # PK
value = models.CharField(max_length=255)


class Category(models.Model):
name = models.CharField(max_length = 100)
description = models.TextField(default = '')
ordering = models.PositiveIntegerField(default = 1)
created_on = models.DateTimeField(auto_now_add = True)
updated_on = models.DateTimeField(blank = True, null = True)
name = models.CharField(max_length=100)
description = models.TextField(default='')
ordering = models.PositiveIntegerField(default=1)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(blank=True, null=True)

class Meta:
verbose_name = _("Category")
verbose_name_plural = _("Categories")
ordering = ('-ordering', 'created_on')

def __unicode__(self):
return self.name



class Forum(models.Model):
name = models.CharField(max_length = 100)
slug = models.SlugField(max_length = 110)
description = models.TextField(default = '')
ordering = models.PositiveIntegerField(default = 1)
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=110)
description = models.TextField(default='')
ordering = models.PositiveIntegerField(default=1)
category = models.ForeignKey(Category)
created_on = models.DateTimeField(auto_now_add = True)
updated_on = models.DateTimeField(blank = True, null = True)
num_topics = models.IntegerField(default = 0)
num_posts = models.IntegerField(default = 0)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(blank=True, null=True)
num_topics = models.IntegerField(default=0)
num_posts = models.IntegerField(default=0)

last_post = models.CharField(max_length=255, blank=True) # pickle obj

last_post = models.CharField(max_length = 255, blank = True)#pickle obj

class Meta:
verbose_name = _("Forum")
verbose_name_plural = _("Forums")
ordering = ('ordering','-created_on')
ordering = ('ordering', '-created_on')

def _count_nums_topic(self):
return self.topic_set.all().count()

def _count_nums_post(self):
return self.topic_set.all().aggregate(Sum('num_replies'))['num_replies__sum'] or 0
num_posts = self.topic_set.all().aggregate(Sum('num_replies'))
return num_posts['num_replies__sum'] or 0

def get_last_post(self):
if not self.last_post:
return {}
return pickle.loads(b64decode(self.last_post))

@models.permalink
def get_absolute_url(self):
return ('lbforum_forum', (), {'forum_slug': self.slug})

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

def update_state_info(self, commit=True):
self.num_topics = self._count_nums_topic()
self.num_posts = self._count_nums_post()
if self.num_topics:
last_post = Post.objects.all().filter(topic__forum=self).order_by('-created_on')[0]
last_post = Post.objects.all().filter(topic__forum=self)
last_post = last_post.order_by('-created_on')[0]
self.last_post = gen_last_post_info(last_post)
else:
self.last_post = ''
if commit:
self.save()


class TopicType(models.Model):
forum = models.ForeignKey(Forum, verbose_name=_('Forum'))
name = models.CharField(max_length = 100)
slug = models.SlugField(max_length = 100)
description = models.TextField(blank=True, default = '')
name = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
description = models.TextField(blank=True, default='')

def __unicode__(self):
return self.name

return self.name


class TopicManager(models.Manager):
def get_query_set(self):
return super(TopicManager, self).get_query_set().filter(hidden = False)
return super(TopicManager, self).get_query_set().filter(hidden=False)

LEVEL_CHOICES = (
(30, _('Default')),
(60, _('Distillate')),
)


class Topic(models.Model):
forum = models.ForeignKey(Forum, verbose_name=_('Forum'))
topic_type = models.ForeignKey(TopicType, verbose_name=_('Topic Type'),
topic_type = models.ForeignKey(TopicType, verbose_name=_('Topic Type'),
blank=True, null=True)
posted_by = models.ForeignKey(User)

#TODO ADD TOPIC POST.
post = models.ForeignKey('Post', verbose_name=_('Post'), related_name='topics_',
blank=True, null=True)
post = models.ForeignKey('Post', verbose_name=_('Post'),
related_name='topics_', blank=True, null=True)
subject = models.CharField(max_length=999)
num_views = models.IntegerField(default=0)
num_replies = models.PositiveSmallIntegerField(default=0)#posts...
num_replies = models.PositiveSmallIntegerField(default=0) # posts...
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(blank=True, null=True)
last_reply_on = models.DateTimeField(auto_now_add=True)
last_post = models.CharField(max_length=255, blank=True)#pickle obj
last_post = models.CharField(max_length=255, blank=True) # pickle obj

has_imgs = models.BooleanField(default=False)
has_attachments = models.BooleanField(default=False)
need_replay = models.BooleanField(default=False)#need_reply :-)
need_replay = models.BooleanField(default=False) # need_reply :-)
need_reply_attachments = models.BooleanField(default=False)

#Moderation features
closed = models.BooleanField(default=False)
sticky = models.BooleanField(default=False)
hidden = models.BooleanField(default=False)
level = models.SmallIntegerField(choices=LEVEL_CHOICES, default=30)

objects = TopicManager()

class Meta:
ordering = ('-last_reply_on',)#'-sticky'
ordering = ('-last_reply_on',) # '-sticky'
get_latest_by = ('created_on')
verbose_name = _("Topic")
verbose_name_plural = _("Topics")

def __unicode__(self):
return self.subject

def count_nums_replies(self):
return self.posts.all().count()

@models.permalink
def get_absolute_url(self):
return ('lbforum_topic', (), {'topic_id': self.id})

def get_last_post(self):
if not self.last_post:
return {}
Expand All @@ -160,49 +168,51 @@ def update_state_info(self, commit=True):
self.save()
if commit:
self.save()

FORMAT_CHOICES = (
('bbcode', _('BBCode')),
('html', _('Html')),
)


# Create Replies for a topic
class Post(models.Model):#can't edit...
topic = models.ForeignKey(Topic, verbose_name=_('Topic'), related_name='posts')
class Post(models.Model): # can't edit...
topic = models.ForeignKey(Topic, verbose_name=_('Topic'),
related_name='posts')
posted_by = models.ForeignKey(User)
poster_ip = models.IPAddressField()
topic_post = models.BooleanField(default=False)
format = models.CharField(max_length = 20, default='bbcode')#user name

format = models.CharField(max_length=20, default='bbcode') # user name
message = models.TextField()
attachments = models.ManyToManyField(Attachment, blank = True)
attachments = models.ManyToManyField(Attachment, blank=True)

has_imgs = models.BooleanField(default=False)
has_attachments = models.BooleanField(default=False)

created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(blank = True, null = True)
edited_by = models.CharField(max_length = 255, blank=True)#user name
updated_on = models.DateTimeField(blank=True, null=True)
edited_by = models.CharField(max_length=255, blank=True) # user name

class Meta:
verbose_name = _("Post")
verbose_name_plural = _("Posts")
ordering = ('-created_on',)
get_latest_by = ('created_on', )

def __unicode__(self):
return self.message[:80]

def subject(self):
if self.topic_post:
return _('Topic: %s') % self.topic.subject
return _('Re: %s') % self.topic.subject

def file_attachments(self):
return self.attachments.filter(is_img = False)
return self.attachments.filter(is_img=False)

def img_attachments(self):
return self.attachments.filter(is_img = True)
return self.attachments.filter(is_img=True)

def update_attachments_flag(self):
self.has_attachments = self.file_attachments().count() > 0
Expand All @@ -228,41 +238,49 @@ def update_attachments(self, attachment_ids):

@models.permalink
def get_absolute_url(self):
return ('lbforum_post', (), { 'post_id': self.pk })
return ('lbforum_post', (), {'post_id': self.pk})

def get_absolute_url_ext(self):
topic = self.topic
post_idx = topic.posts.filter(created_on__lte=self.created_on).count()
page = (post_idx - 1) / settings.CTX_CONFIG['TOPIC_PAGE_SIZE'] + 1
return '%s?page=%s#p%s' % (topic.get_absolute_url(), page, self.pk)



class LBForumUserProfile(models.Model):
user = models.OneToOneField(User, related_name='lbforum_profile', verbose_name=_('User'))
user = models.OneToOneField(User, related_name='lbforum_profile',
verbose_name=_('User'))
last_activity = models.DateTimeField(auto_now_add=True)
userrank = models.CharField(max_length=30,default="Junior Member")
userrank = models.CharField(max_length=30, default="Junior Member")
last_posttime = models.DateTimeField(auto_now_add=True)
signature = models.CharField(max_length = 1000, blank = True)
signature = models.CharField(max_length=1000, blank=True)

def __unicode__(self):
return self.user.username

def get_total_posts(self):
return self.user.post_set.count()

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

#### smoe function ###


#### do smoe connect ###
def gen_last_post_info(post):
last_post = {'posted_by': post.posted_by.username, 'update': post.created_on}
last_post = {
'posted_by': post.posted_by.username,
'update': post.created_on
}
return b64encode(pickle.dumps(last_post, pickle.HIGHEST_PROTOCOL))


def create_user_profile(sender, instance, created, **kwargs):
if created:
LBForumUserProfile.objects.create(user=instance)


def update_topic_on_post(sender, instance, created, **kwargs):
if created:
t = instance.topic
Expand All @@ -274,25 +292,30 @@ def update_topic_on_post(sender, instance, created, **kwargs):
p.last_posttime = instance.created_on
p.save()


def update_forum_on_post(sender, instance, created, **kwargs):
if created:
instance.topic.forum.last_post = gen_last_post_info(instance)
instance.topic.forum.num_posts += 1
instance.topic.forum.save()


def update_forum_on_topic(sender, instance, created, **kwargs):
if created:
instance.forum.num_topics += 1
instance.forum.save()


def update_user_last_activity(sender, instance, created, **kwargs):
if instance.user:
p, created = LBForumUserProfile.objects.get_or_create(user=instance.user)
p, created = LBForumUserProfile.objects.get_or_create(
user=instance.user)

p.last_activity = instance.updated_on
p.save()

post_save.connect(create_user_profile, sender = User)
post_save.connect(update_topic_on_post, sender = Post)
post_save.connect(update_forum_on_post, sender = Post)
post_save.connect(update_forum_on_topic, sender = Topic)
post_save.connect(update_user_last_activity, sender = Online)
post_save.connect(create_user_profile, sender=User)
post_save.connect(update_topic_on_post, sender=Post)
post_save.connect(update_forum_on_post, sender=Post)
post_save.connect(update_forum_on_topic, sender=Topic)
post_save.connect(update_user_last_activity, sender=Online)
Loading

0 comments on commit db2ac0b

Please sign in to comment.