diff --git a/books/admin.py b/books/admin.py index 942dccb4..75df663b 100644 --- a/books/admin.py +++ b/books/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin from .models import * +from simple_history.admin import SimpleHistoryAdmin -admin.site.register(Book) +admin.site.register(Book, SimpleHistoryAdmin) admin.site.register(BookMark) admin.site.register(BookReview) admin.site.register(BookTag) diff --git a/books/models.py b/books/models.py index 5e39b4f5..8b23e9a6 100644 --- a/books/models.py +++ b/books/models.py @@ -6,6 +6,7 @@ from common.models import Entity, Mark, Review, Tag, MarkStatusEnum from common.utils import GenerateDateUUIDMediaFilePath from django.conf import settings from django.db.models import Q +from simple_history.models import HistoricalRecords BookMarkStatusTranslation = { @@ -60,6 +61,7 @@ class Book(Entity): cover = models.ImageField(_("cover picture"), upload_to=book_cover_path, default=settings.DEFAULT_BOOK_IMAGE, blank=True) contents = models.TextField(blank=True, default="") + history = HistoricalRecords() class Meta: constraints = [ diff --git a/common/scraper.py b/common/scraper.py index 29033058..94cae161 100644 --- a/common/scraper.py +++ b/common/scraper.py @@ -218,6 +218,7 @@ class AbstractScraper: form = cls.form_class(cls.raw_data, entity_cover) if form.is_valid(): form.instance.last_editor = request_user + form.instance._change_reason = 'scrape' form.save() cls.instance = form.instance else: diff --git a/games/admin.py b/games/admin.py index fe72bd9a..36cc44fa 100644 --- a/games/admin.py +++ b/games/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin from .models import * +from simple_history.admin import SimpleHistoryAdmin -admin.site.register(Game) +admin.site.register(Game, SimpleHistoryAdmin) admin.site.register(GameMark) admin.site.register(GameReview) admin.site.register(GameTag) diff --git a/games/models.py b/games/models.py index 63e86831..fba9e639 100644 --- a/games/models.py +++ b/games/models.py @@ -8,6 +8,7 @@ from common.models import Entity, Mark, Review, Tag, MarkStatusEnum from common.utils import ChoicesDictGenerator, GenerateDateUUIDMediaFilePath from django.utils import timezone from django.conf import settings +from simple_history.models import HistoricalRecords GameMarkStatusTranslation = { @@ -77,6 +78,8 @@ class Game(Entity): cover = models.ImageField(_("封面"), upload_to=game_cover_path, default=settings.DEFAULT_GAME_IMAGE, blank=True) + history = HistoricalRecords() + def __str__(self): return self.title diff --git a/movies/admin.py b/movies/admin.py index ca4d1b0e..bb2b1a54 100644 --- a/movies/admin.py +++ b/movies/admin.py @@ -1,7 +1,8 @@ from django.contrib import admin from .models import * +from simple_history.admin import SimpleHistoryAdmin -admin.site.register(Movie) +admin.site.register(Movie, SimpleHistoryAdmin) admin.site.register(MovieMark) admin.site.register(MovieReview) admin.site.register(MovieTag) diff --git a/movies/models.py b/movies/models.py index d99a1cdc..ae3a9990 100644 --- a/movies/models.py +++ b/movies/models.py @@ -10,6 +10,7 @@ from django.utils import timezone from django.conf import settings from django.db.models import Q import re +from simple_history.models import HistoricalRecords MovieMarkStatusTranslation = { @@ -170,6 +171,8 @@ class Movie(Entity): ############################################ is_series = models.BooleanField(default=False) + history = HistoricalRecords() + def __str__(self): if self.year: return self.title + f"({self.year})" diff --git a/music/admin.py b/music/admin.py index eb770458..33eb056d 100644 --- a/music/admin.py +++ b/music/admin.py @@ -1,11 +1,12 @@ from django.contrib import admin from .models import * +from simple_history.admin import SimpleHistoryAdmin -admin.site.register(Song) +admin.site.register(Song, SimpleHistoryAdmin) admin.site.register(SongMark) admin.site.register(SongReview) admin.site.register(SongTag) -admin.site.register(Album) +admin.site.register(Album, SimpleHistoryAdmin) admin.site.register(AlbumMark) admin.site.register(AlbumReview) admin.site.register(AlbumTag) diff --git a/music/models.py b/music/models.py index 5c79a602..131f9a14 100644 --- a/music/models.py +++ b/music/models.py @@ -8,6 +8,7 @@ from common.models import Entity, Mark, Review, Tag, SourceSiteEnum, MarkStatusE from common.utils import ChoicesDictGenerator, GenerateDateUUIDMediaFilePath from django.utils import timezone from django.conf import settings +from simple_history.models import HistoricalRecords MusicMarkStatusTranslation = { @@ -52,6 +53,8 @@ class Album(Entity): ) track_list = models.TextField(_("曲目"), blank=True, default="") + history = HistoricalRecords() + def __str__(self): return self.title @@ -121,6 +124,8 @@ class Song(Entity): album = models.ForeignKey( Album, models.SET_NULL, "album_songs", null=True, blank=True, verbose_name=_("所属专辑")) + history = HistoricalRecords() + def __str__(self): return self.title diff --git a/requirements.txt b/requirements.txt index 9133f995..d3177ab4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ django-hstore django-markdownx @ git+https://github.com/alphatownsman/django-markdownx.git@e69480c64ad9c5d0499f4a8625da78cf2bb7691b django-sass django-rq +django-simple-history django-hijack django-user-messages django-slack