Fix CSV separator stripping bug in csv import

This commit is contained in:
Jan Tuomi
2017-04-06 20:32:09 +03:00
parent d028612d55
commit f5dd72c6c4
4 changed files with 27 additions and 9 deletions
+6 -6
View File
@@ -69,12 +69,12 @@ class Member(models.Model):
try:
obj = cls.objects.create(
first_name=row[0],
last_name=row[1],
email=row[2],
POR=row[3],
AYY=row[4].lower() in affirmative_answers,
jas=row[5].lower() in affirmative_answers,
first_name=row[0].strip(),
last_name=row[1].strip(),
email=row[2].strip(),
POR=row[3].strip(),
AYY=row[4].lower().strip() in affirmative_answers,
jas=row[5].lower().strip() in affirmative_answers,
paid=timezone.now()
)
print("added obj {}".format(obj))
+1 -1
View File
@@ -266,7 +266,7 @@ app.controller("applEditController", memberDataEditor("/members/applications"));
app.controller("addManyController", function($scope, $http, $window) {
$scope.memberData = '';
$scope.sendCSV = function() {
$http.post("/members/api/csvimport", $scope.memberData).then(
$http.post("/members/api/csvimport", {'csv': $scope.memberData}).then(
function(response) {
notySuccess("Lähetys onnistui");
$window.location.reload();
+11 -1
View File
@@ -1,11 +1,21 @@
from django.test import TestCase
from django.test import TestCase, Client
from members.models import Member
from django.contrib.auth.models import User
import time
# Create your tests here.
class MemberRegisterTestCase(TestCase):
def setUp(self):
memb = Member.objects.create(first_name="Tidus", last_name="Tester")
test_admin = User.objects.create_superuser('test_admin', 'myemail@test.com', 'password123')
def test_member_created(self):
members = Member.objects.get(first_name="Tidus")
self.assertTrue(members)
def test_csv_import(self):
c = Client()
c.login(username='test_admin', password='password123')
response = c.post('/members/api/csvimport', {'csv': 'reiska, reiska, asd@asd, espoo, 1, 1'})
self.assertEqual(response.status_code, 200)
+9 -1
View File
@@ -197,10 +197,18 @@ def member(request, *args, **kwargs):
@permission_required('members.change_member', login_url='/login')
def csv_import(request, *args, **kwargs):
data = request.body.decode("utf-8")
resp_data = Member.import_csv(data)
try:
payload = json.loads(data)
except:
return HttpResponse(json.dumps({'error': 'Malformed request'}), 400)
resp_data = Member.import_csv(payload['csv'])
resp = HttpResponse(json.dumps(resp_data))
if resp_data['status'] == 'failure':
resp.status_code = 400
memberlogger.warning('POST request failed with status code {}'.format(resp.status_code))
return resp