Fix access to backoffice with infodesk permissions.

This commit is contained in:
Víðir Valberg Guðmundsson 2018-08-15 20:53:54 +02:00
parent c02a80553f
commit ccfb3d13d0
5 changed files with 37 additions and 5 deletions

View file

@ -14,6 +14,7 @@
<div class="row">
<p>
<div class="list-group">
{% if perms.camps.infodesk_permission %}
<a href="{% url 'backoffice:product_handout' camp_slug=camp.slug %}" class="list-group-item">
<h4 class="list-group-item-heading">Hand Out Products</h4>
<p class="list-group-item-text">Use this view to mark products such as merchandise, cabins, fridges and so on as handed out.</p>
@ -26,6 +27,9 @@
<h4 class="list-group-item-heading">Hand Out Badges</h4>
<p class="list-group-item-text">Use this view to mark badges as handed out.</p>
</a>
{% endif %}
{% if user.is_staff %}
<a href="{% url 'backoffice:public_credit_names' camp_slug=camp.slug %}" class="list-group-item">
<h4 class="list-group-item-heading">Approve Public Credit Names</h4>
<p class="list-group-item-text">Use this view to check and approve users Public Credit Names</p>
@ -50,6 +54,7 @@
<h4 class="list-group-item-heading">Village Gear To Order</h4>
<p class="list-group-item-text">Use this view to generate a list of village gear that needs to be ordered</p>
</a>
{% endif %}
</div>
</div>

View file

@ -1,6 +1,7 @@
import logging
from itertools import chain
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import TemplateView, ListView
from django.views.generic.edit import UpdateView
from django.shortcuts import redirect
@ -8,6 +9,7 @@ from django.urls import reverse
from django.contrib import messages
from django.utils import timezone
from camps.mixins import CampViewMixin
from shop.models import OrderProductRelation
from tickets.models import ShopTicket, SponsorTicket, DiscountTicket
from profiles.models import Profile
@ -18,11 +20,16 @@ from .mixins import BackofficeViewMixin
logger = logging.getLogger("bornhack.%s" % __name__)
class BackofficeIndexView(BackofficeViewMixin, TemplateView):
class InfodeskMixin(CampViewMixin, PermissionRequiredMixin):
permission_required = ("camps.infodesk_permission")
class BackofficeIndexView(InfodeskMixin, TemplateView):
template_name = "index.html"
class ProductHandoutView(BackofficeViewMixin, ListView):
class ProductHandoutView(InfodeskMixin, ListView):
template_name = "product_handout.html"
def get_queryset(self, **kwargs):
@ -34,7 +41,7 @@ class ProductHandoutView(BackofficeViewMixin, ListView):
).order_by('order')
class BadgeHandoutView(BackofficeViewMixin, ListView):
class BadgeHandoutView(InfodeskMixin, ListView):
template_name = "badge_handout.html"
context_object_name = 'tickets'
@ -45,7 +52,7 @@ class BadgeHandoutView(BackofficeViewMixin, ListView):
return list(chain(shoptickets, sponsortickets, discounttickets))
class TicketCheckinView(BackofficeViewMixin, ListView):
class TicketCheckinView(InfodeskMixin, BackofficeViewMixin, ListView):
template_name = "ticket_checkin.html"
context_object_name = 'tickets'

View file

@ -0,0 +1,17 @@
# Generated by Django 2.1 on 2018-08-15 18:18
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('camps', '0028_auto_20180525_1025'),
]
operations = [
migrations.AlterModelOptions(
name='camp',
options={'ordering': ['-title'], 'permissions': (('infodesk_permission', 'Infodesk permission'),), 'verbose_name': 'Camp', 'verbose_name_plural': 'Camps'},
),
]

View file

@ -16,6 +16,9 @@ class Camp(CreatedUpdatedModel, UUIDModel):
verbose_name = 'Camp'
verbose_name_plural = 'Camps'
ordering = ['-title']
permissions = (
("infodesk_permission", "Infodesk permission"),
)
title = models.CharField(
verbose_name='Title',

View file

@ -8,7 +8,7 @@
{% if request.user.is_authenticated %}
<a class="btn {% menubuttonclass 'rideshare' %}" href="{% url 'rideshare:list' camp_slug=camp.slug %}">Rideshare</a>
{% endif %}
{% if request.user.is_staff %}
{% if request.user.is_staff or perms.camps.infodesk_permission %}
<a class="btn {% menubuttonclass 'backoffice' %}" href="{% url 'backoffice:index' camp_slug=camp.slug %}">Backoffice</a>
{% endif %}