items no one has ever marked can be deleted.
This commit is contained in:
parent
c89ebea5ac
commit
1415b49744
3 changed files with 23 additions and 11 deletions
|
@ -70,10 +70,12 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if request.user.is_staff %}
|
||||
<div class="aside-section-wrapper">
|
||||
<div class="action-panel">
|
||||
|
||||
{% if item.is_deleted %}
|
||||
<i>条目已被删除</i>
|
||||
{% else %}
|
||||
{% if request.user.is_staff %}
|
||||
<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('Confirm merging?');">
|
||||
|
@ -82,21 +84,21 @@
|
|||
<input class="button" type="submit" value="{% trans '提交' %}">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
<div class="action-panel__label">{% trans '删除' %} </div>
|
||||
{% if item.deletable or request.user.is_superuser %}
|
||||
<div class="action-panel__button-group">
|
||||
<form method="post" action="{% url 'catalog:delete' item.url_path item.uuid %}" onsubmit="return confirm('Confirm deletion?');">
|
||||
<form method="post" action="{% url 'catalog:delete' item.url_path item.uuid %}" onsubmit="return confirm('确认删除吗?');">
|
||||
{% csrf_token %}
|
||||
<input class="button" type="submit" value="{% trans '提交' %}">
|
||||
</form>
|
||||
</div>
|
||||
{% else %}
|
||||
<i>条目已被用户标记过</i>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if item.is_deteled %}
|
||||
<!-- TODO undelete -->
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
|
@ -185,9 +185,9 @@ def edit(request, item_path, item_uuid):
|
|||
def delete(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()
|
||||
for res in item.external_resources.all():
|
||||
res.item = None
|
||||
res.save()
|
||||
|
|
|
@ -1150,3 +1150,13 @@ def update_journal_for_merged_item(legacy_item_uuid):
|
|||
f"deleted piece {p} when merging {cls.__name__}: {legacy_item} -> {new_item}"
|
||||
)
|
||||
p.delete()
|
||||
|
||||
|
||||
def journal_exists_for_item(item):
|
||||
for cls in list(Content.__subclasses__()) + list(ListMember.__subclasses__()):
|
||||
if cls.objects.filter(item=item).exists():
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
Item.deletable = property(journal_exists_for_item)
|
||||
|
|
Loading…
Add table
Reference in a new issue