fix language for tasks and top10

This commit is contained in:
Your Name 2024-12-26 12:52:06 -05:00 committed by Henri Dickson
parent efe6536423
commit 564146d317
2 changed files with 19 additions and 10 deletions

View file

@ -1,8 +1,11 @@
from auditlog.context import set_actor
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.db.models import Count, F, Q from django.db.models import Count, F, Q
from django.utils.translation import gettext_lazy as t
from catalog.models import * from catalog.models import *
from journal.models import * from journal.models import *
from users.middlewares import activate_language_for_user
from users.models import * from users.models import *
from users.models import APIdentity from users.models import APIdentity
@ -19,6 +22,8 @@ class Command(BaseCommand):
def handle(self, year: int, top: int, save: str, **options): # type: ignore def handle(self, year: int, top: int, save: str, **options): # type: ignore
collector = APIdentity.objects.get(username=save, local=True) if save else None collector = APIdentity.objects.get(username=save, local=True) if save else None
if collector:
activate_language_for_user(collector.user)
types = [ types = [
[Edition], [Edition],
[Movie], [Movie],
@ -31,7 +36,7 @@ class Command(BaseCommand):
mapping = item_content_types() mapping = item_content_types()
for typ in types: for typ in types:
cids = [mapping[t] for t in typ] cids = [mapping[t] for t in typ]
title = f"{year}年标记最多的{typ[0].category.label}" title = f"{year}年标记最多的{t(typ[0].category.label)}"
print(title) print(title)
top10 = list( top10 = list(
ShelfMember.objects.filter( ShelfMember.objects.filter(
@ -44,15 +49,16 @@ class Command(BaseCommand):
items = [(Item.objects.get(pk=i["item"]), i["c"]) for i in top10] items = [(Item.objects.get(pk=i["item"]), i["c"]) for i in top10]
_ = [print(c, i.display_title, i.absolute_url) for i, c in items] _ = [print(c, i.display_title, i.absolute_url) for i, c in items]
if collector: if collector:
print(f"Saving to {collector}") with set_actor(collector.user):
c, _ = Collection.objects.get_or_create( print(f"Saving to {collector}")
owner=collector, c, _ = Collection.objects.get_or_create(
title=title, owner=collector,
brief="*根据用户标记数统计*", title=title,
defaults={"visibility": 2}, brief="*根据用户标记数统计*",
) defaults={"visibility": 2},
for i in items: )
c.append_item(i) for i, cat in items:
c.append_item(i)
# top10 = list( # top10 = list(
# Comment.objects.filter( # Comment.objects.filter(

View file

@ -6,6 +6,8 @@ from loguru import logger
from typedmodels.models import TypedModel from typedmodels.models import TypedModel
from user_messages import api as msg from user_messages import api as msg
from users.middlewares import activate_language_for_user
from .user import User from .user import User
@ -61,6 +63,7 @@ class Task(TypedModel):
return return
task.state = cls.States.started task.state = cls.States.started
task.save() task.save()
activate_language_for_user(task.user)
with set_actor(task.user): with set_actor(task.user):
try: try:
task.run() task.run()