summaryrefslogtreecommitdiff
path: root/cli/app
diff options
context:
space:
mode:
Diffstat (limited to 'cli/app')
-rw-r--r--cli/app/controllers/crud_controller.py2
-rw-r--r--cli/app/controllers/page_controller.py19
-rw-r--r--cli/app/sql/models/page.py2
-rw-r--r--cli/app/sql/models/tile.py2
-rw-r--r--cli/app/sql/versions/202006041801_add_sort_order_to_tiles.py29
5 files changed, 52 insertions, 2 deletions
diff --git a/cli/app/controllers/crud_controller.py b/cli/app/controllers/crud_controller.py
index 7692d26..c1bde8d 100644
--- a/cli/app/controllers/crud_controller.py
+++ b/cli/app/controllers/crud_controller.py
@@ -108,7 +108,7 @@ class CrudView(FlaskView):
if item:
raw_form = MultiDict(request.json) if request.json is not None else request.form
form = self.form(raw_form, obj=item)
- print(item.toJSON())
+ # print(item.toJSON())
if form.validate():
form.populate_obj(item)
self.on_update(session, raw_form, item)
diff --git a/cli/app/controllers/page_controller.py b/cli/app/controllers/page_controller.py
index b6bfaa8..3da2068 100644
--- a/cli/app/controllers/page_controller.py
+++ b/cli/app/controllers/page_controller.py
@@ -28,6 +28,25 @@ class PageView(CrudView):
def on_destroy(self, session, item):
session.query(Tile).filter(Tile.page_id == item.id).delete(synchronize_session=False)
+ @route('/sort/<int:page_id>', methods=['POST'])
+ def set_sort_order(self, page_id):
+ page = session.query(Page).get(page_id)
+ if not page:
+ session.close()
+ return jsonify({
+ 'status': 'error',
+ 'error': 'page not found'
+ })
+
+ print(request.json)
+
+ result = {
+ 'status': 'ok',
+ # 'res': page.toFullJSON() if hasattr(page, 'toFullJSON') else page.toJSON(),
+ }
+ session.close()
+ return jsonify(result)
+
@route('/name/<graph_path>/<page_path>', methods=['GET'])
def get_name(self, graph_path: str, page_path: str):
"""
diff --git a/cli/app/sql/models/page.py b/cli/app/sql/models/page.py
index 2e6bbad..960ffd7 100644
--- a/cli/app/sql/models/page.py
+++ b/cli/app/sql/models/page.py
@@ -22,7 +22,7 @@ class Page(Base):
created_at = Column(UtcDateTime(), default=utcnow())
updated_at = Column(UtcDateTime(), onupdate=utcnow())
- tiles = relationship("Tile", foreign_keys="Tile.page_id", lazy='dynamic')
+ tiles = relationship("Tile", foreign_keys="Tile.page_id", lazy='dynamic', order_by="asc(Tile.sort_order)")
def toJSON(self):
return {
diff --git a/cli/app/sql/models/tile.py b/cli/app/sql/models/tile.py
index 7dfa80b..3f6ce31 100644
--- a/cli/app/sql/models/tile.py
+++ b/cli/app/sql/models/tile.py
@@ -20,6 +20,7 @@ class Tile(Base):
page_id = Column(Integer, ForeignKey('page.id'), nullable=True)
target_page_id = Column(Integer, ForeignKey('page.id'), nullable=True)
type = Column(String(16, convert_unicode=True), nullable=False)
+ sort_order = Column(Integer, default=0)
settings = Column(JSON, default={}, nullable=True)
created_at = Column(UtcDateTime(), default=utcnow())
updated_at = Column(UtcDateTime(), onupdate=utcnow())
@@ -31,6 +32,7 @@ class Tile(Base):
'page_id': self.page_id,
'target_page_id': self.target_page_id,
'type': self.type,
+ 'sort_order': self.sort_order,
'settings': self.settings,
'created_at': self.created_at,
'updated_at': self.updated_at,
diff --git a/cli/app/sql/versions/202006041801_add_sort_order_to_tiles.py b/cli/app/sql/versions/202006041801_add_sort_order_to_tiles.py
new file mode 100644
index 0000000..2c670a8
--- /dev/null
+++ b/cli/app/sql/versions/202006041801_add_sort_order_to_tiles.py
@@ -0,0 +1,29 @@
+"""add sort order to tiles
+
+Revision ID: 91a729020584
+Revises: 453787357254
+Create Date: 2020-06-04 18:01:33.482300
+
+"""
+from alembic import op
+import sqlalchemy as sa
+import sqlalchemy_utc
+
+
+# revision identifiers, used by Alembic.
+revision = '91a729020584'
+down_revision = '453787357254'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('tile', sa.Column('sort_order', sa.Integer(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('tile', 'sort_order')
+ # ### end Alembic commands ###