diff --git a/books/models.py b/books/models.py index 8c20abcc..5e39b4f5 100644 --- a/books/models.py +++ b/books/models.py @@ -160,6 +160,10 @@ class BookReview(Review): def url(self): return settings.APP_WEBSITE + reverse("books:retrieve_review", args=[self.id]) + @property + def item(self): + return self.book + class BookTag(Tag): book = models.ForeignKey( diff --git a/games/models.py b/games/models.py index 3fa9568f..f5f4c168 100644 --- a/games/models.py +++ b/games/models.py @@ -144,6 +144,10 @@ class GameReview(Review): def url(self): return settings.APP_WEBSITE + reverse("games:retrieve_review", args=[self.id]) + @property + def item(self): + return self.game + class GameTag(Tag): game = models.ForeignKey( diff --git a/movies/models.py b/movies/models.py index b3de0145..d99a1cdc 100644 --- a/movies/models.py +++ b/movies/models.py @@ -260,6 +260,7 @@ class MovieMark(Mark): class MovieReview(Review): movie = models.ForeignKey(Movie, on_delete=models.CASCADE, related_name='movie_reviews', null=True) + class Meta: constraints = [ models.UniqueConstraint( @@ -270,6 +271,10 @@ class MovieReview(Review): def url(self): return settings.APP_WEBSITE + reverse("movies:retrieve_review", args=[self.id]) + @property + def item(self): + return self.movie + class MovieTag(Tag): movie = models.ForeignKey(Movie, on_delete=models.CASCADE, related_name='movie_tags', null=True) diff --git a/music/models.py b/music/models.py index 775e7e3e..5c79a602 100644 --- a/music/models.py +++ b/music/models.py @@ -188,6 +188,10 @@ class SongReview(Review): def url(self): return settings.APP_WEBSITE + reverse("music:retrieve_song_review", args=[self.id]) + @property + def item(self): + return self.song + class SongTag(Tag): song = models.ForeignKey( @@ -235,6 +239,10 @@ class AlbumReview(Review): def url(self): return settings.APP_WEBSITE + reverse("music:retrieve_album_review", args=[self.id]) + @property + def item(self): + return self.album + class AlbumTag(Tag): album = models.ForeignKey( diff --git a/users/tasks.py b/users/tasks.py index 783b7800..a7c17f82 100644 --- a/users/tasks.py +++ b/users/tasks.py @@ -122,6 +122,23 @@ def export_marks_task(user): line = [title, summary, world_rating, source_url, timestamp, my_rating, tags, text, url, ''] ws.append(line) + review_heading = ['标题', '评论对象', '链接', '创建时间', '我的评分', '类型', '内容', '评论对象原始链接', '评论对象NeoDB链接'] + for ReviewModel, label in [(MovieReview, '影评'), (BookReview, '书评'), (AlbumReview, '乐评'), (GameReview, '游戏评论')]: + ws = wb.create_sheet(title=label) + reviews = ReviewModel.objects.filter(owner=user).order_by("-edited_time") + ws.append(review_heading) + for review in reviews: + title = review.title + target = "《" + review.item.title + "》" + url = review.url + timestamp = review.edited_time.strftime('%Y-%m-%d %H:%M:%S') + my_rating = None # (mark.rating / 2) if mark.rating else None + content = review.content + target_source_url = review.item.source_url + target_url = review.item.url + line = [title, target, url, timestamp, my_rating, label, content, target_source_url, target_url] + ws.append(line) + wb.save(filename=filename) user.preference.export_status['marks_pending'] = False user.preference.export_status['marks_file'] = filename diff --git a/users/templates/users/data.html b/users/templates/users/data.html index b0e62338..d9f6a19a 100644 --- a/users/templates/users/data.html +++ b/users/templates/users/data.html @@ -219,9 +219,9 @@