reassign tvseason to show.
This commit is contained in:
parent
6c37c0fd6f
commit
433d0e6df1
3 changed files with 50 additions and 10 deletions
|
@ -71,14 +71,27 @@
|
|||
{% endif %}
|
||||
|
||||
<div class="aside-section-wrapper">
|
||||
{% if item.is_deleted and not request.user.is_superuser %}
|
||||
<i>条目已被删除</i>
|
||||
{% elif item.merged_to_item and not request.user.is_superuser %}
|
||||
<i>条目已被合并</i>
|
||||
{% elif not item.deletable and not request.user.is_superuser %}
|
||||
<i>条目已被用户标记过</i>
|
||||
{% else %}
|
||||
<div class="action-panel">
|
||||
{% if item.class_name == "tvseason" %}
|
||||
{% if not item.show or request.user.is_superuser %}
|
||||
<div class="action-panel__label">{% trans '将本季关联到电视剧' %} </div>
|
||||
<div class="action-panel__button-group">
|
||||
<form method="post" action="{% url 'catalog:assign_parent' item.url_path item.uuid %}" onsubmit="return confirm('本操作不可撤销。确认合并吗?');">
|
||||
{% csrf_token %}
|
||||
<input type="url" name="parent_item_url" placeholder="目标条目URL" value="{{ item.show.absolute_url }}" required><br>
|
||||
<input class="button" type="submit" value="{% trans '提交' %}">
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if item.is_deleted and not request.user.is_superuser %}
|
||||
<i>条目已被删除</i>
|
||||
{% elif item.merged_to_item and not request.user.is_superuser %}
|
||||
<i>条目已被合并</i>
|
||||
{% elif not item.deletable and not request.user.is_superuser %}
|
||||
<i>条目已被用户标记过</i>
|
||||
{% else %}
|
||||
<div class="action-panel__label">{% trans '合并到另一条目' %} </div>
|
||||
<div class="action-panel__button-group">
|
||||
<form method="post" action="{% url 'catalog:merge' item.url_path item.uuid %}" onsubmit="return confirm('本操作不可撤销。确认合并吗?');">
|
||||
|
@ -87,6 +100,7 @@
|
|||
<input class="button" type="submit" value="{% trans '提交' %}">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="action-panel__label">{% trans '删除' %} </div>
|
||||
<div class="action-panel__button-group">
|
||||
<form method="post" action="{% url 'catalog:delete' item.url_path item.uuid %}" onsubmit="return confirm('本操作不可撤销。确认删除吗?');">
|
||||
|
@ -95,9 +109,10 @@
|
|||
{% if item.is_deleted or item.merged_to_item %} disabled {% endif %} value="{% trans '提交' %}">
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="single-section-wrapper" id="main">
|
||||
|
|
|
@ -51,6 +51,13 @@ urlpatterns = [
|
|||
delete,
|
||||
name="delete",
|
||||
),
|
||||
re_path(
|
||||
r"^(?P<item_path>"
|
||||
+ _get_all_url_paths()
|
||||
+ ")/(?P<item_uuid>[A-Za-z0-9]{21,22})/assign_parent$",
|
||||
assign_parent,
|
||||
name="assign_parent",
|
||||
),
|
||||
re_path(
|
||||
r"^(?P<item_path>"
|
||||
+ _get_all_url_paths()
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Add table
Reference in a new issue