X-Git-Url: http://git.veekun.com/zzz-floof.git/blobdiff_plain/2037ab1d9057d34ccf0457e8fb5c7c34b2d89083..5a8f3bd86e5fbcdd1ae077b15c17a66de14c091e:/floof/model/art.py diff --git a/floof/model/art.py b/floof/model/art.py index c21c74a..ff8035a 100644 --- a/floof/model/art.py +++ b/floof/model/art.py @@ -12,6 +12,7 @@ from pylons import config from floof.lib.file_storage import get_path, save_file from floof.lib.dbhelpers import find_or_create, update_or_create +import floof.model.comments class Art(Entity): title = Field(Unicode(120)) @@ -20,6 +21,10 @@ class Art(Entity): uploader = ManyToOne('User', required=True) tags = OneToMany('Tag') + discussion = ManyToOne('Discussion') + + user_relations = OneToMany('UserRelation') + def set_file(self, file): self.hash = save_file("art", file) @@ -95,5 +100,35 @@ class Rating(Entity): options = {-1:"sucks", 0:"undecided", 1:"good", 2:"great"} default = 0 - Rating.reverse_options = dict (zip(Rating.options.values(), Rating.options.keys())) + + + +class UserRelation(Entity): + user = ManyToOne("User") + art = ManyToOne("Art") + kind = Field(String) # by for of + creator = ManyToOne("User") + confirmed_by_related_user = Field(Boolean) + + # it is useful to record which authority figure on a given artwork + # confirmed the validity of this relation. + confirmed_by_authority = ManyToOne("User") + + def __init__(self, **kwargs): + super(UserRelation, self).__init__(**kwargs) + assert self.user and self.art and self.kind and self.creator + + if self.creator == self.user: + self.confirmed_by_related_user = True + # TODO: implement authorities + # if self.creator in self.art.authorities + # self.confirmed_by_authority = self.creator + + def __unicode__(self): + return "%s: %s" % (self.kind, self.related_user) + + + +# class CharacterRelation(Entity): +# pass