completed csvimport feature. see examples/members.txt
This commit is contained in:
@@ -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
@@ -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)))
|
||||
|
||||
|
||||
@@ -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
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user