Set storage

This commit is contained in:
2025-02-03 16:46:45 +01:00
parent ec7fab2a7a
commit 9aff7e622d
32 changed files with 538 additions and 88 deletions
+12 -3
View File
@@ -10,6 +10,8 @@ from ...rebrickable_image import RebrickableImage
from ...retired_list import BrickRetiredList
from ...set_owner import BrickSetOwner
from ...set_owner_list import BrickSetOwnerList
from ...set_storage import BrickSetStorage
from ...set_storage_list import BrickSetStorageList
from ...set_status import BrickSetStatus
from ...set_status_list import BrickSetStatusList
from ...set_tag import BrickSetTag
@@ -34,6 +36,7 @@ def admin() -> str:
database_version: int = -1
metadata_owners: list[BrickSetOwner] = []
metadata_statuses: list[BrickSetStatus] = []
metadata_storages: list[BrickSetStorage] = []
metadata_tags: list[BrickSetTag] = []
nil_minifigure_name: str = ''
nil_minifigure_url: str = ''
@@ -47,9 +50,10 @@ def admin() -> str:
database_version = database.version
database_counters = BrickSQL().count_records()
metadata_owners = BrickSetOwnerList.new().list()
metadata_statuses = BrickSetStatusList.new().list(all=True)
metadata_tags = BrickSetTagList.new().list()
metadata_owners = BrickSetOwnerList.list()
metadata_statuses = BrickSetStatusList.list(all=True)
metadata_storages = BrickSetStorageList.list()
metadata_tags = BrickSetTagList.list()
except Exception as e:
database_exception = e
@@ -76,6 +80,7 @@ def admin() -> str:
open_owner = request.args.get('open_owner', None)
open_retired = request.args.get('open_retired', None)
open_status = request.args.get('open_status', None)
open_storage = request.args.get('open_storage', None)
open_tag = request.args.get('open_tag', None)
open_theme = request.args.get('open_theme', None)
@@ -86,6 +91,7 @@ def admin() -> str:
open_owner is None and
open_retired is None and
open_status is None and
open_storage is None and
open_tag is None and
open_theme is None
)
@@ -101,6 +107,7 @@ def admin() -> str:
instructions=BrickInstructionsList(),
metadata_owners=metadata_owners,
metadata_statuses=metadata_statuses,
metadata_storages=metadata_storages,
metadata_tags=metadata_tags,
nil_minifigure_name=nil_minifigure_name,
nil_minifigure_url=nil_minifigure_url,
@@ -113,11 +120,13 @@ def admin() -> str:
open_owner=open_owner,
open_retired=open_retired,
open_status=open_status,
open_storage=open_storage,
open_tag=open_tag,
open_theme=open_theme,
owner_error=request.args.get('owner_error'),
retired=BrickRetiredList(),
status_error=request.args.get('status_error'),
storage_error=request.args.get('storage_error'),
tag_error=request.args.get('tag_error'),
theme=BrickThemeList(),
)
+84
View File
@@ -0,0 +1,84 @@
from flask import (
Blueprint,
redirect,
request,
render_template,
url_for,
)
from flask_login import login_required
from werkzeug.wrappers.response import Response
from ..exceptions import exception_handler
from ...reload import reload
from ...set_storage import BrickSetStorage
admin_storage_page = Blueprint(
'admin_storage',
__name__,
url_prefix='/admin/storage'
)
# Add a metadata storage
@admin_storage_page.route('/add', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin.admin',
error_name='storage_error',
open_storage=True
)
def add() -> Response:
BrickSetStorage().from_form(request.form).insert()
reload()
return redirect(url_for('admin.admin', open_storage=True))
# Delete the metadata storage
@admin_storage_page.route('<id>/delete', methods=['GET'])
@login_required
@exception_handler(__file__)
def delete(*, id: str) -> str:
return render_template(
'admin.html',
delete_storage=True,
storage=BrickSetStorage().select_specific(id),
error=request.args.get('storage_error')
)
# Actually delete the metadata storage
@admin_storage_page.route('<id>/delete', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin_storage.delete',
error_name='storage_error'
)
def do_delete(*, id: str) -> Response:
storage = BrickSetStorage().select_specific(id)
storage.delete()
reload()
return redirect(url_for('admin.admin', open_storage=True))
# Rename the metadata storage
@admin_storage_page.route('<id>/rename', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin.admin',
error_name='storage_error',
open_storage=True
)
def rename(*, id: str) -> Response:
storage = BrickSetStorage().select_specific(id)
storage.from_form(request.form).rename()
reload()
return redirect(url_for('admin.admin', open_storage=True))