X-Git-Url: http://git.veekun.com/zzz-floof.git/blobdiff_plain/f263f51648eef9739caa92e19ec45b32d7a1e49e..42398bc94b95b5a115396f14c3c1dde6fb6808a5:/floof/model/search.py diff --git a/floof/model/search.py b/floof/model/search.py index fb86f35..598999d 100644 --- a/floof/model/search.py +++ b/floof/model/search.py @@ -3,25 +3,30 @@ from elixir import * class SavedSearch(Entity): - string = Field(Unicode) # I tried calling this query, but it broke elixir - author = ManyToOne('User') - fork = ManyToOne("SavedSearch") + string = Field(Unicode, required=True) + author = ManyToOne('User', required=True) + fork = ManyToOne("SavedSearch", required=True) def __unicode__(self): return self.string - @property - def results(self): - # This caused some cyclic dependencies when I tried importing it - # at the module level. I wonder why that is... - from floof.lib.search import do_search - return do_search(self.string) - class GalleryWidget(Entity): - page = ManyToOne('UserPage') - search = ManyToOne(SavedSearch) + page = ManyToOne('UserPage', required=True) + search = ManyToOne(SavedSearch, required=True) + + def __init__(self, string=None, **kwargs): + owner = kwargs.get('owner', None) + if string: + self.search = SavedSearch(author=owner, string=string) + + page = kwargs.get('page', None) + if owner and not page: + page = author.primary_page + + super(GalleryWidget, self).__init__(**kwargs) + # NOTE: no longer needed now that we have pages, I guess. # displayer = ManyToOne('User') # determines whose page should it should show up on @@ -31,7 +36,7 @@ class GalleryWidget(Entity): @property def string(self): - return self.search + return self.search.string @string.setter def string(self, value): @@ -40,4 +45,4 @@ class GalleryWidget(Entity): # # TODO: may have to refactor this into an init if the key ordering is inconvenienc # raise "Oh no! This gallery needs a displayer to set on the saved search." - self.search = SavedSearch(author=getattr(self,"author",None), string=value) + self.search = SavedSearch(author=getattr(self, "author", None), string=value)