from elixir import *
# from users import User

from floof.lib.search import do_search

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

    def __unicode__(self):
        return self.string

    @property
    def results(self):
        return do_search(self.string)



class GalleryWidget(Entity):
    page = ManyToOne('UserPage')
    search = ManyToOne(SavedSearch)

    # NOTE: no longer needed now that we have pages, I guess.
    # 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 string(self):
        return self.search

    @string.setter
    def string(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=getattr(self,"author",None), string=value)
