Skip to content

Commit 8ee6402

Browse files
committed
add .current to TranslatedResourceQueryset + ResourceQueryset
1 parent 2a84126 commit 8ee6402

21 files changed

Lines changed: 84 additions & 54 deletions

File tree

pontoon/administration/forms.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ def __init__(self, *args, **kwargs):
123123
# If the project instance is available, filter resources for this project
124124
if kwargs.get("instance") and kwargs["instance"].project:
125125
project = kwargs["instance"].project
126-
self.fields["resources"].queryset = Resource.objects.filter(
127-
project=project
128-
).select_related()
126+
self.fields["resources"].queryset = (
127+
Resource.objects.current().filter(project=project).select_related()
128+
)
129129

130130

131131
TagInlineFormSet = inlineformset_factory(Project, Tag, form=TagInlineForm, extra=1)

pontoon/administration/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ def manage_project(request, slug=None, template="admin_project.html"):
306306
}
307307

308308
# Set locale in Translate link
309-
if Resource.objects.filter(project=project).exists() and locales_selected:
309+
if Resource.objects.current().filter(project=project).exists() and locales_selected:
310310
locale = (
311311
utils.get_project_locale_from_request(request, project.locales)
312312
or locales_selected[0].code
@@ -373,7 +373,7 @@ def _get_resource_for_database_project(project):
373373
374374
"""
375375
try:
376-
return Resource.objects.get(
376+
return Resource.objects.current().get(
377377
project=project,
378378
)
379379
except Resource.DoesNotExist:
@@ -492,7 +492,7 @@ def manage_project_strings(request, slug=None):
492492
# Get all strings, find the ones that changed, update them in the database.
493493
formset = EntityFormSet(request.POST, queryset=entities)
494494
if formset.is_valid():
495-
resource = Resource.objects.filter(project=project).first()
495+
resource = Resource.objects.current().filter(project=project).first()
496496
entity_max_order = entities.aggregate(Max("order"))["order__max"]
497497
try:
498498
# This line can purposefully cause an exception, and that

pontoon/base/models/locale.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def available(self):
5858
from pontoon.base.models.translated_resource import TranslatedResource
5959

6060
return self.filter(
61-
pk__in=TranslatedResource.objects.values_list("locale", flat=True)
61+
pk__in=TranslatedResource.objects.current().values_list("locale", flat=True)
6262
)
6363

6464
def stats_data(self, project=None):
@@ -115,7 +115,7 @@ class Locale(models.Model, AggregatedStats):
115115
def aggregated_stats_query(self):
116116
from pontoon.base.models.translated_resource import TranslatedResource
117117

118-
return TranslatedResource.objects.filter(
118+
return TranslatedResource.objects.current().filter(
119119
locale=self,
120120
resource__project__disabled=False,
121121
resource__project__system_project=False,

pontoon/base/models/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class Project(models.Model, AggregatedStats):
119119
def aggregated_stats_query(self):
120120
from pontoon.base.models.translated_resource import TranslatedResource
121121

122-
return TranslatedResource.objects.filter(resource__project=self)
122+
return TranslatedResource.objects.current().filter(resource__project=self)
123123

124124
name = models.CharField(max_length=128, unique=True)
125125
slug = models.SlugField(unique=True)

pontoon/base/models/project_locale.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class ProjectLocale(models.Model, AggregatedStats):
7474
def aggregated_stats_query(self):
7575
from pontoon.base.models.translated_resource import TranslatedResource
7676

77-
return TranslatedResource.objects.filter(
77+
return TranslatedResource.objects.current().filter(
7878
locale=self.locale, resource__project=self.project
7979
)
8080

pontoon/base/models/resource.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ def obsolete(self, now):
1010
self.update(obsolete=True, date_obsoleted=now)
1111
Entity.objects.filter(resource__in=self).obsolete(now)
1212

13+
def current(self):
14+
return self.filter(obsolete=False)
15+
1316

1417
class Resource(models.Model):
1518
project = models.ForeignKey("Project", models.CASCADE, related_name="resources")

pontoon/base/models/translated_resource.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414

1515

1616
class TranslatedResourceQuerySet(models.QuerySet):
17+
def current(self):
18+
return self.filter(resource__obsolete=False)
19+
1720
def string_stats(
1821
self,
1922
user: User | None = None,

pontoon/base/models/translation.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ class TranslationQuerySet(models.QuerySet):
2323
def translated_resources(self, locale):
2424
from pontoon.base.models.translated_resource import TranslatedResource
2525

26-
return TranslatedResource.objects.filter(
27-
resource__entities__translation__in=self, locale=locale
28-
).distinct()
26+
return (
27+
TranslatedResource.objects.current()
28+
.filter(resource__entities__translation__in=self, locale=locale)
29+
.distinct()
30+
)
2931

3032
def authors(self):
3133
"""
@@ -310,8 +312,10 @@ def save(self, failed_checks=None, *args, **kwargs):
310312
self.entity.reset_term_translation(self.locale)
311313

312314
# We use get_or_create() instead of just get() to make it easier to test.
313-
translatedresource, created = TranslatedResource.objects.get_or_create(
314-
resource=self.entity.resource, locale=self.locale
315+
translatedresource, created = (
316+
TranslatedResource.objects.current().get_or_create(
317+
resource=self.entity.resource, locale=self.locale
318+
)
315319
)
316320

317321
# Update latest translation where necessary

pontoon/base/signals.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
def project_locale_removed(sender, **kwargs):
2929
project_locale = kwargs.get("instance", None)
3030
if project_locale is not None:
31-
TranslatedResource.objects.filter(
31+
TranslatedResource.objects.current().filter(
3232
resource__project=project_locale.project, locale=project_locale.locale
3333
).delete()
3434

@@ -173,7 +173,7 @@ def add_locale_to_system_projects(sender, instance, created, **kwargs):
173173
projects = Project.objects.filter(system_project=True)
174174
for project in projects:
175175
ProjectLocale.objects.create(project=project, locale=instance)
176-
for resource in project.resources.all():
176+
for resource in project.resources.current():
177177
translated_resource = TranslatedResource.objects.create(
178178
resource=resource,
179179
locale=instance,
@@ -189,7 +189,7 @@ def add_locale_to_terminology_project(sender, instance, created, **kwargs):
189189
if created:
190190
project = Project.objects.get(slug="terminology")
191191
ProjectLocale.objects.create(project=project, locale=instance)
192-
for resource in project.resources.all():
192+
for resource in project.resources.current():
193193
translated_resource = TranslatedResource.objects.create(
194194
resource=resource,
195195
locale=instance,

pontoon/base/views.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,11 @@ def locale_projects(request, locale):
103103
def locale_stats(request, locale):
104104
"""Get locale stats used in All Resources part."""
105105
locale = get_object_or_404(Locale, code=locale)
106-
stats = TranslatedResource.objects.filter(locale=locale).string_stats(request.user)
106+
stats = (
107+
TranslatedResource.objects.current()
108+
.filter(locale=locale)
109+
.string_stats(request.user)
110+
)
107111
stats["title"] = "all-resources"
108112
return JsonResponse([stats], safe=False)
109113

@@ -115,9 +119,11 @@ def locale_project_parts(request, locale, slug):
115119
try:
116120
locale = Locale.objects.get(code=locale)
117121
project = Project.objects.visible_for(request.user).get(slug=slug)
118-
tr = TranslatedResource.objects.filter(
119-
locale=locale, resource__project=project
120-
).distinct()
122+
tr = (
123+
TranslatedResource.objects.current()
124+
.filter(locale=locale, resource__project=project)
125+
.distinct()
126+
)
121127
details = list(
122128
tr.annotate(
123129
title=F("resource__path"),
@@ -188,7 +194,7 @@ def _get_entities_list(locale, preferred_source_locale, project, form):
188194
return JsonResponse(
189195
{
190196
"entities": Entity.map_entities(locale, preferred_source_locale, entities),
191-
"stats": TranslatedResource.objects.query_stats(
197+
"stats": TranslatedResource.objects.current().query_stats(
192198
project, form.cleaned_data["paths"], locale
193199
),
194200
},
@@ -221,7 +227,7 @@ def _get_paginated_entities(locale, preferred_source_locale, project, form, enti
221227
requested_entity=requested_entity,
222228
),
223229
"has_next": entities_page.has_next(),
224-
"stats": TranslatedResource.objects.query_stats(
230+
"stats": TranslatedResource.objects.current().query_stats(
225231
project, form.cleaned_data["paths"], locale
226232
),
227233
},

0 commit comments

Comments
 (0)