from elixir import *
from users import User

class SavedSearch(Entity):
    string = Field(Unicode) # I tried calling this query, but it broke elixir
    author = ManyToOne(User)
    
    def __unicode__(self):
        return self.string


class GalleryWidget(Entity):
    search = ManyToOne(SavedSearch)
    displayer = ManyToOne(User) # determines whose page should it should show up on
                                # Could be no-ones, if it's just a template.
    
    # Needs some fields for position on your page

    @property
    def query(self):
        return self.search.query
    
    @query.setter
    def query(self, value):
        # TODO: should we delete the possibly orphaned saved search?
        if not self.displayer:
            # 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=self.displayer, query=value)