admin: add invite administration

This commit is contained in:
Jens Langhammer 2018-12-10 14:13:18 +01:00
parent 64c8458c90
commit 89c2b8d49c
5 changed files with 106 additions and 2 deletions

View file

@ -20,6 +20,9 @@
<li class="{% is_active 'passbook_admin:rules' 'passbook_admin:rule-create' 'passbook_admin:rule-update' 'passbook_admin:rule-delete' 'passbook_admin:rule-test' %}">
<a href="{% url 'passbook_admin:rules' %}">{% trans 'Rules' %}</a>
</li>
<li class="{% is_active 'passbook_admin:invites' 'passbook_admin:invite-create' 'passbook_admin:invite-update' 'passbook_admin:invite-delete' 'passbook_admin:invite-test' %}">
<a href="{% url 'passbook_admin:invites' %}">{% trans 'Invites' %}</a>
</li>
<li>
<a href="#">{% trans 'Users' %}</a>
</li>

View file

@ -0,0 +1,39 @@
{% extends "administration/base.html" %}
{% load i18n %}
{% load utils %}
{% block title %}
{% title %}
{% endblock %}
{% block content %}
<div class="container">
<h1>{% trans "Invites" %}</h1>
<a href="{% url 'passbook_admin:invite-create' %}" class="btn btn-primary">
{% trans 'Create...' %}
</a>
<hr>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{% trans 'Name' %}</th>
<th>{% trans 'Provider' %}</th>
<th></th>
</tr>
</thead>
<tbody>
{% for invite in object_list %}
<tr>
<td>{{ invite.name }}</td>
<td>{{ invite.provider }}</td>
<td>
<a class="btn btn-default btn-sm" href="{% url 'passbook_admin:invite-update' pk=invite.uuid %}?back={{ request.get_full_path }}">{% trans 'Edit' %}</a>
<a class="btn btn-default btn-sm" href="{% url 'passbook_admin:invite-delete' pk=invite.uuid %}?back={{ request.get_full_path }}">{% trans 'Delete' %}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View file

@ -1,8 +1,8 @@
"""passbook URL Configuration"""
from django.urls import path
from passbook.admin.views import (applications, overview, providers, rules,
sources)
from passbook.admin.views import (applications, invites, overview, providers,
rules, sources)
urlpatterns = [
path('', overview.AdministrationOverviewView.as_view(), name='overview'),
@ -34,5 +34,10 @@ urlpatterns = [
providers.ProviderUpdateView.as_view(), name='provider-update'),
path('providers/<int:pk>/delete/',
providers.ProviderDeleteView.as_view(), name='provider-delete'),
# Invites
path('invites/', invites.InviteListView.as_view(), name='invites'),
path('invites/create/', invites.InviteCreateView.as_view(), name='invite-create'),
path('invites/<uuid:pk>/update/', invites.InviteUpdateView.as_view(), name='invite-update'),
path('invites/<uuid:pk>/delete/', invites.InviteDeleteView.as_view(), name='invite-delete'),
# path('api/v1/', include('passbook.admin.api.v1.urls'))
]

View file

@ -0,0 +1,43 @@
"""passbook Invite administration"""
from django.contrib.messages.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.utils.translation import ugettext as _
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
from passbook.admin.mixins import AdminRequiredMixin
from passbook.core.forms.invites import InviteForm
from passbook.core.models import Invite
class InviteListView(AdminRequiredMixin, ListView):
"""Show list of all invites"""
model = Invite
template_name = 'administration/invite/list.html'
class InviteCreateView(SuccessMessageMixin, AdminRequiredMixin, CreateView):
"""Create new Invite"""
template_name = 'generic/create.html'
success_url = reverse_lazy('passbook_admin:invites')
success_message = _('Successfully created Invite')
form_class = InviteForm
class InviteUpdateView(SuccessMessageMixin, AdminRequiredMixin, UpdateView):
"""Update invite"""
model = Invite
template_name = 'generic/update.html'
success_url = reverse_lazy('passbook_admin:invites')
success_message = _('Successfully updated Invite')
form_class = InviteForm
class InviteDeleteView(SuccessMessageMixin, AdminRequiredMixin, DeleteView):
"""Delete invite"""
model = Invite
template_name = 'generic/delete.html'
success_url = reverse_lazy('passbook_admin:invites')
success_message = _('Successfully updated Invite')

View file

@ -0,0 +1,14 @@
"""passbook core invite form"""
from django import forms
from passbook.core.models import Invite
class InviteForm(forms.ModelForm):
"""InviteForm"""
class Meta:
model = Invite
fields = '__all__'