forked from FrederikBaerentsen/BrickTracker
Set storage
This commit is contained in:
@@ -4,6 +4,7 @@ from flask_login import login_required
|
||||
from ..configuration_list import BrickConfigurationList
|
||||
from .exceptions import exception_handler
|
||||
from ..set_owner_list import BrickSetOwnerList
|
||||
from ..set_storage_list import BrickSetStorageList
|
||||
from ..set_tag_list import BrickSetTagList
|
||||
from ..socket import MESSAGES
|
||||
|
||||
@@ -19,8 +20,9 @@ def add() -> str:
|
||||
|
||||
return render_template(
|
||||
'add.html',
|
||||
brickset_owners=BrickSetOwnerList.new().list(),
|
||||
brickset_tags=BrickSetTagList.new().list(),
|
||||
brickset_owners=BrickSetOwnerList.list(),
|
||||
brickset_storages=BrickSetStorageList.list(),
|
||||
brickset_tags=BrickSetTagList.list(),
|
||||
path=current_app.config['SOCKET_PATH'],
|
||||
namespace=current_app.config['SOCKET_NAMESPACE'],
|
||||
messages=MESSAGES
|
||||
@@ -36,8 +38,9 @@ def bulk() -> str:
|
||||
|
||||
return render_template(
|
||||
'add.html',
|
||||
brickset_owners=BrickSetOwnerList.new().list(),
|
||||
brickset_tags=BrickSetTagList.new().list(),
|
||||
brickset_owners=BrickSetOwnerList.list(),
|
||||
brickset_storages=BrickSetStorageList.list(),
|
||||
brickset_tags=BrickSetTagList.list(),
|
||||
path=current_app.config['SOCKET_PATH'],
|
||||
namespace=current_app.config['SOCKET_NAMESPACE'],
|
||||
messages=MESSAGES,
|
||||
|
||||
@@ -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(),
|
||||
)
|
||||
|
||||
@@ -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))
|
||||
@@ -4,6 +4,7 @@ from .exceptions import exception_handler
|
||||
from ..minifigure_list import BrickMinifigureList
|
||||
from ..set_owner_list import BrickSetOwnerList
|
||||
from ..set_status_list import BrickSetStatusList
|
||||
from ..set_storage_list import BrickSetStorageList
|
||||
from ..set_tag_list import BrickSetTagList
|
||||
from ..set_list import BrickSetList
|
||||
|
||||
@@ -17,8 +18,9 @@ def index() -> str:
|
||||
return render_template(
|
||||
'index.html',
|
||||
brickset_collection=BrickSetList().last(),
|
||||
brickset_owners=BrickSetOwnerList.new().list(),
|
||||
brickset_statuses=BrickSetStatusList.new().list(),
|
||||
brickset_tags=BrickSetTagList.new().list(),
|
||||
brickset_owners=BrickSetOwnerList.list(),
|
||||
brickset_statuses=BrickSetStatusList.list(),
|
||||
brickset_storages=BrickSetStorageList.list(as_class=True),
|
||||
brickset_tags=BrickSetTagList.list(),
|
||||
minifigure_collection=BrickMinifigureList().last(),
|
||||
)
|
||||
|
||||
@@ -19,6 +19,7 @@ from ..set import BrickSet
|
||||
from ..set_list import BrickSetList
|
||||
from ..set_owner_list import BrickSetOwnerList
|
||||
from ..set_status_list import BrickSetStatusList
|
||||
from ..set_storage_list import BrickSetStorageList
|
||||
from ..set_tag_list import BrickSetTagList
|
||||
from ..socket import MESSAGES
|
||||
|
||||
@@ -34,9 +35,10 @@ def list() -> str:
|
||||
return render_template(
|
||||
'sets.html',
|
||||
collection=BrickSetList().all(),
|
||||
brickset_owners=BrickSetOwnerList.new().list(),
|
||||
brickset_statuses=BrickSetStatusList.new().list(),
|
||||
brickset_tags=BrickSetTagList.new().list(),
|
||||
brickset_owners=BrickSetOwnerList.list(),
|
||||
brickset_statuses=BrickSetStatusList.list(),
|
||||
brickset_storages=BrickSetStorageList.list(as_class=True),
|
||||
brickset_tags=BrickSetTagList.list(),
|
||||
)
|
||||
|
||||
|
||||
@@ -46,7 +48,7 @@ def list() -> str:
|
||||
@exception_handler(__file__, json=True)
|
||||
def update_owner(*, id: str, metadata_id: str) -> Response:
|
||||
brickset = BrickSet().select_light(id)
|
||||
owner = BrickSetOwnerList.new().get(metadata_id)
|
||||
owner = BrickSetOwnerList.get(metadata_id)
|
||||
|
||||
state = owner.update_set_state(brickset, json=request.json)
|
||||
|
||||
@@ -59,20 +61,36 @@ def update_owner(*, id: str, metadata_id: str) -> Response:
|
||||
@exception_handler(__file__, json=True)
|
||||
def update_status(*, id: str, metadata_id: str) -> Response:
|
||||
brickset = BrickSet().select_light(id)
|
||||
status = BrickSetStatusList.new().get(metadata_id)
|
||||
status = BrickSetStatusList.get(metadata_id)
|
||||
|
||||
state = status.update_set_state(brickset, json=request.json)
|
||||
|
||||
return jsonify({'value': state})
|
||||
|
||||
|
||||
# Change the state of a storage
|
||||
@set_page.route('/<id>/storage', methods=['POST'])
|
||||
@login_required
|
||||
@exception_handler(__file__, json=True)
|
||||
def update_storage(*, id: str) -> Response:
|
||||
brickset = BrickSet().select_light(id)
|
||||
storage = BrickSetStorageList.get(
|
||||
request.json.get('value', ''), # type: ignore
|
||||
allow_none=True
|
||||
)
|
||||
|
||||
state = storage.update_set_value(brickset, state=storage.fields.id)
|
||||
|
||||
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.new().get(metadata_id)
|
||||
tag = BrickSetTagList.get(metadata_id)
|
||||
|
||||
state = tag.update_set_state(brickset, json=request.json)
|
||||
|
||||
@@ -127,9 +145,10 @@ def details(*, id: str) -> str:
|
||||
'set.html',
|
||||
item=BrickSet().select_specific(id),
|
||||
open_instructions=request.args.get('open_instructions'),
|
||||
brickset_owners=BrickSetOwnerList.new().list(),
|
||||
brickset_statuses=BrickSetStatusList.new().list(all=True),
|
||||
brickset_tags=BrickSetTagList.new().list(),
|
||||
brickset_owners=BrickSetOwnerList.list(),
|
||||
brickset_statuses=BrickSetStatusList.list(all=True),
|
||||
brickset_storages=BrickSetStorageList.list(as_class=True),
|
||||
brickset_tags=BrickSetTagList.list(),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user