From 52bdac5fd93027e268676384258183dfec600d70 Mon Sep 17 00:00:00 2001 From: henu Date: Wed, 16 Nov 2016 18:12:03 +0200 Subject: [PATCH] Created loadCSV to memberlist --- members/static/html/jasenlista.html | 1 + members/static/js/members_controllers.js | 15 +++++++++------ members/views.py | 20 ++++++++++++++++++-- sikweb/urls.py | 2 ++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/members/static/html/jasenlista.html b/members/static/html/jasenlista.html index 3be5d26..085eb85 100644 --- a/members/static/html/jasenlista.html +++ b/members/static/html/jasenlista.html @@ -1,5 +1,6 @@

Jäsenlista (jäseniä {{members.length}})

+ diff --git a/members/static/js/members_controllers.js b/members/static/js/members_controllers.js index 15ca673..de32fd1 100644 --- a/members/static/js/members_controllers.js +++ b/members/static/js/members_controllers.js @@ -2,7 +2,7 @@ function notyfication(type,timeout){ return function(msg){ - noty({ + noty({ 'text': msg, 'layout': "bottomRight", 'type': type, @@ -22,7 +22,7 @@ function editor(returnpath){ $scope.send = function() { $http.put("/members/api/member/"+$scope.member.id, $scope.member).then(function(data){ - notySuccess("Jäsentiedot tallennettu"); + notySuccess("Jäsentiedot tallennettu"); $location.path(returnpath); }); } @@ -31,14 +31,14 @@ function editor(returnpath){ } } } -app.directive('ngConfirmClick', +app.directive('ngConfirmClick', [ function() { return { - link: function (scope, element, attr) + link: function (scope, element, attr) { var clickAction = attr.confirmedClick; - element.bind('click',function (event) + element.bind('click',function (event) { noty({ text: 'Oletko aivan varma? T. Lasse Lehtinen', @@ -82,7 +82,10 @@ app.controller("getController", function($scope, $http, $window, $location){ $http.put("/members/api/member/"+id,{paid:moment().format("YYYY-MM-DD kk:mm:ss") }).then(function(resp){ $scope.getFunction(); }); - } + }; + $scope.loadCSV = function() { + window.location = "/members/api/getCSV"; + }; $scope.delete_member = function(id) { $http.delete("/members/api/member/" + id).then( function(response) { diff --git a/members/views.py b/members/views.py index 0fd0067..b3a7af9 100644 --- a/members/views.py +++ b/members/views.py @@ -47,7 +47,7 @@ def applicationindex(request, *args, **kwargs): @ensure_csrf_cookie def applicationSuccessIndex(request, *args, **kwargs): return render(request, 'application_success.html',{}) - + @ensure_csrf_cookie @require_http_methods(["GET"]) @permission_required('members.change_member', login_url='/login') @@ -172,4 +172,20 @@ def handle_mem_request(request, idx, *args, **kwargs): else: # method == POST because other aren't allowed here req.delete() return HttpResponse('{"status":"success"}') - + +@ensure_csrf_cookie +@require_http_methods(["GET"]) +@permission_required('members.change_member', login_url='/login') +def export_csv(request, *args, **kwargs): + import csv + response = HttpResponse() + response['Content-type'] = 'text/csv' + response['Accept'] = 'text/csv' + response['Content-Disposition'] = 'filename; filename=members.csv' + writer = csv.writer(response, csv.excel) + response.write(u'\ufeff'.encode('utf8')) # BOM (optional...Excel needs it to open UTF-8 file properly) + for obj in Member.objects.all(): + data = obj.get_dict() + field_list = [str(data['id']), str(data['first_name']), str(data['last_name']), str(data['email']), str(data['POR']), str(data['AYY']), str(data['jas']), str(data['created']), str(data['paid'])] + writer.writerow(field_list) + return response diff --git a/sikweb/urls.py b/sikweb/urls.py index 13ffd1f..5ecd235 100644 --- a/sikweb/urls.py +++ b/sikweb/urls.py @@ -29,6 +29,7 @@ from members.views import handle_mem_request from members.views import csv_import as mem_csv_import from members.views import new_member_request from members.views import member_requests +from members.views import export_csv as mem_csv_export #infoscreen from infoscreen.views import index as infoindex from infoscreen.views import default as infodefault @@ -66,6 +67,7 @@ urlpatterns = [ url(r'^members/api/requests$', member_requests), url(r'^members/api/request$', new_member_request), url(r'^members/api/request/(?P\d+)$', handle_mem_request), + url(r'^members/api/getCSV$', mem_csv_export), #infoscreen url(r'^infoscreen/$', infodefault), url(r'^infoscreen/(?P\d+)$', infoindex),