diff --git a/members/admin.py b/members/admin.py index 7550b85..bb6b8e0 100644 --- a/members/admin.py +++ b/members/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin -from members.models import Member, Request +from members.models import Member, Request, Payment # Register your models here. admin.site.register(Member) admin.site.register(Request) +admin.site.register(Payment) diff --git a/members/migrations/0004_auto_20170512_1454.py b/members/migrations/0004_auto_20170512_1454.py new file mode 100644 index 0000000..c391772 --- /dev/null +++ b/members/migrations/0004_auto_20170512_1454.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2017-05-12 11:54 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('members', '0003_auto_20170329_1928'), + ] + + operations = [ + migrations.RemoveField( + model_name='payment', + name='email', + ), + migrations.RemoveField( + model_name='payment', + name='first_name', + ), + migrations.RemoveField( + model_name='payment', + name='last_name', + ), + migrations.AlterField( + model_name='member', + name='AYY', + field=models.BooleanField(default=False, verbose_name='AYY'), + ), + migrations.AlterField( + model_name='member', + name='POR', + field=models.CharField(max_length=255, verbose_name='Place of residence'), + ), + migrations.AlterField( + model_name='member', + name='email', + field=models.EmailField(max_length=254, verbose_name='Email'), + ), + migrations.AlterField( + model_name='member', + name='first_name', + field=models.CharField(max_length=127, verbose_name='First name'), + ), + migrations.AlterField( + model_name='member', + name='jas', + field=models.BooleanField(default=False, verbose_name='JAS'), + ), + migrations.AlterField( + model_name='member', + name='last_name', + field=models.CharField(max_length=127, verbose_name='Last name'), + ), + migrations.AlterField( + model_name='request', + name='AYY', + field=models.BooleanField(default=False, verbose_name='AYY'), + ), + migrations.AlterField( + model_name='request', + name='POR', + field=models.CharField(max_length=255, verbose_name='Place of residence'), + ), + migrations.AlterField( + model_name='request', + name='email', + field=models.EmailField(max_length=254, verbose_name='Email'), + ), + migrations.AlterField( + model_name='request', + name='first_name', + field=models.CharField(max_length=127, verbose_name='First name'), + ), + migrations.AlterField( + model_name='request', + name='jas', + field=models.BooleanField(default=False, verbose_name='JAS'), + ), + migrations.AlterField( + model_name='request', + name='last_name', + field=models.CharField(max_length=127, verbose_name='Last name'), + ), + ] diff --git a/members/models.py b/members/models.py index 1854eee..dc9ceae 100644 --- a/members/models.py +++ b/members/models.py @@ -32,21 +32,8 @@ class Payment(models.Model): ''' date = models.DateTimeField(default=datetime.fromtimestamp(0)) source = models.CharField(max_length=255) - first_name = models.CharField(max_length=255) - last_name = models.CharField(max_length=255) - email = models.EmailField(max_length=255) - member = models.ForeignKey('Member', on_delete=models.SET_NULL, blank=True, null=True) - def get_dict(self): - return { - 'id': self.id, - 'date': date2str(self.date), - 'source': self.source, - 'first_name': self.first_name, - 'last_name': self.last_name, - 'email': self.email, - 'member': self.member.get_dict() if self.member else {} - } + member = models.ForeignKey('Member', on_delete=models.SET_NULL, blank=True, null=True) class Member(BaseMember): diff --git a/members/static/img/teekkaribileet.jpg b/members/static/img/teekkaribileet.jpg deleted file mode 100644 index 9d0c472..0000000 Binary files a/members/static/img/teekkaribileet.jpg and /dev/null differ diff --git a/members/static/js/appconfig.js b/members/static/js/appconfig.js deleted file mode 100644 index a1c15f1..0000000 --- a/members/static/js/appconfig.js +++ /dev/null @@ -1,11 +0,0 @@ -var app = angular.module('memberApp', ['ngRoute','ngMaterial','ngMessages']); - -app.config(['$httpProvider', '$locationProvider', function ($httpProvider, $locationProvider) { - $httpProvider.defaults.xsrfCookieName = 'csrftoken'; - $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; -}]); - -app.config(function($interpolateProvider) { - $interpolateProvider.startSymbol('{$'); - $interpolateProvider.endSymbol('$}'); -}); diff --git a/members/static/js/readme.md b/members/static/js/readme.md deleted file mode 100644 index e69de29..0000000 diff --git a/members/templates/member_list.html b/members/templates/member_list.html index 998ce27..8fbc0a9 100644 --- a/members/templates/member_list.html +++ b/members/templates/member_list.html @@ -88,11 +88,6 @@ {% endfor %} -
-
- Tommy -
-
{% endblock content %} diff --git a/members/templates/payment_list.html b/members/templates/payment_list.html new file mode 100644 index 0000000..2527b18 --- /dev/null +++ b/members/templates/payment_list.html @@ -0,0 +1,90 @@ +{% extends "members_base.html" %} + +{% load static %} +{% load i18n %} +{% block content %} + +
+ + {% trans "Show filters" %} + +
+
+
+
+ +
+
+
+
+
{% trans "Added after" %}
+ +
+
+
{% trans "Added before" %}
+ +
+
+
+
+
{% trans "Paid after" %}
+ +
+
+
{% trans "Paid before" %}
+ +
+
+
+
+ + +
+
+
+
+
+
+
+

{% trans "Member register" %}

+ +
+
+ + + + + + + + + + + {% for payment in payment_list %} + + + + + + + + + {% endfor %} + +
{% trans "Date" %}{% trans "Source" %}{% trans "Member information" %}{% trans "Payment count" %}: {{ payment_count }}
{{ payment.date }}{{ payment.source }} + {% if payment.member %} + {{ payment.member.last_name }} {{ payment.member.first_name }}, {{ payment.member.email }} + {% else %} + {% trans "No member data found" %} + {% endif %} + {{ payment.last_name }}{{ payment.email }} + + + + + + +
+
+
+{% endblock content %} diff --git a/members/urls.py b/members/urls.py index 95dbefc..096df1d 100644 --- a/members/urls.py +++ b/members/urls.py @@ -10,6 +10,7 @@ from members.views import submit_member from members.views import update_member from members.views import delete_member_confirm from members.views import delete_member +from members.views import list_payments #application from members.views import application_index @@ -54,6 +55,9 @@ urlpatterns = [ # success page for the application url(r'^application/success$', application_success_index), + # list all payment events + url(r'^payments', list_payments), + # favourite icon url(r'^favicon\.ico$', favicon_view), ] diff --git a/members/views.py b/members/views.py index 2095d8d..13ec942 100644 --- a/members/views.py +++ b/members/views.py @@ -10,7 +10,7 @@ import json import requests import logging -from members.models import Member, Request +from members.models import Member, Request, Payment from members.forms import MemberForm # Logger function, you can use the same idea when implementing other loggers to other apps @@ -180,6 +180,18 @@ def application_success_index(request, *args, **kwargs): return render(request, 'application_success.html', {}) +@ensure_csrf_cookie +@require_http_methods(["GET"]) +@permission_required('members.change_member', login_url='/login') +def list_payments(request, *args, **kwargs): + payments = Payment.objects.all() + context = { + 'payment_list': payments, + 'payment_count': len(payments) + } + return render(request, 'payment_list.html', context) + + @ensure_csrf_cookie @require_http_methods(["POST"]) @permission_required('members.change_member', login_url='/login')