This commit is contained in:
2025-01-31 18:08:53 +01:00
parent 5ad94078ed
commit f34bbe0602
36 changed files with 424 additions and 30 deletions
+4
View File
@@ -5,6 +5,8 @@ from ..configuration_list import BrickConfigurationList
from .exceptions import exception_handler
from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList
from ..socket import MESSAGES
add_page = Blueprint('add', __name__, url_prefix='/add')
@@ -20,6 +22,7 @@ def add() -> str:
return render_template(
'add.html',
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(),
path=current_app.config['SOCKET_PATH'],
namespace=current_app.config['SOCKET_NAMESPACE'],
messages=MESSAGES
@@ -36,6 +39,7 @@ def bulk() -> str:
return render_template(
'add.html',
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(),
path=current_app.config['SOCKET_PATH'],
namespace=current_app.config['SOCKET_NAMESPACE'],
messages=MESSAGES,
+11 -2
View File
@@ -12,6 +12,8 @@ from ...set_owner import BrickSetOwner
from ...set_owner_list import BrickSetOwnerList
from ...set_status import BrickSetStatus
from ...set_status_list import BrickSetStatusList
from ...set_tag import BrickSetTag
from ...set_tag_list import BrickSetTagList
from ...sql_counter import BrickCounter
from ...sql import BrickSQL
from ...theme_list import BrickThemeList
@@ -32,6 +34,7 @@ def admin() -> str:
database_version: int = -1
metadata_owners: list[BrickSetOwner] = []
metadata_statuses: list[BrickSetStatus] = []
metadata_tags: list[BrickSetTag] = []
nil_minifigure_name: str = ''
nil_minifigure_url: str = ''
nil_part_name: str = ''
@@ -46,6 +49,7 @@ def admin() -> str:
metadata_owners = BrickSetOwnerList(BrickSetOwner).list()
metadata_statuses = BrickSetStatusList(BrickSetStatus).list(all=True)
metadata_tags = BrickSetTagList(BrickSetTag).list()
except Exception as e:
database_exception = e
@@ -72,6 +76,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_tag = request.args.get('open_tag', None)
open_theme = request.args.get('open_theme', None)
open_database = (
@@ -81,6 +86,7 @@ def admin() -> str:
open_owner is None and
open_retired is None and
open_status is None and
open_tag is None and
open_theme is None
)
@@ -95,20 +101,23 @@ def admin() -> str:
instructions=BrickInstructionsList(),
metadata_owners=metadata_owners,
metadata_statuses=metadata_statuses,
metadata_tags=metadata_tags,
nil_minifigure_name=nil_minifigure_name,
nil_minifigure_url=nil_minifigure_url,
nil_part_name=nil_part_name,
nil_part_url=nil_part_url,
open_status=open_status,
open_database=open_database,
open_image=open_image,
open_instructions=open_instructions,
open_logout=open_logout,
open_owner=open_owner,
open_retired=open_retired,
open_status=open_status,
open_tag=open_tag,
open_theme=open_theme,
owner_error=request.args.get('owner_error'),
status_error=request.args.get('status_error'),
retired=BrickRetiredList(),
status_error=request.args.get('status_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_tag import BrickSetTag
admin_tag_page = Blueprint(
'admin_tag',
__name__,
url_prefix='/admin/tag'
)
# Add a metadata tag
@admin_tag_page.route('/add', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin.admin',
error_name='tag_error',
open_tag=True
)
def add() -> Response:
BrickSetTag().from_form(request.form).insert()
reload()
return redirect(url_for('admin.admin', open_tag=True))
# Delete the metadata tag
@admin_tag_page.route('<id>/delete', methods=['GET'])
@login_required
@exception_handler(__file__)
def delete(*, id: str) -> str:
return render_template(
'admin.html',
delete_tag=True,
tag=BrickSetTag().select_specific(id),
error=request.args.get('tag_error')
)
# Actually delete the metadata tag
@admin_tag_page.route('<id>/delete', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin_tag.delete',
error_name='tag_error'
)
def do_delete(*, id: str) -> Response:
tag = BrickSetTag().select_specific(id)
tag.delete()
reload()
return redirect(url_for('admin.admin', open_tag=True))
# Rename the metadata tag
@admin_tag_page.route('<id>/rename', methods=['POST'])
@login_required
@exception_handler(
__file__,
post_redirect='admin.admin',
error_name='tag_error',
open_tag=True
)
def rename(*, id: str) -> Response:
tag = BrickSetTag().select_specific(id)
tag.from_form(request.form).rename()
reload()
return redirect(url_for('admin.admin', open_tag=True))
+3
View File
@@ -6,6 +6,8 @@ from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList
from ..set_status import BrickSetStatus
from ..set_status_list import BrickSetStatusList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList
from ..set_list import BrickSetList
index_page = Blueprint('index', __name__)
@@ -20,5 +22,6 @@ def index() -> str:
brickset_collection=BrickSetList().last(),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(),
minifigure_collection=BrickMinifigureList().last(),
)
+18 -1
View File
@@ -16,11 +16,13 @@ from .exceptions import exception_handler
from ..minifigure import BrickMinifigure
from ..part import BrickPart
from ..set import BrickSet
from ..set_list import BrickSetList
from ..set_owner import BrickSetOwner
from ..set_owner_list import BrickSetOwnerList
from ..set_status import BrickSetStatus
from ..set_status_list import BrickSetStatusList
from ..set_list import BrickSetList
from ..set_tag import BrickSetTag
from ..set_tag_list import BrickSetTagList
from ..socket import MESSAGES
logger = logging.getLogger(__name__)
@@ -37,6 +39,7 @@ def list() -> str:
collection=BrickSetList().all(),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(),
brickset_tags=BrickSetTagList(BrickSetTag).list(),
)
@@ -66,6 +69,19 @@ def update_status(*, id: str, metadata_id: str) -> Response:
return jsonify({'value': state})
# Change the state of a tag
@set_page.route('/<id>/tag/<metadata_id>', methods=['POST'])
@login_required
@exception_handler(__file__, json=True)
def update_tag(*, id: str, metadata_id: str) -> Response:
brickset = BrickSet().select_light(id)
tag = BrickSetTagList(BrickSetTag).get(metadata_id)
state = tag.update_set_state(brickset, json=request.json)
return jsonify({'value': state})
# Ask for deletion of a set
@set_page.route('/<id>/delete', methods=['GET'])
@login_required
@@ -116,6 +132,7 @@ def details(*, id: str) -> str:
open_instructions=request.args.get('open_instructions'),
brickset_owners=BrickSetOwnerList(BrickSetOwner).list(),
brickset_statuses=BrickSetStatusList(BrickSetStatus).list(all=True),
brickset_tags=BrickSetTagList(BrickSetTag).list(),
)