From 75418da40303a7cfe3139d353cb91836f1a80877 Mon Sep 17 00:00:00 2001 From: Henri Varjotie Date: Wed, 1 Mar 2017 18:41:36 +0200 Subject: [PATCH] [Members] Made frontend to use mainly rest api --- members/serializers.py | 9 ++-- members/static/js/members_controllers.js | 53 ++++++++++++++---------- members/templates/edit_application.html | 4 +- members/views.py | 2 +- sikweb/urls.py | 2 + 5 files changed, 41 insertions(+), 29 deletions(-) diff --git a/members/serializers.py b/members/serializers.py index bcf8793..de62040 100644 --- a/members/serializers.py +++ b/members/serializers.py @@ -4,7 +4,8 @@ from datetime import datetime from members.models import Member, MemberRequest from django.conf import settings - +#, default=timezone.now +# , default=datetime.fromtimestamp(0) class MemberSerializer(serializers.Serializer): id = serializers.IntegerField(read_only=True) first_name = serializers.CharField(required=True, max_length=127) @@ -13,8 +14,8 @@ class MemberSerializer(serializers.Serializer): POR = serializers.CharField(max_length=255) AYY = serializers.BooleanField(default=False) jas = serializers.BooleanField(default=False) - created = serializers.DateTimeField(default=timezone.now) - paid = serializers.DateTimeField(default=datetime.fromtimestamp(0)) + created = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") + paid = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S") def create(self, validated_data): ''' @@ -32,7 +33,7 @@ class MemberSerializer(serializers.Serializer): instance.POR = validated_data.get('POR', instance.POR) instance.AYY = validated_data.get('AYY', instance.AYY) instance.jas = validated_data.get('jas', instance.jas) - instance.created = validated_data.get('created', instance.created) + # instance.created = validated_data.get('created', instance.created) instance.paid = validated_data.get('paid', instance.paid) instance.save() return instance diff --git a/members/static/js/members_controllers.js b/members/static/js/members_controllers.js index 30825e1..f13355c 100644 --- a/members/static/js/members_controllers.js +++ b/members/static/js/members_controllers.js @@ -23,12 +23,12 @@ function memberDataEditor(returnPath) { return function($scope, $http, $window, $location) { var id = memberId; console.log("id: " + id); - $http.get("/members/api/member/" + id).then(function(response) { + $http.get("/members/rest/api/members/" + id).then(function(response) { $scope.member = response.data; }); $scope.send = function() { - $http.put("/members/api/member/" + id, $scope.member).then(function(response){ + $http.put("/members/rest/api/members/" + id + "/", $scope.member).then(function(response){ notySuccess("Jäsentiedot tallennettu"); $window.location = returnPath; }); @@ -69,26 +69,26 @@ app.controller("getController", function($scope, $document, $http){ /* Fetch all members from the database and show all members in the table */ $scope.updateMembers = function() { - $http.get("/members/api/members").then(function(response){ + $http.get("/members/rest/api/members").then(function(response){ $scope.members = response.data; // map trues and falses to more user-friendly format - _.each($scope.members, function(m){ - m.jas = m.jas ? "Kyllä" : "Ei"; - m.AYY = m.AYY ? "Kyllä" : "Ei"; - }); + // _.each($scope.members, function(m){ + // m.jas = m.jas ? "Kyllä" : "Ei"; + // m.AYY = m.AYY ? "Kyllä" : "Ei"; + // }); $scope.shown_members = $scope.members; }); }; /* Fetch a single member from the database by id and update its row */ $scope.updateMember = function(id) { - $http.get("/members/api/member/" + id).then(function(response) { + $http.get("/members/rest/api/members/" + id).then(function(response) { for (var i = 0; i < $scope.shown_members.length; i++) { var member = $scope.shown_members[i]; if (String(member.id) == String(id)) { member = response.data; - member.jas = member.jas ? "Kyllä" : "Ei"; - member.AYY = member.AYY ? "Kyllä" : "Ei"; + // member.jas = member.jas ? "Kyllä" : "Ei"; + // member.AYY = member.AYY ? "Kyllä" : "Ei"; $scope.shown_members[i] = member; } @@ -99,12 +99,21 @@ app.controller("getController", function($scope, $document, $http){ /* Update the payment date of a single member to the current time and send * the member to the database */ $scope.updatePayment= function(id){ - $http.put("/members/api/member/"+id, { paid: moment().format("YYYY-MM-DD kk:mm:ss") }).then(function(response) { - $scope.updateMember(id); - notySuccess("Maksupäivämäärä päivitetty."); + $scope.member = {}; + //Find member whose payment needs to be updated + $scope.member = $scope.members.find(function(element){ + return element.id == id; }); + //Update the member data if member was found + if($scope.member != undefined){ + $scope.member.paid = moment().format("YYYY-MM-DD kk:mm:ss"); + $http.put("/members/rest/api/members/"+id +"/", $scope.member).then(function(response) { + $scope.updateMember(id); + notySuccess("Maksupäivämäärä päivitetty."); + }); + } }; - + /* Redirect the browser to the CSV dump download endpoint */ $scope.loadCSV = function() { window.location = "/members/api/getCSV"; @@ -112,7 +121,7 @@ app.controller("getController", function($scope, $document, $http){ /* Delete a single member by id */ $scope.deleteMember = function(id) { - $http.delete("/members/api/member/" + id).then( + $http.delete("/members/rest/api/members/" + id).then( function(response) { notySuccess("Poistaminen onnistui") $scope.updateMembers(); @@ -160,7 +169,7 @@ app.controller("getController", function($scope, $document, $http){ if (name.length == 0) continue; if (member.first_name.toLowerCase().includes(name) - || member.last_name.toLowerCase().includes(name) + || member.last_name.toLowerCase().includes(name) || member.email.toLowerCase().includes(name)) { result.push(member); @@ -213,7 +222,7 @@ app.controller("getController", function($scope, $document, $http){ app.controller("postController", function($scope, $http, $location) { $scope.member = {}; $scope.send = function() { - $http.post("/members/api/member/", $scope.member).then(function(response){ + $http.post("/members/rest/api/members/", $scope.member).then(function(response){ notySuccess("Jäsen lisätty!"); }); } @@ -222,12 +231,12 @@ app.controller("postController", function($scope, $http, $location) { /* Controller for application page */ app.controller("applController", function($scope, $http){ $scope.applUpdateAll = function() { - $http.get("/members/api/requests").then(function(response){ + $http.get("/members/rest/api/requests").then(function(response){ $scope.applications = response.data; - _.each($scope.applications, function(a){ - a.member.jas = a.member.jas ? "Kyllä" : "Ei"; - a.member.AYY = a.member.AYY ? "Kyllä" : "Ei"; - }); + // _.each($scope.applications, function(a){ + // a.member.jas = a.member.jas ? "Kyllä" : "Ei"; + // a.member.AYY = a.member.AYY ? "Kyllä" : "Ei"; + // }); }); }; diff --git a/members/templates/edit_application.html b/members/templates/edit_application.html index 14a5dda..308948b 100644 --- a/members/templates/edit_application.html +++ b/members/templates/edit_application.html @@ -33,8 +33,8 @@ - - + + diff --git a/members/views.py b/members/views.py index 5d442e9..f710860 100644 --- a/members/views.py +++ b/members/views.py @@ -24,7 +24,7 @@ memberlogger = logging.getLogger(__name__) logging.basicConfig(format='[%(levelname)s]%(asctime)s %(message)s', level=settings.LOGGERLEVEL, filename=settings.LOGPATH) -#API views +# REST API views ######################################## class MembersList(generics.ListCreateAPIView): queryset = Member.objects.all() diff --git a/sikweb/urls.py b/sikweb/urls.py index b279174..7672381 100644 --- a/sikweb/urls.py +++ b/sikweb/urls.py @@ -102,6 +102,8 @@ urlpatterns = [ url(r'^members/api/request/(?P\d+)$', handle_mem_request), url(r'^members/api/getCSV$', mem_csv_export), url(r'^members/tommy$', tommy_blooper), + + # Members API url(r'^members/rest/api/members/$', memsListAPI.as_view()), url(r'^members/rest/api/members/(?P\d+)/$', memDetailAPI.as_view()), url(r'^members/rest/api/requests/$', reqListAPI.as_view()),