-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.py
61 lines (49 loc) · 2.11 KB
/
models.py
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
import datetime
from sqlalchemy import Column, Integer, String, DateTime, Enum, ForeignKey, Text
from sqlalchemy.orm import validates, relationship
from database import Base
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
class Device(db.Model):
__tablename__ = 'devices'
id = Column(Integer, primary_key=True)
name = Column(String(32), nullable=False)
description = Column(Text)
code = Column(String(30), unique=True, nullable=False)
date_created = Column(DateTime(timezone=True), default=datetime.datetime.utcnow)
date_updated = Column(DateTime(timezone=True), default=datetime.datetime.utcnow)
status = Column(Enum('enabled', 'disabled', 'deleted'), nullable=False)
@validates('name')
def validate_username(self, key, name):
if not name:
raise AssertionError('No name provided')
if len(name) > 32:
raise AssertionError('Name can contain max. 32 chars.')
return name
@validates('code')
def validate_code(self, key, code):
if not code:
raise AssertionError('No code provided')
if len(code) > 30:
raise AssertionError('Code can contain max. 32 chars.')
return code
class Content(db.Model):
__tablename__ = 'contents'
id = Column(Integer, primary_key=True)
name = Column(String(100))
description = Column(Text)
device = Column(Integer, ForeignKey("devices.id"))
device_relationship = relationship('Device', backref='contents')
date_created = Column(DateTime(timezone=True), default=datetime.datetime.utcnow)
date_updated = Column(DateTime(timezone=True), default=datetime.datetime.utcnow)
expire_date = Column(DateTime(timezone=True), default=datetime.datetime.utcnow)
status = Column(Enum('enabled', 'disabled', 'deleted'), nullable=False)
@validates('name')
def validate_username(self, key, name):
if not name:
raise AssertionError('No name provided')
if len(name) > 100:
raise AssertionError('Name can contain max. 100 chars.')
return name