diff options
Diffstat (limited to 'cli/app')
| -rw-r--r-- | cli/app/controllers/crud_controller.py | 2 | ||||
| -rw-r--r-- | cli/app/controllers/page_controller.py | 19 | ||||
| -rw-r--r-- | cli/app/sql/models/page.py | 2 | ||||
| -rw-r--r-- | cli/app/sql/models/tile.py | 2 | ||||
| -rw-r--r-- | cli/app/sql/versions/202006041801_add_sort_order_to_tiles.py | 29 |
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 ### |
