예제 #1
0
 def test_revert(self):
     request = self.get_request()
     self.assertTrue(check_rate_limit('test', request))
     self.assertTrue(check_rate_limit('test', request))
     revert_rate_limit('test', request)
     self.assertTrue(check_rate_limit('test', request))
     self.assertFalse(check_rate_limit('test', request))
예제 #2
0
파일: edit.py 프로젝트: wade1990/weblate
def perform_translation(unit, form, request):
    """Handle translation and stores it to a backend."""
    # Remember old checks
    oldchecks = set(
        unit.active_checks().values_list('check', flat=True)
    )

    # Run AutoFixes on user input
    if not unit.translation.is_template:
        new_target, fixups = fix_target(form.cleaned_data['target'], unit)
    else:
        new_target = form.cleaned_data['target']
        fixups = []

    # Save
    saved = unit.translate(
        request.user,
        new_target,
        form.cleaned_data['state']
    )

    # Should we skip to next entry
    if not saved:
        revert_rate_limit('translate', request)
        return True

    # Warn about applied fixups
    if fixups:
        messages.info(
            request,
            _('Following fixups were applied to translation: %s') %
            ', '.join([force_text(f) for f in fixups])
        )

    # Get new set of checks
    newchecks = set(
        unit.active_checks().values_list('check', flat=True)
    )

    # Did we introduce any new failures?
    if saved and newchecks > oldchecks:
        # Show message to user
        messages.error(
            request,
            _(
                'The translation has been saved, however there '
                'are some newly failing checks: {0}'
            ).format(
                ', '.join(
                    [force_text(CHECKS[check].name) for check in newchecks]
                )
            )
        )
        # Stay on same entry
        return False

    return True
예제 #3
0
파일: edit.py 프로젝트: nijel/weblate
def perform_translation(unit, form, request):
    """Handle translation and stores it to a backend."""
    # Remember old checks
    oldchecks = set(
        unit.active_checks().values_list('check', flat=True)
    )

    # Run AutoFixes on user input
    if not unit.translation.is_template:
        new_target, fixups = fix_target(form.cleaned_data['target'], unit)
    else:
        new_target = form.cleaned_data['target']
        fixups = []

    # Save
    saved = unit.translate(
        request,
        new_target,
        form.cleaned_data['state']
    )

    # Should we skip to next entry
    if not saved:
        revert_rate_limit('translate', request)
        return True

    # Warn about applied fixups
    if fixups:
        messages.info(
            request,
            _('Following fixups were applied to translation: %s') %
            ', '.join([force_text(f) for f in fixups])
        )

    # Get new set of checks
    newchecks = set(
        unit.active_checks().values_list('check', flat=True)
    )

    # Did we introduce any new failures?
    if saved and newchecks > oldchecks:
        # Show message to user
        messages.error(
            request,
            _(
                'The translation has been saved, however there '
                'are some newly failing checks: {0}'
            ).format(
                ', '.join(
                    [force_text(CHECKS[check].name) for check in newchecks]
                )
            )
        )
        # Stay on same entry
        return False

    return True
예제 #4
0
def perform_translation(unit, form, request):
    """Handle translation and stores it to a backend."""
    # Remember old checks
    oldchecks = unit.all_checks_names

    # Run AutoFixes on user input
    if not unit.translation.is_template:
        new_target, fixups = fix_target(form.cleaned_data["target"], unit)
    else:
        new_target = form.cleaned_data["target"]
        fixups = []

    # Save
    saved = unit.translate(request.user, new_target, form.cleaned_data["state"])

    # Should we skip to next entry
    if not saved:
        revert_rate_limit("translate", request)
        return True

    # Warn about applied fixups
    if fixups:
        messages.info(
            request,
            _("Following fixups were applied to translation: %s")
            % ", ".join(force_str(f) for f in fixups),
        )

    # Get new set of checks
    newchecks = unit.all_checks_names

    # Did we introduce any new failures?
    if (
        saved
        and form.cleaned_data["state"] >= STATE_TRANSLATED
        and newchecks > oldchecks
    ):
        # Show message to user
        messages.error(
            request,
            _(
                "The translation has been saved, however there "
                "are some newly failing checks: {0}"
            ).format(", ".join(force_str(CHECKS[check].name) for check in newchecks)),
        )
        # Stay on same entry
        return False

    return True
예제 #5
0
 def test_revert(self):
     request = self.get_request()
     self.assertTrue(
         check_rate_limit('test', request)
     )
     self.assertTrue(
         check_rate_limit('test', request)
     )
     revert_rate_limit('test', request)
     self.assertTrue(
         check_rate_limit('test', request)
     )
     self.assertFalse(
         check_rate_limit('test', request)
     )
예제 #6
0
def perform_translation(unit, form, request):
    """Handle translation and stores it to a backend."""
    user = request.user
    profile = user.profile
    project = unit.translation.component.project
    # Remember old checks
    oldchecks = unit.all_checks_names

    # Save
    saved = unit.translate(user, form.cleaned_data["target"],
                           form.cleaned_data["state"])

    # Warn about applied fixups
    if unit.fixups:
        messages.info(
            request,
            _("Following fixups were applied to translation: %s") %
            ", ".join(str(f) for f in unit.fixups),
        )

    # No change edit - should we skip to next entry
    if not saved:
        revert_rate_limit("translate", request)
        return True

    # Auto subscribe user
    if not profile.languages.exists():
        language = unit.translation.language
        profile.languages.add(language)
        messages.info(
            request,
            _("Added %(language)s to your translated languages. "
              "You can adjust them in the settings.") % {"language": language},
        )
    if profile.auto_watch and not profile.watched.filter(
            pk=project.pk).exists():
        profile.watched.add(project)
        messages.info(
            request,
            _("Added %(project)s to your watched projects. "
              "You can adjust them and this behavior in the settings.") %
            {"project": project},
        )

    # Get new set of checks
    newchecks = unit.all_checks_names

    # Did we introduce any new failures?
    if (saved and form.cleaned_data["state"] >= STATE_TRANSLATED
            and newchecks > oldchecks):
        # Show message to user
        messages.error(
            request,
            _("The translation has been saved, however there "
              "are some newly failing checks: {0}").format(", ".join(
                  str(CHECKS[check].name) for check in newchecks)),
        )
        # Stay on same entry
        return False

    return True