Commit 7d5b36ff authored by Michal Čihař's avatar Michal Čihař

Migrate trans.edit_flags permission check to new model

Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent 6310ea7d
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
{% load i18n %} {% load i18n %}
{% load crispy_forms_tags %} {% load crispy_forms_tags %}
{% can_edit_flags user unit.translation.subproject.project as user_can_edit_flags %}
<div class="row"> <div class="row">
<div class="col-lg-6"> <div class="col-lg-6">
<table class="table table-condensed table-striped"> <table class="table table-condensed table-striped">
...@@ -28,7 +30,7 @@ ...@@ -28,7 +30,7 @@
<div class="col-lg-6"> <div class="col-lg-6">
<table class="table table-condensed"> <table class="table table-condensed">
{% if perms.trans.edit_flags %} {% if user_can_edit_flags %}
<tr> <tr>
<td> <td>
<div class="btn-group pull-right flip"> <div class="btn-group pull-right flip">
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
{% can_delete_suggestion user unit.translation as user_can_delete_suggestion %} {% can_delete_suggestion user unit.translation as user_can_delete_suggestion %}
{% can_vote_suggestion user unit.translation as user_can_vote_suggestion %} {% can_vote_suggestion user unit.translation as user_can_vote_suggestion %}
{% can_use_mt user unit.translation as user_can_use_mt %} {% can_use_mt user unit.translation as user_can_use_mt %}
{% can_edit_flags user unit.translation.subproject.project as user_can_edit_flags %}
{% if user_can_translate %} {% if user_can_translate %}
<a href="{% url 'zen' project=unit.translation.subproject.project.slug subproject=unit.translation.subproject.slug lang=unit.translation.language.code %}?sid={{ search_id }}" title="{% trans "Edit in Zen mode" %}" class="btn btn-default pull-right flip"><i class="fa fa-arrows-alt"></i> {% trans "Zen" %}</a> <a href="{% url 'zen' project=unit.translation.subproject.project.slug subproject=unit.translation.subproject.slug lang=unit.translation.language.code %}?sid={{ search_id }}" title="{% trans "Edit in Zen mode" %}" class="btn btn-default pull-right flip"><i class="fa fa-arrows-alt"></i> {% trans "Zen" %}</a>
...@@ -391,14 +392,14 @@ ...@@ -391,14 +392,14 @@
<td>{% format_translation unit.context search_match=search_query simple=True %}</td> <td>{% format_translation unit.context search_match=search_query simple=True %}</td>
</tr> </tr>
{% endif %} {% endif %}
{% if unit.flags or perms.trans.edit_flags %} {% if unit.flags or user_can_edit_flags %}
<tr> <tr>
<th>{% trans "Flags" %}</th> <th>{% trans "Flags" %}</th>
</tr> </tr>
<tr> <tr>
<td> <td>
{{ unit.all_flags|join:", " }} {{ unit.all_flags|join:", " }}
{% if perms.trans.edit_flags %} <a class="button smallbutton" href="{% url 'review_source' project=unit.translation.subproject.project.slug subproject=unit.translation.subproject.slug %}?checksum={{ unit.checksum }}"><i class="fa fa-pencil"></i></a>{% endif %} {% if user_can_edit_flags %} <a class="button smallbutton" href="{% url 'review_source' project=unit.translation.subproject.project.slug subproject=unit.translation.subproject.slug %}?checksum={{ unit.checksum }}"><i class="fa fa-pencil"></i></a>{% endif %}
</td> </td>
</tr> </tr>
{% endif %} {% endif %}
......
...@@ -200,3 +200,11 @@ def can_lock_subproject(user, project): ...@@ -200,3 +200,11 @@ def can_lock_subproject(user, project):
Checks whether user can lock translation subproject. Checks whether user can lock translation subproject.
""" """
return check_permission(user, project, 'trans.lock_subproject') return check_permission(user, project, 'trans.lock_subproject')
@cache_permission
def can_edit_flags(user, project):
"""
Checks whether user can edit translation flags.
"""
return check_permission(user, project, 'trans.edit_flags')
...@@ -91,3 +91,8 @@ def can_reset_translation(user, project): ...@@ -91,3 +91,8 @@ def can_reset_translation(user, project):
@register.assignment_tag @register.assignment_tag
def can_lock_subproject(user, project): def can_lock_subproject(user, project):
return weblate.trans.permissions.can_lock_subproject(user, project) return weblate.trans.permissions.can_lock_subproject(user, project)
@register.assignment_tag
def can_edit_flags(user, project):
return weblate.trans.permissions.can_edit_flags(user, project)
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
from django.http import Http404 from django.http import Http404
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.core.exceptions import PermissionDenied
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
...@@ -31,6 +32,7 @@ from urllib import urlencode ...@@ -31,6 +32,7 @@ from urllib import urlencode
from weblate.trans.views.helper import get_subproject from weblate.trans.views.helper import get_subproject
from weblate.trans.models import Translation, Source from weblate.trans.models import Translation, Source
from weblate.trans.forms import PriorityForm, CheckFlagsForm from weblate.trans.forms import PriorityForm, CheckFlagsForm
from weblate.trans.permissions import can_edit_flags
def get_source(request, project, subproject): def get_source(request, project, subproject):
...@@ -131,12 +133,15 @@ def edit_priority(request, pk): ...@@ -131,12 +133,15 @@ def edit_priority(request, pk):
@require_POST @require_POST
@login_required @login_required
@permission_required('trans.edit_check_flags')
def edit_check_flags(request, pk): def edit_check_flags(request, pk):
""" """
Change source string check flags. Change source string check flags.
""" """
source = get_object_or_404(Source, pk=pk) source = get_object_or_404(Source, pk=pk)
if not can_edit_flags(request.user, source.subproject.project):
raise PermissionDenied()
form = CheckFlagsForm(request.POST) form = CheckFlagsForm(request.POST)
if form.is_valid(): if form.is_valid():
source.check_flags = form.cleaned_data['flags'] source.check_flags = form.cleaned_data['flags']
......
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