75d3bd6 by Anon Ray at 2014-02-19 1
# coding utf-8
2
# classes/sweet.py
3
# class:: Sweet
4
5
from datetime import datetime
6
7
from swtstore.classes.database import db
8
# custom SQLAlchemy type JSONType
9
from swtstore.classes.models.types import JSONType
10
from swtstore.classes.utils import urlnorm # normalize URLs
11
12
class Sweet(db.Model):
13
    """ customary docstring """
14
15
    __tablename__ = 'sweets'
16
17
    id = db.Column(db.Integer, primary_key=True)
18
d120774 by Anon Ray at 2014-03-08 19
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
20
    who = db.relationship('User')
75d3bd6 by Anon Ray at 2014-02-19 21
22
    context_id = db.Column(db.Integer, db.ForeignKey('contexts.id'))
d120774 by Anon Ray at 2014-03-08 23
    what = db.relationship('Context')
75d3bd6 by Anon Ray at 2014-02-19 24
25
    where = db.Column(db.String, nullable=False)
26
27
    how = db.Column(JSONType)
28
29
    created = db.Column(db.DateTime, default=datetime.utcnow)
30
31
32
    def __init__(self, who, what, where, how):
33
        print 'initing sweet..'
34
        self.who = who
35
        self.what = what
36
        self.where = urlnorm(where)
37
        self.how = how
38
39
40
    def __repr__(self):
d120774 by Anon Ray at 2014-03-08 41
        return '[Sweet Object: <%s : @%s: #%s : %s>]' % (self.id, self.who,
75d3bd6 by Anon Ray at 2014-02-19 42
                                                        self.what, self.where)
43
44
    def __str__(self):
45
        return '[Sweet Object: <%s : @%s: #%s : %s>]' % (self.id, self.who,
46
                                                        self.what, self.where)
47
48
    # return a dictionary of data members
49
    def to_dict(self):
d120774 by Anon Ray at 2014-03-08 50
        print self.created
75d3bd6 by Anon Ray at 2014-02-19 51
        return {
d120774 by Anon Ray at 2014-03-08 52
            'id': self.id,
f867edb by Anon Ray at 2014-04-10 53
            'who': self.who.username,
54
            'user_id': self.user_id,
d120774 by Anon Ray at 2014-03-08 55
            'what': self.what.name,
56
            'context_id': self.context_id,
75d3bd6 by Anon Ray at 2014-02-19 57
            'where': self.where,
58
            'how': self.how,
d120774 by Anon Ray at 2014-03-08 59
            'created': self.created.isoformat()
75d3bd6 by Anon Ray at 2014-02-19 60
        }
61
62
63
    # create and persist the sweet to the database
64
    def persist(self):
65
66
        db.session.add(self)
67
        db.session.commit()
68
69