summaryrefslogtreecommitdiff
path: root/cli/app/sql/models/page.py
diff options
context:
space:
mode:
Diffstat (limited to 'cli/app/sql/models/page.py')
-rw-r--r--cli/app/sql/models/page.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/cli/app/sql/models/page.py b/cli/app/sql/models/page.py
new file mode 100644
index 0000000..09470b5
--- /dev/null
+++ b/cli/app/sql/models/page.py
@@ -0,0 +1,34 @@
+from sqlalchemy import create_engine, Table, Column, Text, String, Integer, DateTime, JSON
+import sqlalchemy.sql.functions as func
+from sqlalchemy_utc import UtcDateTime, utcnow
+from wtforms_alchemy import ModelForm
+
+from app.sql.common import db, Base, Session
+
+from app.settings import app_cfg
+
+class Page(Base):
+ """Table for storing references to pages"""
+ __tablename__ = 'pages'
+ id = Column(Integer, primary_key=True)
+ graph_id = Column(Integer, ForeignKey('graph.id'), nullable=True)
+ path = Column(String(64, convert_unicode=True), nullable=False)
+ title = Column(String(64, convert_unicode=True), nullable=False)
+ description = Column(Text(convert_unicode=True), nullable=False)
+ settings = Column(JSON, default={}, nullable=True)
+ created_at = Column(UtcDateTime(), default=utcnow())
+ updated_at = Column(UtcDateTime(), default=utcnow())
+
+ tiles = relationship("Tile", secondary="tiles", lazy='dynamic')
+
+ def toJSON(self):
+ return {
+ 'id': self.id,
+ 'graph_id': self.graph_id,
+ 'path': self.path,
+ 'title': self.title,
+ 'description': self.description,
+ 'settings': self.settings,
+ 'created_at': self.created_at,
+ 'updated_at': self.updated_at,
+ }