diff options
Diffstat (limited to 'persistence')
-rw-r--r-- | persistence/__init__.py | 0 | ||||
-rw-r--r-- | persistence/joke.py | 94 | ||||
-rw-r--r-- | persistence/jokebook.py | 85 | ||||
-rw-r--r-- | persistence/jokemachinestate.py | 82 |
4 files changed, 261 insertions, 0 deletions
diff --git a/persistence/__init__.py b/persistence/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/persistence/__init__.py diff --git a/persistence/joke.py b/persistence/joke.py new file mode 100644 index 0000000..8523593 --- /dev/null +++ b/persistence/joke.py @@ -0,0 +1,94 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +from util.persistence import Persistent, PersistentProperty + + +class Joke(object): + __metaclass__ = Persistent + + @PersistentProperty + def id(): + '''some doc string''' + def default(self): return 0 + def get(self): return self.__id + def set(self, value): self.__id = value + + @PersistentProperty + def image(): + '''the image for the joke''' + def get(self): return self.__image + def set(self, value): self.__image = value + + @PersistentProperty + def image_blob(): + '''raw image data''' + def get(self): return self.__image_blob + def set(self, value): self.__image_blob = value + + @PersistentProperty + def text(): + '''the joke question''' + def get(self): return self.__text + def set(self, value): self.__text = value + + @PersistentProperty + def answer(): + '''the joke answer''' + def get(self): return self.__answer + def set(self, value): self.__answer = value + + @PersistentProperty + def joker(): + '''the author of the joke''' + def get(self): return self.__joker + def set(self, value): self.__joker = value + + @PersistentProperty + def joker_location(): + '''the location of the author''' + def get(self): return self.__joker_location + def set(self, value): self.__joker_location = value + + @PersistentProperty + def joker_country(): + '''the country of the author''' + def get(self): return self.__joker_country + def set(self, value): self.__joker_country = value + + @PersistentProperty + def show(): + '''should this joke be visible to others''' + def default(self): return False + def get(self): return self.__show + def set(self, value): self.__show = value + + + def test_data(self): + #self.image = 'resources/knockknock.png' + self.text = '''Knock, knock +Who's there ? +Alex. +Alex who?''' + self.answer = 'Alex plain later, just let me in!' + self.joker = 'hummingbird' + self.joker_location = 'Cape Town' + self.joker_country = 'South Africa' + self.show = True + + return self + + +
\ No newline at end of file diff --git a/persistence/jokebook.py b/persistence/jokebook.py new file mode 100644 index 0000000..acadf04 --- /dev/null +++ b/persistence/jokebook.py @@ -0,0 +1,85 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +from util.persistence import Persistent, PersistentProperty + + +class Jokebook(object): + __metaclass__ = Persistent + + @PersistentProperty + def id(): + '''object id''' + def default(self): return 0 + def get(self): return self.__id + def set(self, value): self.__id = value + + @PersistentProperty + def title(): + '''the title of this jokebook''' + def get(self): return self.__title + def set(self, value): self.__title = value + + @PersistentProperty + def image(): + '''the cover image of this jokebook''' + def get(self): return self.__image + def set(self, value): self.__image = value + + @PersistentProperty + def image_blob(): + '''raw image data''' + def get(self): return self.__image_blob + def set(self, value): self.__image_blob = value + + @PersistentProperty + def sound(): + '''the sound we must play on punchline''' + def get(self): return self.__sound + def set(self, value): self.__sound = value + + @PersistentProperty + def sound_blob(): + '''raw data for the sound''' + def get(self): return self.__sound_blob + def set(self, value): self.__sound_blob = value + + @PersistentProperty + def owner(): + '''the owner of this jokebook''' + def get(self): return self.__owner + def set(self, value): self.__owner = value + + @PersistentProperty + def jokes(): + '''the jokes in the jokebook''' + def default(self): return [] + def get(self): return self.__jokes + + @PersistentProperty + def submissions(): + '''jokes submitted to this jokebook pending approval''' + def default(self): return [] + def get(self): return self.__submissions + + + # TODO - this should really be transparent + @property + def next_joke_id(self): + if len(self.jokes) == 0: + return 1 + return max([joke.id for joke in self.jokes]) + 1 + +
\ No newline at end of file diff --git a/persistence/jokemachinestate.py b/persistence/jokemachinestate.py new file mode 100644 index 0000000..3d591cf --- /dev/null +++ b/persistence/jokemachinestate.py @@ -0,0 +1,82 @@ +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +from util.persistence import Persistent, PersistentProperty + +from persistence.jokebook import Jokebook +from persistence.joke import Joke + +class JokeMachineState(object): + __metaclass__ = Persistent + + @PersistentProperty + def id(): + '''object id''' + def default(self): return 0 + def get(self): return self.__id + def set(self, value): self.__id = value + + @PersistentProperty + def jokebooks(): + '''the jokebooks in this jokemachine''' + def default(self): return [] + def get(self): return self.__jokebooks + + @PersistentProperty + def version(): + '''The activity version used to create this Jokebook''' + def default(self): return 1 # TODO - pull from activity/activity.info + def get(self): return self.__version + + + @property + def next_jokebook_id(self): + if len(self.jokebooks) == 0: + return 1 + return max([jokebook.id for jokebook in self.jokebooks]) + 1 + + + def jokebook(self, id): + for jokebook in self.jokebooks: + if jokebook.id == id: + return jokebook + logging.error('Could not find jokebook with id %d' % d) + return None + + def test_data(self): + self.id = 1 + + # add some jokebooks with jokes + num_jokebooks = 0 + num_jokes = 2 + num_submissions = 2 + for jokebook_id in range(1, num_jokebooks + 1): + jokebook = Jokebook() + jokebook.id = jokebook_id + jokebook.owner = 'hummingbird' + jokebook.title = 'Jokebook ' + str(jokebook.id) + #jokebook.image = 'images/smile-big.png' + for joke_id in range(1, num_jokes + 1): + joke = Joke().test_data() + joke.id = joke_id + jokebook.jokes.append(joke) + for joke_id in range(1, num_submissions + 1): + joke = Joke().test_data() + joke.id = joke_id + jokebook.submissions.append(joke) + self.jokebooks.append(jokebook) + + return self +
\ No newline at end of file |