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' %}"> <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> <a href="{% url 'passbook_admin:rules' %}">{% trans 'Rules' %}</a>
</li> </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> <li>
<a href="#">{% trans 'Users' %}</a> <a href="#">{% trans 'Users' %}</a>
</li> </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""" """passbook URL Configuration"""
from django.urls import path from django.urls import path
from passbook.admin.views import (applications, overview, providers, rules, from passbook.admin.views import (applications, invites, overview, providers,
sources) rules, sources)
urlpatterns = [ urlpatterns = [
path('', overview.AdministrationOverviewView.as_view(), name='overview'), path('', overview.AdministrationOverviewView.as_view(), name='overview'),
@ -34,5 +34,10 @@ urlpatterns = [
providers.ProviderUpdateView.as_view(), name='provider-update'), providers.ProviderUpdateView.as_view(), name='provider-update'),
path('providers/<int:pk>/delete/', path('providers/<int:pk>/delete/',
providers.ProviderDeleteView.as_view(), name='provider-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')) # 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__'