Commit 4c5bdc78 authored by Michal Čihař's avatar Michal Čihař

Automatically adjust units priority when source string priority changes

Issue #123
Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent cbdf6474
......@@ -21,7 +21,7 @@
import os
import shutil
from django.db.models.signals import post_delete
from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver
from weblate.trans.models.project import Project
......@@ -54,3 +54,17 @@ def delete_object_dir(sender, instance, **kwargs):
# Remove path if it exists
if os.path.exists(project_path):
shutil.rmtree(project_path)
@receiver(post_save, sender=Source)
def update_string_pririties(sender, instance, created=False, **kwargs):
"""
Updates unit score
"""
if instance.priority_modified:
units = Unit.objects.filter(
checksum=instance.checksum
).exclude(
priority=instance.priority
)
units.update(priority=instance.priority)
......@@ -33,5 +33,21 @@ class Source(models.Model):
app_label = 'trans'
unique_together = ('checksum', 'subproject')
def __init__(self, *args, **kwargs):
super(Source, self).__init__(*args, **kwargs)
self.priority_modified = False
def __unicode__(self):
return 'src:{0}'.format(self.checksum)
def save(self, force_insert=False, **kwargs):
"""
Wrapper around save to indicate whether priority has been
modified.
"""
if force_insert:
self.priority_modified = (self.priority != 100)
else:
old = Source.objects.get(pk=self.pk)
self.priority_modified = (old.priority != self.priority)
super(Source, self).save(force_insert, **kwargs)
......@@ -32,6 +32,7 @@ import os
import git
from weblate.trans.models import Project, SubProject, Unit
from weblate.trans.models import whiteboard as whiteboard_model
from weblate.trans.models.source import Source
from weblate import appsettings
from weblate.trans.tests.test_util import get_test_file
......@@ -638,3 +639,28 @@ class WhiteboardMessageTest(TestCase):
Rather dumb test just to make sure there are no obvious parsing errors.
"""
whiteboard_model.WhiteboardMessage()
class SourceTest(RepoTestCase):
"""
Source objects testing.
"""
def setUp(self):
super(SourceTest, self).setUp()
self.create_subproject()
def test_exists(self):
self.assertTrue(Source.objects.exists())
def test_source_info(self):
unit = Unit.objects.all()[0]
self.assertIsNotNone(unit.get_source_string_info())
def test_priority(self):
unit = Unit.objects.all()[0]
self.assertEquals(unit.priority, 100)
source = unit.get_source_string_info()
source.priority = 200
source.save()
unit2 = Unit.objects.get(pk=unit.pk)
self.assertEquals(unit2.priority, 200)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment