Commit 30965f31 authored by Michal Čihař's avatar Michal Čihař

Share code for handling parse errors

Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent 26e0afc2
......@@ -856,6 +856,15 @@ class SubProject(models.Model, PercentMixin, URLMixin, PathMixin):
# Notify subscribed users about failure
notify_merge_failure(self, error, status)
def handle_parse_error(self, error):
"""Handler for parse error."""
report_error(error, sys.exc_info())
self.notify_merge_failure(
str(error),
u''.join(traceback.format_stack()),
)
raise ParseError(str(error))
def update_branch(self, request=None, method=None):
'''
Updates current branch to match remote (if possible).
......@@ -1407,12 +1416,7 @@ class SubProject(models.Model, PercentMixin, URLMixin, PathMixin):
try:
self._template_store = self.load_template_store()
except Exception as exc:
report_error(exc, sys.exc_info())
self.notify_merge_failure(
str(exc),
u''.join(traceback.format_stack()),
)
raise ParseError(str(exc))
self.handle_parse_error(exc)
return self._template_store
......
......@@ -28,8 +28,6 @@ from django.core.cache import cache
from django.utils import timezone
from django.core.urlresolvers import reverse
import os
import sys
import traceback
import codecs
from translate.storage import poheader
from datetime import datetime, timedelta
......@@ -42,7 +40,7 @@ from weblate.trans.models.unit import Unit
from weblate.trans.models.unitdata import Suggestion
from weblate.trans.signals import vcs_pre_commit, vcs_post_commit
from weblate.trans.util import (
get_site_url, translation_percent, split_plural, report_error,
get_site_url, translation_percent, split_plural,
)
from weblate.accounts.avatar import get_user_display
from weblate.trans.mixins import URLMixin, PercentMixin, LoggerMixin
......@@ -448,12 +446,7 @@ class Translation(models.Model, URLMixin, PercentMixin, LoggerMixin):
except ParseError:
raise
except Exception as exc:
report_error(exc, sys.exc_info())
self.subproject.notify_merge_failure(
str(exc),
u''.join(traceback.format_stack()),
)
raise ParseError(str(exc))
self.handle_parse_error(exc)
return self._store
def check_sync(self, force=False, request=None, change=None):
......
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