from peewee import CharField, DateTimeField, BooleanField, ForeignKeyField from peewee import create_model_tables from datetime import datetime from app import db, pad class User(db.Model): username = CharField() api_id = CharField(null=True) email = CharField() last_login = DateTimeField(default=datetime.now) active = BooleanField(default=True) admin = BooleanField(default=False) def __unicode__(self): return self.username class Group(db.Model): name = CharField(unique=True) api_id = CharField(null=True) public = BooleanField(default=False) def __unicode__(self): return self.name def save(self, force_insert=False, only=None): if self.id is None or force_insert: self.api_id = pad.createGroup() super(Group, self).save(force_insert=force_insert, only=only) def delete_instance(self, **kwargs): if self.api_id is not None: pad.deleteGroup(self.api_id) self.api_id = None self.save() super(Group, self).delete_instance(**kwargs) class Member(db.Model): group = ForeignKeyField(Group, related_name='members') user = ForeignKeyField(User, related_name='groups') manager = BooleanField(default=False) admin = BooleanField(default=False) def __unicode__(self): return "%s member of %s" % (self.user.username, self.group.name) def create_tables(): create_model_tables([User, Group, Member], fail_silently = True)