From 433d0e6df14aa047483dd507983cab841c8ed952 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 13 May 2023 15:11:05 -0400 Subject: [PATCH] reassign tvseason to show. --- catalog/templates/catalog_edit.html | 31 +++++++++++++++++++++-------- catalog/urls.py | 7 +++++++ catalog/views.py | 22 ++++++++++++++++++-- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/catalog/templates/catalog_edit.html b/catalog/templates/catalog_edit.html index 045fc361..85002483 100644 --- a/catalog/templates/catalog_edit.html +++ b/catalog/templates/catalog_edit.html @@ -71,14 +71,27 @@ {% endif %}
- {% if item.is_deleted and not request.user.is_superuser %} - 条目已被删除 - {% elif item.merged_to_item and not request.user.is_superuser %} - 条目已被合并 - {% elif not item.deletable and not request.user.is_superuser %} - 条目已被用户标记过 - {% else %}
+ {% if item.class_name == "tvseason" %} + {% if not item.show or request.user.is_superuser %} +
{% trans '将本季关联到电视剧' %}
+
+
+ {% csrf_token %} +
+ +
+
+ {% endif %} + {% endif %} + + {% if item.is_deleted and not request.user.is_superuser %} + 条目已被删除 + {% elif item.merged_to_item and not request.user.is_superuser %} + 条目已被合并 + {% elif not item.deletable and not request.user.is_superuser %} + 条目已被用户标记过 + {% else %}
{% trans '合并到另一条目' %}
@@ -87,6 +100,7 @@
+
{% trans '删除' %}
@@ -95,9 +109,10 @@ {% if item.is_deleted or item.merged_to_item %} disabled {% endif %} value="{% trans '提交' %}">
+ {% endif %}
- {% endif %}
+ {% endif %}
diff --git a/catalog/urls.py b/catalog/urls.py index 835a9cce..63f4927a 100644 --- a/catalog/urls.py +++ b/catalog/urls.py @@ -51,6 +51,13 @@ urlpatterns = [ delete, name="delete", ), + re_path( + r"^(?P" + + _get_all_url_paths() + + ")/(?P[A-Za-z0-9]{21,22})/assign_parent$", + assign_parent, + name="assign_parent", + ), re_path( r"^(?P" + _get_all_url_paths() diff --git a/catalog/views.py b/catalog/views.py index c076d5f6..d2ca3713 100644 --- a/catalog/views.py +++ b/catalog/views.py @@ -225,13 +225,31 @@ def unlink(request): return HttpResponseRedirect(request.META.get("HTTP_REFERER")) +@login_required +def assign_parent(request, item_path, item_uuid): + if request.method != "POST": + raise BadRequest() + item = get_object_or_404(Item, uid=get_uuid_or_404(item_uuid)) + if not request.user.is_superuser and not item.deletable: + raise PermissionDenied() + new_item = Item.get_by_url(request.POST.get("parent_item_url")) + if not new_item or new_item.is_deleted or new_item.merged_to_item_id: + raise BadRequest("Can't assign parent to a deleted or redirected item") + if item.__class__ != TVSeason or new_item.__class__ != TVShow: + raise BadRequest("Can't assign parent for this item") + _logger.warn(f"{request.user} assign {item} to {new_item}") + item.show = new_item + item.save(update_fields=["show"]) + return redirect(item.url) + + @login_required def merge(request, item_path, item_uuid): if request.method != "POST": raise BadRequest() - if not request.user.is_staff: - raise PermissionDenied() item = get_object_or_404(Item, uid=get_uuid_or_404(item_uuid)) + if not request.user.is_superuser and not item.deletable: + raise PermissionDenied() new_item = Item.get_by_url(request.POST.get("new_item_url")) if not new_item or new_item.is_deleted or new_item.merged_to_item_id: raise BadRequest("Can't merge to a deleted or redirected item")