+ searches = OneToMany('SavedSearch')
+ # 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')
+
+ @classmethod
+ def is_valid_name(cls, name):
+ """Returns True iff the name is a valid username.
+
+ Only lowercase letters, numbers, and hyphens are allowed.
+
+ Names must also be at least one character long, but no more than 20,
+ and cannot start or end with a hyphen.
+ """
+ return re.match('^[-a-z0-9]{1,20}$', name) \
+ and name[0] != '-' and name[-1] != '-'
+
+
+ def __unicode__(self):
+ return self.name
+
+ def __str__(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)
+