Skip to content
Snippets Groups Projects
Commit 10e93dee authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '9-use-permissions-rules' into 'master'

Resolve "Use permissions/rules"

Closes #9

See merge request !12
parents 75cb8cd5 57b5dcd2
No related branches found
No related tags found
1 merge request!12Resolve "Use permissions/rules"
......@@ -9,10 +9,12 @@ from aleksis.core.util.model_helpers import COLOURS, ICONS
from ckeditor.fields import RichTextField
class Support(ExtensibleModel):
class HjelpGlobalPermissions(ExtensibleModel):
class Meta:
managed = False
permissions = (
("view_faq", _("Can view FAQ")),
("ask_faq", _("Can ask FAQ question")),
("report_issue", _("Can report issues")),
("send_feedback", _("Can send feedback")),
)
......
......@@ -2,7 +2,7 @@ from django import forms
from django.conf import settings
from django.utils.translation import gettext_lazy as _
from dynamic_preferences.types import StringPreference
from dynamic_preferences.types import BooleanPreference, StringPreference
from dynamic_preferences.preferences import Section
from aleksis.core.registries import site_preferences_registry
......@@ -11,6 +11,15 @@ from aleksis.core.registries import site_preferences_registry
hjelp = Section("hjelp")
@site_preferences_registry.register
class PublicFAQ(BooleanPreference):
section = hjelp
name = "public_faq"
default = False
required = False
verbose_name = _("Public visibility of FAQ")
@site_preferences_registry.register
class FAQRecipient(StringPreference):
field_class = forms.EmailField
......
from rules import add_perm, always_allow
from aleksis.core.util.predicates import (
has_global_perm,
has_person,
is_site_preference_set,
)
# View FAQ
view_faq_predicate = is_site_preference_set("hjelp", "public_faq") | (
has_person & has_global_perm("hjelp.view_faq")
)
add_perm("hjelp.view_faq", view_faq_predicate)
# Ask FAQ question
ask_faq_predicate = has_person & has_global_perm("hjelp.ask_faq")
add_perm("hjelp.ask_faq", ask_faq_predicate)
# Report issue
report_issue_predicate = has_person & has_global_perm("hjelp.report_issue")
add_perm("hjelp.report_issue", report_issue_predicate)
# Add feedback
send_feedback_predicate = has_person & has_global_perm("hjelp.send_feedback")
add_perm("hjelp.send_feedback", send_feedback_predicate)
......@@ -5,12 +5,14 @@ from django.utils.translation import ugettext_lazy as _
from .models import FAQSection, FAQQuestion, IssueCategory
from .forms import FAQForm, IssueForm, FeedbackForm
from rules.contrib.views import permission_required
from templated_email import send_templated_mail
from aleksis.core.models import Activity
from aleksis.core.util.core_helpers import get_site_preferences
@permission_required("hjelp.view_faq")
def faq(request):
""" Shows the FAQ page """
......@@ -21,7 +23,7 @@ def faq(request):
return render(request, "hjelp/faq.html", context)
@login_required
@permission_required("hjelp.ask_faq")
def ask_faq(request):
if request.method == "POST":
form = FAQForm(request.POST)
......@@ -71,7 +73,7 @@ def issues_get_next_properties(request):
return JsonResponse(next_properties)
@login_required
@permission_required("hjelp.report_issue")
def report_issue(request):
if request.method == "POST":
form = IssueForm(request.POST)
......@@ -135,7 +137,7 @@ def report_issue(request):
return render(request, "hjelp/issue_report.html", {"form": form})
@login_required
@permission_required("hjelp.send_feedback")
def feedback(request):
if request.method == "POST":
form = FeedbackForm(request.POST)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment