/plugs/forums/models.py
Python | 155 lines | 119 code | 29 blank | 7 comment | 0 complexity | a12231bb2a50269aee8bec8834043cc1 MD5 | raw file
Possible License(s): Apache-2.0, MIT, BSD-3-Clause
- #! /usr/bin/env python
- #coding=utf-8
- from uliweb.orm import *
- from uliweb.utils.common import get_var
-
- def get_modified_user():
- from uliweb import request
-
- return request.user.id
-
- class ForumCategory(Model):#??
- name = Field(str, verbose_name='????', max_length=100)
- description = Field(TEXT, verbose_name='????')
- ordering = Field(int, verbose_name='??',default = 1)
- created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
- updated_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True, auto_now=True)
-
- def __unicode__(self):
- return self.name
-
- class AddForm:
- fields = ['name', 'ordering']
-
- class EditForm:
- fields = ['name', 'ordering']
-
- class Table:
- fields = [
- {'name':'name', 'width':100},
- {'name':'ordering', 'width':40},
- {'name':'action', 'verbose_name':'??', 'width':100},
- ]
-
- class Forum(Model):#??
- name = Field(str, verbose_name='????', max_length=100, required=True)
- # slug = models.SlugField(max_length = 110)#??
- description = Field(TEXT, verbose_name='????')
- ordering = Field(int, verbose_name='??',default = 1)
- category = Reference('forumcategory', verbose_name='????', collection_name='forums', required=True)
- created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
- updated_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True, auto_now=True)
- num_topics = Field(int, verbose_name='????')
- num_posts = Field(int, verbose_name='????')
- # attachments = Field(FILE, verbose_name='??', hint='????????2M????????')
-
- last_reply_on = Field(datetime.datetime, verbose_name='??????')
- last_post_user = Reference('user', verbose_name='?????', collection_name="last_post_user_forums")
- last_post = Field(int, verbose_name='????id')
- managers = ManyToMany('user', verbose_name='???')
-
- def __unicode__(self):
- return self.name
-
- class AddForm:
- fields = ['category', 'name', 'description', 'ordering', 'managers']
-
- class EditForm:
- fields = ['category', 'name', 'description', 'ordering', 'managers']
-
- class Table:
- fields = [
- {'name':'name', 'width':200},
- {'name':'description', 'width':200},
- {'name':'category', 'width':100},
- {'name':'ordering', 'width':40},
- {'name':'managers', 'width':100},
- {'name':'action', 'verbose_name':'??', 'width':100},
- ]
-
-
- class ForumTopicType(Model):
- forum = Reference('forum', verbose_name='????', collection_name='forum_topictype', required=True)
- name = Field(str, verbose_name='??????', max_length=100, required=True)
- # slug = models.SlugField(max_length = 100)#??
- description = Field(TEXT, verbose_name='??????')
-
- def __unicode__(self):
- return self.name
-
- class AddForm:
- fields = ['forum', 'name', 'description']
-
- class EditForm:
- fields = ['forum', 'name', 'description']
-
- class Table:
- fields = [
- {'name':'name', 'width':100},
- {'name':'description', 'width':200},
- {'name':'forum', 'width':100},
- {'name':'action', 'verbose_name':'??', 'width':100},
- ]
-
- class ForumTopic(Model):#??
- forum = Reference('forum', verbose_name='????', collection_name='forum_topics', required=True)
- topic_type = Reference('forumtopictype', verbose_name='????', collection_name='topic_topictype')
- posted_by = Reference('user', verbose_name='???', default=get_modified_user, auto_add=True, collection_name="user_topics")
-
- subject = Field(str, verbose_name='??', max_length=999, required=True)
- num_views = Field(int, verbose_name='????',default = 1)
- num_replies = Field(int, verbose_name='????',default = 1)#posts...
- created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
- updated_on = Field(datetime.datetime, verbose_name='????')
- last_reply_on = Field(datetime.datetime, verbose_name='??????')
- last_post_user = Reference('user', verbose_name='?????', collection_name="last_post_user_topics")
- last_post = Field(int, verbose_name='????id')
- modified_user = Reference('user', verbose_name='?????', default=get_modified_user, auto=True, collection_name="last_modified_user_topics")
- slug = Field(CHAR, max_length=32, verbose_name='?????')
-
- #Moderation features
- closed = Field(bool, verbose_name='????')
- sticky = Field(bool, verbose_name='????')
- hidden = Field(bool, verbose_name='????')
- homepage = Field(bool, verbose_name='?????')
- essence = Field(bool, verbose_name='?????')
-
- class AddForm:
- fields = ['topic_type', 'subject', 'content', 'slug', 'reply_email']
-
- class EditForm:
- fields = ['topic_type', 'subject', 'content', 'slug']
-
- class ForumAttachment(Model):
- slug = Field(CHAR, max_length=32, verbose_name='?????')
- file_name = Field(FILE, verbose_name='??', hint='????????2M????????')
- name = Field(str, verbose_name='??????', max_length=255)
- enabled = Field(bool, verbose_name='??????', default=False)
- created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
-
- # Create Replies for a topic
- class ForumPost(Model):#can't edit...??
- topic = Reference('forumtopic', verbose_name='????', collection_name='topic_posts')
- posted_by = Reference('user', verbose_name='???', default=get_modified_user, auto_add=True, collection_name='user_posts')
- created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
- content = Field(TEXT, verbose_name='????', required=True)
- updated_on = Field(datetime.datetime, verbose_name='????')
- floor = Field(int, verbose_name='??', required=True)
- deleted = Field(bool, verbose_name='????', default=False)
- slug = Field(CHAR, max_length=32, verbose_name='?????')
- modified_by = Reference('user', verbose_name='???', collection_name='user_modified_posts')
- deleted_by = Reference('user', verbose_name='???', collection_name='user_deleted_posts')
- deleted_on = Field(datetime.datetime, verbose_name='????')
- reply_email = Field(bool, verbose_name='??????????')
- parent = SelfReference(verbose_name='????', collection_name='children_post')
- num_replies = Field(int, verbose_name='????',default = 0)
- last_reply_on = Field(datetime.datetime, verbose_name='??????')
- last_post_user = Reference('user', verbose_name='?????', collection_name='last_reply_user_post')
-
- @classmethod
- def OnInit(cls):
- Index('fpost_indx', cls.c.topic, cls.c.parent, cls.c.floor, unique=True)
-
- class AddForm:
- fields = ['content', 'slug', 'reply_email']
-