indoor pin and cteward integration
This commit is contained in:
parent
0c7b3b9d62
commit
ac372412fd
13 changed files with 224 additions and 32 deletions
|
|
@ -141,8 +141,8 @@ class NRF24Form(forms.Form):
|
|||
|
||||
|
||||
class CLabPinForm(forms.Form):
|
||||
c_lab_pin1 = GastroPinField(label=_('New c-lab PIN'))
|
||||
c_lab_pin2 = GastroPinField(label=_('Repeat c-lab PIN'),
|
||||
c_lab_pin1 = GastroPinField(label=_('New indoor PIN'))
|
||||
c_lab_pin2 = GastroPinField(label=_('Repeat indoor PIN'),
|
||||
help_text=_('Numerical only, 4 to 8 digits'))
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -105,12 +105,12 @@ msgid "Your r0ket's NRF24 identification"
|
|||
msgstr "Die NRF24-ID deiner r0ket"
|
||||
|
||||
#: forms.py:130
|
||||
msgid "New c-lab PIN"
|
||||
msgstr "Neue c-lab-PIN"
|
||||
msgid "New indoor PIN"
|
||||
msgstr "Neue innentür-PIN"
|
||||
|
||||
#: forms.py:131
|
||||
msgid "Repeat c-lab PIN"
|
||||
msgstr "c-lab-PIN wiederholen"
|
||||
msgid "Repeat indoor PIN"
|
||||
msgstr "Innentür-PIN wiederholen"
|
||||
|
||||
#: forms.py:149
|
||||
msgid "Select the username for whom you want to reset the password."
|
||||
|
|
@ -192,12 +192,12 @@ msgid "This crewname is still available."
|
|||
msgstr "Dieser Crewname ist noch zu haben."
|
||||
|
||||
#: templates/clabpin.html:5
|
||||
msgid "c-lab PIN"
|
||||
msgstr "c-lab-PIN"
|
||||
msgid "Indoor PIN"
|
||||
msgstr "Innentür-PIN"
|
||||
|
||||
#: templates/clabpin.html:8
|
||||
msgid "Change your c-lab PIN to access the c-lab in the basement."
|
||||
msgstr "PIN ändern für den Zugang zum c-lab im Keller."
|
||||
msgid "Change your PIN to access rooms secured with PIN-pad."
|
||||
msgstr "PIN ändern für den Zugang zu PIN-pad-geschützten Räumen."
|
||||
|
||||
#: templates/gastropin.html:5
|
||||
msgid "Gastro PIN"
|
||||
|
|
@ -331,8 +331,8 @@ msgid "RFID"
|
|||
msgstr ""
|
||||
|
||||
#: templates/member_base.html:29
|
||||
msgid "c-lab-PIN"
|
||||
msgstr "c-lab-PIN"
|
||||
msgid "Indoor-PIN"
|
||||
msgstr "Innentür-PIN"
|
||||
|
||||
#: templates/member_base.html:33 templates/nrf24.html:5
|
||||
msgid "NRF24"
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ class UserProfile(models.Model):
|
|||
is_clab_member = models.BooleanField(default=False, editable=False)
|
||||
is_cey_member = models.BooleanField(default=False, editable=False)
|
||||
is_ceymaster = models.BooleanField(default=False, editable=False)
|
||||
is_soundlab_member = models.BooleanField(default=False, editable=False)
|
||||
|
||||
def __unicode__(self):
|
||||
return 'Profile: %s' % self.user.username
|
||||
|
|
|
|||
0
account/templates/500.html
Normal file
0
account/templates/500.html
Normal file
|
|
@ -2,10 +2,10 @@
|
|||
{% load i18n %}
|
||||
{% load crispy_forms_tags %}
|
||||
|
||||
{% block form_title %}{% trans "c-lab PIN"%}{% endblock %}
|
||||
{% block form_title %}{% trans "Indoor PIN"%}{% endblock %}
|
||||
|
||||
{% block form_description %}
|
||||
<p>{% blocktrans %}Change your c-lab PIN to access the c-lab in the basement.{% endblocktrans %}</p>
|
||||
<p>{% blocktrans %}Change your PIN to access rooms secured with PIN-pad.{% endblocktrans %}</p>
|
||||
{% endblock %}
|
||||
|
||||
{% block form_fields %}
|
||||
|
|
@ -19,4 +19,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock form_fields %}
|
||||
{% endblock form_fields %}
|
||||
|
|
|
|||
|
|
@ -37,21 +37,36 @@
|
|||
|
||||
<h3>{% trans "Management information" %}</h3>
|
||||
|
||||
<ul>
|
||||
<li>{% trans "Name:" %}
|
||||
{{ member.displayName }}
|
||||
</li>
|
||||
<li>
|
||||
{% trans "External e-mail address:" %}
|
||||
{{ member.externalEmail }}<br>
|
||||
<table class="table table-condensed table-bordered table-hover">
|
||||
<tr><td>{% trans "Crewname:" %}</td><td>{{ cteward.Crewname }}</td></tr>
|
||||
<tr><td>{% trans "Membership Number:" %}</td><td>{{ cteward.Mitgliedsnummer }}</td></tr>
|
||||
<tr><td>{% trans "Status:" %}</td><td>{{ cteward.Status }}</td></tr>
|
||||
<tr>
|
||||
<td>{% trans "External e-mail address:" %}</td><td>{{ member.externalEmail }}</td>
|
||||
<!--<td>
|
||||
<span class="muted">{% blocktrans %}The external e-mail address is used by the
|
||||
board of c-base to reach you in cases where your c-base
|
||||
address (see above) is not working. To change your
|
||||
external e-mail address please contact the c-base board via {% endblocktrans %}
|
||||
(<a href="mailto:cash@c-base.org">cash@c-base.org</a>).</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</td>-->
|
||||
</tr>
|
||||
<tr><td>{% trans "Firstname:" %}</td><td>{{ cteward.Vorname }}</td></tr>
|
||||
<tr><td>{% trans "Lastname:" %}</td><td>{{ cteward.Nachname }}</td></tr>
|
||||
<tr><td>{% trans "Street:" %}</td><td>{{ cteward.Strasse }}</td></tr>
|
||||
<tr><td>{% trans "Postcode:" %}</td><td>{{ cteward.PLZ }}</td></tr>
|
||||
<tr><td>{% trans "City:" %}</td><td>{{ cteward.Ort }}</td></tr>
|
||||
<tr><td>{% trans "Gender:" %}</td><td>{{ cteward.Geschlecht }}</td></tr>
|
||||
<tr><td>{% trans "Birth Date:" %}</td><td>{{ cteward.Geburtsdatum }}</td></tr>
|
||||
<tr><td>{% trans "Entry Date:" %}</td><td>{{ cteward.Eintritt }}</td></tr>
|
||||
<tr><td>{% trans "Godfather:" %}</td><td>{{ cteward.Paten }}</td></tr>
|
||||
<tr><td>{% trans "Payment Method:" %}</td><td>{{ cteward.Zahlungsart }}</td></tr>
|
||||
<tr><td>{% trans "Payment Frequency:" %}</td><td>{{ cteward.Zahlungsweise }}</td></tr>
|
||||
<tr><td>{% trans "Debit Authorization:" %}</td><td>{{ cteward.Lastschriftmandat }}</td></tr>
|
||||
<tr><td>{% trans "Bank:" %}</td><td>{{ cteward.Bank }}</td></tr>
|
||||
<tr><td>{% trans "IBAN:" %}</td><td>{{ cteward.IBAN }}</td></tr>
|
||||
<tr><td>{% trans "BIC:" %}</td><td>{{ cteward.BIC }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock container %}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
</li>
|
||||
{% url account.views.clabpin as clab_url %}
|
||||
<li class="{% if request.path == clab_url %}active{% endif %}">
|
||||
<a href="{{ clab_url }}">{% trans "c-lab-PIN" %}</a>
|
||||
<a href="{{ clab_url }}">{% trans "Indoor-PIN" %}</a>
|
||||
</li>
|
||||
{% url account.views.nrf24 as nrf24_url %}
|
||||
<li class="{% if request.path == nrf24_url %}active{% endif %}">
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
<hr />
|
||||
<div class="row pull-right">
|
||||
<small class="muted">Copyright © 2013 by c-base e.V.</small>
|
||||
<small class="muted">Copyright © 2015 by c-base e.V.</small>
|
||||
</div>
|
||||
</div><!-- /.container -->
|
||||
{% endblock body %}
|
||||
|
|
|
|||
114
account/templates/memberstatus.html
Normal file
114
account/templates/memberstatus.html
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
{% extends "member_base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block container %}
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h3>{% trans "Basic information about your account" %}</h3>
|
||||
|
||||
{{ contributions }}
|
||||
|
||||
<table class="table table-condensed table-bordered table-hover">
|
||||
<tr><td>{% trans "Crewname:" %}</td><td>{{ cteward.Crewname }}</td></tr>
|
||||
<tr><td>{% trans "Membership Number:" %}</td><td>{{ cteward.Mitgliedsnummer }}</td></tr>
|
||||
<tr><td>{% trans "Status:" %}</td><td>{{ cteward.Status }}</td></tr>
|
||||
<tr><td>{% trans "Firstname:" %}</td><td>{{ cteward.Vorname }}</td></tr>
|
||||
<tr><td>{% trans "Lastname:" %}</td><td>{{ cteward.Nachname }}</td></tr>
|
||||
<tr><td>{% trans "Street:" %}</td><td>{{ cteward.Strasse }}</td></tr>
|
||||
<tr><td>{% trans "Postcode:" %}</td><td>{{ cteward.PLZ }}</td></tr>
|
||||
<tr><td>{% trans "City:" %}</td><td>{{ cteward.Ort }}</td></tr>
|
||||
<tr><td>{% trans "Gender:" %}</td><td>{{ cteward.Geschlecht }}</td></tr>
|
||||
<tr><td>{% trans "Birth Date:" %}</td><td>{{ cteward.Geburtsdatum }}</td></tr>
|
||||
<tr><td>{% trans "Entry Date:" %}</td><td>{{ cteward.Eintritt }}</td></tr>
|
||||
<tr><td>{% trans "Godfather:" %}</td><td>{{ cteward.Paten }}</td></tr>
|
||||
<tr><td>{% trans "Payment Method:" %}</td><td>{{ cteward.Zahlungsart }}</td></tr>
|
||||
<tr><td>{% trans "Payment Frequency:" %}</td><td>{{ cteward.Zahlungsweise }}</td></tr>
|
||||
<tr><td>{% trans "Debit Authorization:" %}</td><td>{{ cteward.Lastschriftmandat }}</td></tr>
|
||||
<tr><td>{% trans "Bank:" %}</td><td>{{ cteward.Bank }}</td></tr>
|
||||
<tr><td>{% trans "IBAN:" %}</td><td>{{ cteward.IBAN }}</td></tr>
|
||||
<tr><td>{% trans "BIC:" %}</td><td>{{ cteward.BIC }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div>
|
||||
<h3>{% trans "Contributions:" %}</h3>
|
||||
</div>
|
||||
<div class="panel-group" id="accordion">
|
||||
<div class="panel panel-default">
|
||||
<a class="btn btn-lg btn-default btn-block" data-toggle="collapse" data-parent="#accordion" href="#total">{% trans "Total" %}</a>
|
||||
<div id="total" class="panel-collapse">
|
||||
<div class="terminal">
|
||||
<table class="table table-condensed table-bordered table-hover">
|
||||
<tr><td>{% trans "Billed:" %}</td><td>{{ contributions.total.billed }}</td></tr>
|
||||
<tr><td>{% trans "Paid:" %}</td><td>{{ contributions.total.paid }}</td></tr>
|
||||
<tr><td>{% trans "Unpaid:" %}</td><td>{{ contributions.total.unpaid }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% for year,values in contributions.years %}
|
||||
<div class="panel panel-default">
|
||||
<a class="btn btn-lg btn-default btn-block" data-toggle="collapse" data-parent="#accordion" href="#{{ year }}">{{ year }}</a>
|
||||
<div id="{{ year }}" class="panel-collapse collapse">
|
||||
<div class="terminal">
|
||||
<table class="table table-condensed table-bordered table-hover">
|
||||
<tr><td>{% trans "Billed:" %}</td><td>{{ values.billed }}</td></tr>
|
||||
<tr><td>{% trans "Paid:" %}</td><td>{{ values.paid }}</td></tr>
|
||||
<tr><td>{% trans "Unpaid:" %}</td><td>{{ values.unpaid }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
<a class="btn btn-block btn-lg btn-default btn-block"><b>{% trans "no data available" %}</b></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div>
|
||||
<h3>{% trans "Contracts:" %}</h3>
|
||||
</div>
|
||||
<div class="panel-group" id="contract-accordion">
|
||||
{% for contract in contributions.contracts %}
|
||||
<div class="panel panel-default">
|
||||
<a class="btn btn-lg btn-default btn-block" data-toggle="collapse" data-parent="#contract-accordion" href="#{{ contract.Vertragsnummer }}">Contract #{{ contract.Vertragsnummer }}</a>
|
||||
<div id="{{ contract.Vertragsnummer }}" class="panel-collapse collapse">
|
||||
<div class="terminal">
|
||||
<table class="table table-condensed table-bordered table-hover">
|
||||
<tr><td>{% trans "Type:" %}</td><td>{{ contract.Art }}</td></tr>
|
||||
<tr><td>{% trans "Total:" %}</td><td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>{% trans "Billed:" %}</td><td>{{ contract.total.billed }}</td>
|
||||
<td>{% trans "Paid:" %}</td><td>{{ contract.total.paid }}</td>
|
||||
<td>{% trans "Unpaid:" %}</td><td>{{ contract.total.unpaid }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>{% trans "Sums:" %}</td><td>
|
||||
<table>
|
||||
{% for detail, values in contract.Summen.items %}
|
||||
<tr>
|
||||
<td>{{ detail }}:</td>
|
||||
<td>{% trans "Billed:" %}</td><td>{{ values.billed }}</td>
|
||||
<td>{% trans "Paid:" %}</td><td>{{ values.paid }}</td>
|
||||
<td>{% trans "Unpaid:" %}</td><td>{{ values.unpaid }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
<a class="btn btn-block btn-lg btn-default btn-block"><b>{% trans "no data available" %}</b></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock container %}
|
||||
|
|
@ -13,6 +13,7 @@ urlpatterns = patterns(
|
|||
url(r'^sippin/$', 'account.views.sippin', name='sippin'),
|
||||
url(r'^clabpin/$', 'account.views.clabpin', name='clabpin'),
|
||||
url(r'^admin/$', 'account.views.admin', name='admin'),
|
||||
url(r'^memberstatus/$', 'account.views.memberstatus', name='memberstatus'),
|
||||
url(r'^$', 'account.views.home', name="home"),
|
||||
url(r'^groups/(?P<group_name>[^/]+)/', 'account.views.groups_list'),
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
import os
|
||||
import hashlib
|
||||
import smbpasswd
|
||||
import requests
|
||||
import collections
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
|
|
@ -82,9 +84,16 @@ def auth_login(request):
|
|||
def home(request):
|
||||
member = retrieve_member(request)
|
||||
number_of_members = member.get_number_of_members()
|
||||
password = get_ldap_password(request)
|
||||
username = request.user.username
|
||||
url = "https://vorstand.c-base.org/cteward-api/legacy/member/%s" % username
|
||||
r = requests.get(url, verify=False, auth=(username, password))
|
||||
cteward = r.json()
|
||||
context = {'member': member.to_dict(),
|
||||
'groups': sorted(list(request.user.groups.all())),
|
||||
'number_of_members': number_of_members}
|
||||
'number_of_members': number_of_members,
|
||||
'cteward': cteward,
|
||||
}
|
||||
return render(request, 'home.html', context)
|
||||
|
||||
@login_required
|
||||
|
|
@ -151,8 +160,11 @@ def gastropin(request):
|
|||
|
||||
@login_required
|
||||
def clabpin(request):
|
||||
if not (request.user.profile.is_clab_member or request.user.profile.is_cey_member):
|
||||
#if not request.user.profile.is_clab_member:
|
||||
if not (
|
||||
request.user.profile.is_clab_member or
|
||||
request.user.profile.is_cey_member or
|
||||
request.user.profile.is_soundlab_member
|
||||
):
|
||||
return render(request, 'access_denied.html')
|
||||
|
||||
def calculate_clab_hash(pin):
|
||||
|
|
@ -280,3 +292,24 @@ def admin(request):
|
|||
|
||||
def hammertime(request):
|
||||
return render(request, 'hammertime.html', {})
|
||||
|
||||
@login_required
|
||||
def memberstatus(request):
|
||||
#url = baseurl + route_operation_mapping['SessionCreate']['Route']
|
||||
#data = json.dumps({'UserLogin': username, 'Password': password})
|
||||
password = get_ldap_password(request)
|
||||
username = request.user.username
|
||||
|
||||
url = "https://vorstand.c-base.org/cteward-api/legacy/member/%s/contributions" % username
|
||||
r = requests.get(url, verify=False, auth=(username, password))
|
||||
contributions = r.json()
|
||||
years = collections.OrderedDict(sorted(contributions['years'].items(), reverse=True))
|
||||
contributions['years'] = years.items()
|
||||
|
||||
url = "https://vorstand.c-base.org/cteward-api/legacy/member/%s" % username
|
||||
r = requests.get(url, verify=False, auth=(username, password))
|
||||
cteward = r.json()
|
||||
|
||||
return render(request, 'memberstatus.html', {'contributions': contributions, 'cteward': cteward})
|
||||
|
||||
|
||||
|
|
|
|||
28
account/wsgi.py
Normal file
28
account/wsgi.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
"""
|
||||
WSGI config for cbmi project.
|
||||
|
||||
This module contains the WSGI application used by Django's development server
|
||||
and any production WSGI deployments. It should expose a module-level variable
|
||||
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
|
||||
this application via the ``WSGI_APPLICATION`` setting.
|
||||
|
||||
Usually you will have the standard Django WSGI application here, but it also
|
||||
might make sense to replace the whole Django WSGI application with a custom one
|
||||
that later delegates to the Django one. For example, you could introduce WSGI
|
||||
middleware here, or combine a Django application with an application of another
|
||||
framework.
|
||||
|
||||
"""
|
||||
import os
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cbmi.settings")
|
||||
|
||||
# This application object is used by any WSGI server configured to use this
|
||||
# file. This includes Django's development server, if the WSGI_APPLICATION
|
||||
# setting points here.
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
||||
# Apply WSGI middleware here.
|
||||
# from helloworld.wsgi import HelloWorldApplication
|
||||
# application = HelloWorldApplication(application)
|
||||
Loading…
Add table
Add a link
Reference in a new issue