Initial untested merging of translations
This commit is contained in:
parent
5696ace382
commit
cd5d63f74f
@ -354,6 +354,33 @@ class Translation(models.Model):
|
||||
result.append(('suggestions', _('Strings with suggestions (%d)') % suggestions))
|
||||
return result
|
||||
|
||||
def merge_upload(self, request, fileobj, overwrite, mergefuzzy = False):
|
||||
store2 = factory.getobjects(fileobj)
|
||||
store1 = self.get_store()
|
||||
store.require_index()
|
||||
|
||||
for unit2 in store2.units:
|
||||
if unit2.isheader():
|
||||
if isinstance(store1, poheader):
|
||||
store1.mergeheaders(store2)
|
||||
continue
|
||||
unit1 = store1.findid(unit2.getid())
|
||||
if unit1 is None:
|
||||
unit1 = store1.findunit(unit2.source)
|
||||
if unit1 is None:
|
||||
logger.error("The template does not contain the following unit:\n%s", str(unit2))
|
||||
else:
|
||||
if len(unit2.target.strip()) == 0:
|
||||
continue
|
||||
if not mergefuzzy:
|
||||
if unit2.isfuzzy():
|
||||
continue
|
||||
unit1.merge(unit2, overwrite=overwrite)
|
||||
store1.save()
|
||||
author = '%s <%s>' % (request.user.get_full_name(), request.user.email)
|
||||
self.git_commit(author)
|
||||
|
||||
|
||||
|
||||
class Unit(models.Model):
|
||||
translation = models.ForeignKey(Translation)
|
||||
|
@ -180,7 +180,10 @@ def upload_translation(request, project, subproject, lang):
|
||||
if request.method == 'POST':
|
||||
form = UploadForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
# FIXME: process upload
|
||||
messages.add_message(request, messages.INFO, _('File content successfully merged into translation.'))
|
||||
try:
|
||||
obj.merge_upload(request, request.FILES['file'], form.cleaned_data['overwrite'])
|
||||
messages.add_message(request, messages.INFO, _('File content successfully merged into translation.'))
|
||||
except Exception, e:
|
||||
messages.add_message(request, messages.ERROR, _('File content merge failed: %s' % str(e)))
|
||||
|
||||
return HttpResponseRedirect(obj.get_absolute_url())
|
||||
|
Loading…
Reference in New Issue
Block a user