PageRenderTime 60ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/plugs/forums/models.py

http://plugs.googlecode.com/
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
  1. #! /usr/bin/env python
  2. #coding=utf-8
  3. from uliweb.orm import *
  4. from uliweb.utils.common import get_var
  5. def get_modified_user():
  6. from uliweb import request
  7. return request.user.id
  8. class ForumCategory(Model):#??
  9. name = Field(str, verbose_name='????', max_length=100)
  10. description = Field(TEXT, verbose_name='????')
  11. ordering = Field(int, verbose_name='??',default = 1)
  12. created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
  13. updated_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True, auto_now=True)
  14. def __unicode__(self):
  15. return self.name
  16. class AddForm:
  17. fields = ['name', 'ordering']
  18. class EditForm:
  19. fields = ['name', 'ordering']
  20. class Table:
  21. fields = [
  22. {'name':'name', 'width':100},
  23. {'name':'ordering', 'width':40},
  24. {'name':'action', 'verbose_name':'??', 'width':100},
  25. ]
  26. class Forum(Model):#??
  27. name = Field(str, verbose_name='????', max_length=100, required=True)
  28. # slug = models.SlugField(max_length = 110)#??
  29. description = Field(TEXT, verbose_name='????')
  30. ordering = Field(int, verbose_name='??',default = 1)
  31. category = Reference('forumcategory', verbose_name='????', collection_name='forums', required=True)
  32. created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
  33. updated_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True, auto_now=True)
  34. num_topics = Field(int, verbose_name='????')
  35. num_posts = Field(int, verbose_name='????')
  36. # attachments = Field(FILE, verbose_name='??', hint='????????2M????????')
  37. last_reply_on = Field(datetime.datetime, verbose_name='??????')
  38. last_post_user = Reference('user', verbose_name='?????', collection_name="last_post_user_forums")
  39. last_post = Field(int, verbose_name='????id')
  40. managers = ManyToMany('user', verbose_name='???')
  41. def __unicode__(self):
  42. return self.name
  43. class AddForm:
  44. fields = ['category', 'name', 'description', 'ordering', 'managers']
  45. class EditForm:
  46. fields = ['category', 'name', 'description', 'ordering', 'managers']
  47. class Table:
  48. fields = [
  49. {'name':'name', 'width':200},
  50. {'name':'description', 'width':200},
  51. {'name':'category', 'width':100},
  52. {'name':'ordering', 'width':40},
  53. {'name':'managers', 'width':100},
  54. {'name':'action', 'verbose_name':'??', 'width':100},
  55. ]
  56. class ForumTopicType(Model):
  57. forum = Reference('forum', verbose_name='????', collection_name='forum_topictype', required=True)
  58. name = Field(str, verbose_name='??????', max_length=100, required=True)
  59. # slug = models.SlugField(max_length = 100)#??
  60. description = Field(TEXT, verbose_name='??????')
  61. def __unicode__(self):
  62. return self.name
  63. class AddForm:
  64. fields = ['forum', 'name', 'description']
  65. class EditForm:
  66. fields = ['forum', 'name', 'description']
  67. class Table:
  68. fields = [
  69. {'name':'name', 'width':100},
  70. {'name':'description', 'width':200},
  71. {'name':'forum', 'width':100},
  72. {'name':'action', 'verbose_name':'??', 'width':100},
  73. ]
  74. class ForumTopic(Model):#??
  75. forum = Reference('forum', verbose_name='????', collection_name='forum_topics', required=True)
  76. topic_type = Reference('forumtopictype', verbose_name='????', collection_name='topic_topictype')
  77. posted_by = Reference('user', verbose_name='???', default=get_modified_user, auto_add=True, collection_name="user_topics")
  78. subject = Field(str, verbose_name='??', max_length=999, required=True)
  79. num_views = Field(int, verbose_name='????',default = 1)
  80. num_replies = Field(int, verbose_name='????',default = 1)#posts...
  81. created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
  82. updated_on = Field(datetime.datetime, verbose_name='????')
  83. last_reply_on = Field(datetime.datetime, verbose_name='??????')
  84. last_post_user = Reference('user', verbose_name='?????', collection_name="last_post_user_topics")
  85. last_post = Field(int, verbose_name='????id')
  86. modified_user = Reference('user', verbose_name='?????', default=get_modified_user, auto=True, collection_name="last_modified_user_topics")
  87. slug = Field(CHAR, max_length=32, verbose_name='?????')
  88. #Moderation features
  89. closed = Field(bool, verbose_name='????')
  90. sticky = Field(bool, verbose_name='????')
  91. hidden = Field(bool, verbose_name='????')
  92. homepage = Field(bool, verbose_name='?????')
  93. essence = Field(bool, verbose_name='?????')
  94. class AddForm:
  95. fields = ['topic_type', 'subject', 'content', 'slug', 'reply_email']
  96. class EditForm:
  97. fields = ['topic_type', 'subject', 'content', 'slug']
  98. class ForumAttachment(Model):
  99. slug = Field(CHAR, max_length=32, verbose_name='?????')
  100. file_name = Field(FILE, verbose_name='??', hint='????????2M????????')
  101. name = Field(str, verbose_name='??????', max_length=255)
  102. enabled = Field(bool, verbose_name='??????', default=False)
  103. created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
  104. # Create Replies for a topic
  105. class ForumPost(Model):#can't edit...??
  106. topic = Reference('forumtopic', verbose_name='????', collection_name='topic_posts')
  107. posted_by = Reference('user', verbose_name='???', default=get_modified_user, auto_add=True, collection_name='user_posts')
  108. created_on = Field(datetime.datetime, verbose_name='????', auto_now_add=True)
  109. content = Field(TEXT, verbose_name='????', required=True)
  110. updated_on = Field(datetime.datetime, verbose_name='????')
  111. floor = Field(int, verbose_name='??', required=True)
  112. deleted = Field(bool, verbose_name='????', default=False)
  113. slug = Field(CHAR, max_length=32, verbose_name='?????')
  114. modified_by = Reference('user', verbose_name='???', collection_name='user_modified_posts')
  115. deleted_by = Reference('user', verbose_name='???', collection_name='user_deleted_posts')
  116. deleted_on = Field(datetime.datetime, verbose_name='????')
  117. reply_email = Field(bool, verbose_name='??????????')
  118. parent = SelfReference(verbose_name='????', collection_name='children_post')
  119. num_replies = Field(int, verbose_name='????',default = 0)
  120. last_reply_on = Field(datetime.datetime, verbose_name='??????')
  121. last_post_user = Reference('user', verbose_name='?????', collection_name='last_reply_user_post')
  122. @classmethod
  123. def OnInit(cls):
  124. Index('fpost_indx', cls.c.topic, cls.c.parent, cls.c.floor, unique=True)
  125. class AddForm:
  126. fields = ['content', 'slug', 'reply_email']