Depend on wtforms.
[zzz-floof.git] / floof / model / users.py
index e2afd17..7601cf5 100644 (file)
@@ -16,10 +16,15 @@ class User(Entity):
     # galleries = OneToMany('GalleryWidget')
     pages = OneToMany('UserPage', inverse="owner")
     primary_page = OneToOne('UserPage', inverse="owner")
+    relationships = OneToMany('UserRelationship', inverse='user')
+    target_of_relationships = OneToMany('UserRelationship', inverse='target_user')
 
 
     def __unicode__(self):
         return self.name
+    
+    def __str__(self):
+        return self.name
 
     def __init__(self, **kwargs):
         super(User, self).__init__(**kwargs)
@@ -45,12 +50,31 @@ class UserPage(Entity):
     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.
-
-     """
-
+    If more than one is set to visible, there would be tabs.  The primary page is indicated in the user model.
+    """
+    
     owner = ManyToOne('User', inverse="pages")
     title = Field(String)
 
     visible = Field(Boolean)
-    galleries = OneToMany('GalleryWidget')
\ No newline at end of file
+    galleries = OneToMany('GalleryWidget')
+
+
+class UserRelationshipTypes(object):
+    IS_WATCHING = 1
+
+class UserRelationship(Entity):
+    """Represents some sort of connection between users.
+
+    For the moment, this means "watching".  Later, it may mean friending or
+    ignoring.
+
+    XXX: Watching should be made more general than this; it should have the
+    power of an arbitrary query per watched artist without being unintelligible
+    to users.
+    """
+
+    user = ManyToOne('User')
+    target_user = ManyToOne('User')
+    type = Field(Integer)  # UserRelationshipTypes above
+