models.py
3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from django.db import models
from django.core import validators
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from topics.decorators import always_as_child
from categories.models import Category
from subjects.models import Subject
from topics.models import KnowsChild, Resource
from users.models import User
def validate_img_extension(value):
valid_formats = ['image/jpeg','image/x-citrix-jpeg','image/png','image/x-citrix-png','image/x-png']
if hasattr(value.file, 'content_type'):
if not value.file.content_type in valid_formats:
raise ValidationError(_('File not supported.'))
class Mural(KnowsChild):
action = models.CharField(_('Action'), max_length = 100, default = "comment", choices = (("comment", _("Comment")), ("help", _("Ask for Help"))))
post = models.TextField(_('Post'), blank = True)
image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/', validators = [validate_img_extension])
user = models.ForeignKey(User, verbose_name = _('User'), related_name = "post_user", null = True)
create_date = models.DateTimeField(_('Create Date'), auto_now_add = True)
last_update = models.DateTimeField(_('Last Update'), auto_now = True)
edited = models.BooleanField(_('Edited'), default = False)
@always_as_child
def get_id(self):
pass
@always_as_child
def update_link(self):
pass
@always_as_child
def delete_link(self):
pass
class GeneralPost(Mural):
space = models.IntegerField(_('Space'), default = 0, blank = True)
def get_id(self):
return self.id
def update_link(self):
return "mural:update_general"
def delete_link(self):
return "mural:delete_general"
class CategoryPost(Mural):
space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category')
def get_id(self):
return self.id
def get_id(self):
return self.id
def update_link(self):
return ""
def delete_link(self):
return ""
class SubjectPost(Mural):
space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject')
resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True)
def update_link(self):
return ""
def delete_link(self):
return ""
class Comment(models.Model):
comment = models.TextField(_('Comment'), blank = True)
image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/comments/', validators = [validate_img_extension])
post = models.ForeignKey(Mural, verbose_name = _('Post'), related_name = 'comment_post', null = True)
user = models.ForeignKey(User, verbose_name = _('User'), related_name = "comment_user", null = True)
create_date = models.DateTimeField(_('Create Date'), auto_now_add = True)
last_update = models.DateTimeField(_('Last Update'), auto_now = True)
edited = models.BooleanField(_('Edited'), default = False)
"""
Model to handle posts visualizations
"""
class MuralVisualizations(models.Model):
viewed = models.BooleanField(_('Viewed'), default = False)
post = models.ForeignKey(Mural, verbose_name = _('Post'), related_name = 'visualization_post', null = True)
comment = models.ForeignKey(Comment, verbose_name = _('Comment'), related_name = 'visualization_comment', null = True)
user = models.ForeignKey(User, verbose_name = _('User'), related_name = "visualization_user", null = True)
"""
Model to handle users favorite posts
"""
class MuralFavorites(models.Model):
post = models.ForeignKey(Mural, verbose_name = _('Post'), related_name = 'favorites_post', null = True)
user = models.ForeignKey(User, verbose_name = _('User'), related_name = "favorites_user", null = True)