This repository was archived by the owner on Sep 29, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
96 lines (76 loc) · 2.29 KB
/
Copy pathmodels.py
File metadata and controls
96 lines (76 loc) · 2.29 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from sqlalchemy import Column, Integer, String, ForeignKey, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from json import JSONEncoder
Base = declarative_base()
class User(Base) :
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
picture = Column(String)
email = Column(String)
class AccessToken(Base) :
__tablename__ = 'access_tokens'
id = Column(Integer, primary_key=True)
token = Column(String)
created = Column(Date)
expires = Column(Date)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship(User)
class Category(Base):
__tablename__ = 'categories'
id = Column(Integer, primary_key=True)
name = Column(String)
items = relationship("Item")
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship(User)
def __repr__(self):
return "<Category(name='%s')>" % (self.name)
class Item(Base):
__tablename__ = 'items'
id = Column(Integer, primary_key=True)
name = Column(String)
description = Column(String)
category_id = Column(Integer, ForeignKey('categories.id'))
category = relationship(Category)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship(User)
picture = Column(String)
updated = Column(Date)
created = Column(Date)
def __repr__(self):
return "<Item(name='%s')>" % (self.name)
class CustomJSONEncoder(JSONEncoder) :
def default(self, obj) :
try:
if isinstance(obj, Item):
category = ""
if obj.category is not None :
category = obj.category.name
return {
"id": obj.id,
"name": obj.name,
"description": obj.description,
"category_id" : obj.category_id,
"user_id" : obj.user_id,
"picture" : obj.picture,
"category" : category,
"updated" : obj.updated.strftime('%Y-%m-%dT%H:%M:%SZ'),
"created" : obj.created.strftime('%Y-%m-%dT%H:%M:%SZ')
}
if isinstance(obj, Category):
items = []
if obj.items is not None :
items = obj.items
return {
"id": obj.id,
"name": obj.name,
"user_id" : obj.user_id,
"items" : items
}
iterable = iter(obj)
except TypeError:
pass
else:
return list(iterable)
return JSONEncoder.default(self, obj)