Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/persistence
diff options
context:
space:
mode:
Diffstat (limited to 'persistence')
-rw-r--r--persistence/__init__.py0
-rw-r--r--persistence/joke.py94
-rw-r--r--persistence/jokebook.py85
-rw-r--r--persistence/jokemachinestate.py82
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