improve recast
This commit is contained in:
parent
9811c3c370
commit
de64b43262
2 changed files with 39 additions and 14 deletions
|
@ -41,23 +41,36 @@
|
|||
{% if item.class_name == "movie" or item.class_name == "tvshow" %}
|
||||
<details>
|
||||
<summary>{% trans '切换分类' %}</summary>
|
||||
<form method="post"
|
||||
action="{% url 'catalog:recast' item.url_path item.uuid %}"
|
||||
onsubmit="return confirm('确认切换吗?');">
|
||||
{% csrf_token %}
|
||||
{% if item.class_name == "movie" %}
|
||||
{% if item.class_name == "movie" %}
|
||||
<form method="post"
|
||||
action="{% url 'catalog:recast' item.url_path item.uuid %}"
|
||||
onsubmit="return confirm('确认切换吗?');">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" value="tvshow" name="class">
|
||||
<input class="contrast" type="submit" value="{% trans '更改为剧集' %}">
|
||||
{% endif %}
|
||||
{% if item.class_name == "tvshow" %}
|
||||
{% if item.all_seasons %}
|
||||
<i>⛔️ 条目下有子项</i>
|
||||
{% else %}
|
||||
</form>
|
||||
{% elif item.class_name == "tvshow" %}
|
||||
{% if item.all_seasons %}
|
||||
<i>⛔️ 条目下有子项</i>
|
||||
{% else %}
|
||||
<form method="post"
|
||||
action="{% url 'catalog:recast' item.url_path item.uuid %}"
|
||||
onsubmit="return confirm('确认切换吗?');">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" value="movie" name="class">
|
||||
<input class="contrast" type="submit" value="{% trans '更改为电影' %}">
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% if request.user.is_superuser %}
|
||||
<form method="post"
|
||||
action="{% url 'catalog:recast' item.url_path item.uuid %}"
|
||||
onsubmit="return confirm('确认切换吗?');">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" value="tvseason" name="class">
|
||||
<input class="contrast" type="submit" value="{% trans '更改为单季' %}">
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</details>
|
||||
{% endif %}
|
||||
{% if item.class_name == "tvseason" %}
|
||||
|
|
|
@ -229,9 +229,21 @@ def recast(request, item_path, item_uuid):
|
|||
raise BadRequest()
|
||||
item = get_object_or_404(Item, uid=get_uuid_or_404(item_uuid))
|
||||
cls = request.POST.get("class")
|
||||
model = TVShow if cls == "tvshow" else (Movie if cls == "movie" else None)
|
||||
model = (
|
||||
TVShow
|
||||
if cls == "tvshow"
|
||||
else (Movie if cls == "movie" else (TVSeason if cls == "tvseason" else None))
|
||||
)
|
||||
if not model:
|
||||
raise BadRequest()
|
||||
raise BadRequest("Invalid target")
|
||||
if item.__class__ == model:
|
||||
raise BadRequest("Same target")
|
||||
_logger.warn(f"{request.user} recasting {item} to {model}")
|
||||
if item.__class__ == TVShow:
|
||||
for season in item.seasons.all():
|
||||
_logger.warn(f"{request.user} recast orphaning season {season}")
|
||||
season.show = None
|
||||
season.save(update_fields=["show"])
|
||||
new_item = item.recast_to(model)
|
||||
return redirect(new_item.url)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue