Comment posting support.
[zzz-floof.git] / floof / model / users.py
index d4a679a..e2afd17 100644 (file)
@@ -6,18 +6,51 @@
 
 # from elixir import Entity, Field, Unicode, belongs_to, has_many
 from elixir import *
+from search import GalleryWidget
 
 class User(Entity):
     name = Field(Unicode(20))
     uploads = OneToMany('Art')
     has_many('identity_urls', of_kind='IdentityURL')
     searches = OneToMany('SavedSearch')
-    galleries = OneToMany('GalleryWidget')
-    
+    # galleries = OneToMany('GalleryWidget')
+    pages = OneToMany('UserPage', inverse="owner")
+    primary_page = OneToOne('UserPage', inverse="owner")
+
+
     def __unicode__(self):
         return self.name
 
+    def __init__(self, **kwargs):
+        super(User, self).__init__(**kwargs)
+
+
+
+        # TODO: have this clone a standard starter page
+        self.primary_page = UserPage(owner=self, title="default", visible=True)
+
+        # a starter gallery, just for fun
+        gallery = GalleryWidget(owner=self, string="awesome")
+        self.primary_page.galleries.append(gallery)
+
+
 class IdentityURL(Entity):
     url = Field(Unicode(255))
     belongs_to('user', of_kind='User')
 
+
+
+class UserPage(Entity):
+    """A user can have multiple pages, though by default they only have one visible.
+    This is so that they can keep some nice themed pages lying around for special occasions.
+    Page templates that provide familiar interfaces will also be UserPage records.  Users will
+    see a panel full of them, and they can choose to clone those template pages to their own page list.
+    If more than one is set to visible, there would be tabs.
+
+     """
+
+    owner = ManyToOne('User', inverse="pages")
+    title = Field(String)
+
+    visible = Field(Boolean)
+    galleries = OneToMany('GalleryWidget')
\ No newline at end of file