completed csvimport feature. see examples/members.txt

This commit is contained in:
okalintu
2016-08-15 19:42:25 +03:00
parent a64de3b177
commit b564e98c2e
4 changed files with 27 additions and 5 deletions
+12
View File
@@ -88,3 +88,15 @@ POST /members/api/request/:id
//reject member request (== delete request and delete member)
DELETE /members/api/request/:id
// mass import from csv
POST /members/api/csvimport
//csvformat first_name,last_name,email,POR,AYY,JAS
// example data
Pekka,Pöytä,pekka.p.pouta@mosh.pit,Tuska,1,0
// example response on success
{"status": "success", "errors": []}
// example response on failure (code will be 400)
{"status": "failure", "errors": ["failure adding item Pekka, P\u00f6yt\u00e42, pekka.p.pouta@mosh.pit, Tuska, Eip"]}
+4 -4
View File
@@ -56,17 +56,17 @@ class Member(models.Model):
except ValueError:
return {"status": "failure", "errors": ["could not parse csv file"]}
for row in data:
if True:
try:
obj = cls.objects.create(
first_name=row[0],
last_name=row[1],
email=row[2],
POR=row[3],
AYY=bool(row[4]),
jas=bool(row[5]),
AYY=row[4].lower() in ['yes','y','1','true',"kyllä", "khyl"],
jas=row[5].lower() in ['yes','y','1','true',"kyllä", "khyl"],
)
print("added obj {}".format(obj))
else:
except:
response["status"] = "failure"
response["errors"].append("failure adding item {}".format(", ".join(row)))
+9
View File
@@ -62,6 +62,15 @@ def member_requests(request, *args, **kwargs):
reqs = list(map(lambda r: r.get_dict(),MemberRequest.objects.all()))
return HttpResponse(json.dumps(reqs))
@ensure_csrf_cookie
def csv_import(request, *args, **kwargs):
data = request.body.decode("utf-8")
resp_data = Member.import_csv(data)
resp = HttpResponse(json.dumps(resp_data))
if resp_data['status'] == 'failure':
resp.status_code = 400
return resp
@ensure_csrf_cookie
def new_member_request(request, *args, **kwargs):
try:
+2 -1
View File
@@ -21,6 +21,7 @@ from members.views import index as mindex
from members.views import members as mems
from members.views import member as mem
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
@@ -34,7 +35,7 @@ urlpatterns = [
url(r'^members/api/members$', mems),
url(r'^members/api/member/(?P<idx>\d+)$', mem),
url(r'^members/api/member/$', mem),
url(r'^members/api/member/$', mem),
url(r'^members/api/csvimport$', mem_csv_import),
url(r'^members/api/requests$', member_requests),
url(r'^members/api/request$', new_member_request),
url(r'^members/api/request/(?P<idx>\d+)$', handle_mem_request),