more log
This commit is contained in:
parent
7c5a02bac7
commit
8d0dc822a7
5 changed files with 36 additions and 10 deletions
|
@ -338,6 +338,11 @@ class Item(SoftDeleteMixin, PolymorphicModel):
|
|||
def parent_uuid(self):
|
||||
return self.parent_item.uuid if self.parent_item else None
|
||||
|
||||
def log_action(self, changes):
|
||||
LogEntry.objects.log_create(
|
||||
self, action=LogEntry.Action.UPDATE, changes=changes
|
||||
)
|
||||
|
||||
def merge_to(self, to_item):
|
||||
if to_item is None:
|
||||
raise ValueError("cannot merge to an empty item")
|
||||
|
@ -525,7 +530,18 @@ class ExternalResource(models.Model):
|
|||
unique_together = [["id_type", "id_value"]]
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.pk}:{self.id_type}:{self.id_value if self.id_value else ''} ({self.url})"
|
||||
return f"{self.pk}:{self.id_type}:{self.id_value or ''} ({self.url})"
|
||||
|
||||
def unlink_from_item(self):
|
||||
LogEntry.objects.log_create(
|
||||
self.item,
|
||||
action=LogEntry.Action.UPDATE,
|
||||
changes={
|
||||
"__unlink__": [str(self), None],
|
||||
},
|
||||
)
|
||||
self.item = None
|
||||
self.save()
|
||||
|
||||
def get_site(self):
|
||||
"""place holder only, this will be injected from SiteManager"""
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from .common.models import Item, ItemSchema
|
||||
from .common.models import ExternalResource, Item, ItemSchema
|
||||
from .book.models import Edition, Work, Series, EditionSchema, EditionInSchema
|
||||
from .movie.models import Movie, MovieSchema, MovieInSchema
|
||||
from .tv.models import (
|
||||
|
@ -92,7 +92,8 @@ def init_catalog_search_models():
|
|||
def init_catalog_audit_log():
|
||||
for cls in Item.__subclasses__():
|
||||
auditlog.register(
|
||||
cls, exclude_fields=["metadata", "created_time", "edited_time"]
|
||||
cls,
|
||||
exclude_fields=["metadata", "created_time", "edited_time", "last_editor"],
|
||||
)
|
||||
|
||||
auditlog.register(
|
||||
|
|
|
@ -62,6 +62,12 @@ def fetch(request, url, is_refetch: bool = False, site: AbstractSite | None = No
|
|||
item = site.get_item()
|
||||
if item and not is_refetch:
|
||||
return redirect(item.url)
|
||||
if item and is_refetch:
|
||||
item.log_action(
|
||||
{
|
||||
"__refetch__": [url, None],
|
||||
}
|
||||
)
|
||||
job_id = enqueue_fetch(url, is_refetch)
|
||||
return render(
|
||||
request,
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
onclick="{% if item %}window.location='{{ item.url }}'{% else %}history.go(-1){% endif %}">
|
||||
</div>
|
||||
</form>
|
||||
{% if request.user.is_superuser %}
|
||||
{% if request.user.is_staff %}
|
||||
<div>
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
|
@ -66,15 +66,15 @@
|
|||
<tbody>
|
||||
{% for log in item.history.all %}
|
||||
<tr>
|
||||
<td colspan="3" style="padding-top:1em;">
|
||||
<td colspan="3">
|
||||
({{ log.id }}) <b>{{ log.actor }} {{ log.get_action_display }} on {{ log.timestamp }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
{% for key, value in log.changes_dict.items %}
|
||||
<tr {% cycle 'style="background:#eee;"' '' %}>
|
||||
<td>{{ key }}</td>
|
||||
<td style="padding-left: 8px">{{ value.0|default:"None" }}</td>
|
||||
<td>{{ value.1|default:"None" }}</td>
|
||||
<td>{{ value.0|default:"-" }}</td>
|
||||
<td>{{ value.1|default:"-" }}</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<p>No data.</p>
|
||||
|
|
|
@ -280,8 +280,7 @@ def unlink(request):
|
|||
if not res_id:
|
||||
raise BadRequest()
|
||||
resource = get_object_or_404(ExternalResource, id=res_id)
|
||||
resource.item = None
|
||||
resource.save()
|
||||
resource.unlink_from_item()
|
||||
return HttpResponseRedirect(request.META.get("HTTP_REFERER"))
|
||||
|
||||
|
||||
|
@ -308,9 +307,13 @@ def remove_unused_seasons(request, item_path, item_uuid):
|
|||
if request.method != "POST":
|
||||
raise BadRequest()
|
||||
item = get_object_or_404(Item, uid=get_uuid_or_404(item_uuid))
|
||||
for s in item.seasons.all():
|
||||
l = list(item.seasons.all())
|
||||
for s in l:
|
||||
if not s.journal_exists():
|
||||
s.delete()
|
||||
l = [s.id for s in l]
|
||||
l2 = [s.id for s in item.seasons.all()]
|
||||
item.log_action({"__remove_unused_seasons__": [l, l2]})
|
||||
return redirect(item.url)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue