summaryrefslogtreecommitdiffstats
path: root/models.py
blob: c6721c17a73df9229c9ff4014f522417f77789b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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)