From 3bc79068d5d7bae4bb4ecd3a50ff1c7cade4a3a7 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 21 Jul 2019 13:39:12 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=BE=D0=B2=20=D0=BD=D0=B0=20=D0=B8?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B4?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day9/task5_vue/backend/views.py | 42 ++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'day9/task5_vue/backend/views.py') diff --git a/day9/task5_vue/backend/views.py b/day9/task5_vue/backend/views.py index ab8b628..5c39322 100644 --- a/day9/task5_vue/backend/views.py +++ b/day9/task5_vue/backend/views.py @@ -3,6 +3,7 @@ from backend.settings import STATIC_FILES_PATH from backend.core.response_types import ErrorResponse, TextFileResponse, ImageResponse, HtmlResponse, JsonResponse from backend.database.database import get_wrapper_for +from backend.database.validators import ValidationError import csv @@ -49,9 +50,10 @@ def upload_file(query, *args): scheme = wrapper.schemes['table_task1'] for row in data[1:]: - validation_results = scheme.validate(dict(zip(data[0], row))) + insert_values = dict(zip(data[0], row)) + validation_results = scheme.validate(insert_values) if not validation_results['error']: - wrapper.insert_one('table_task1', row, data[0]) + wrapper.insert_one('table_task1', insert_values) else: return ErrorResponse(500) @@ -80,31 +82,41 @@ def update_post(query, *args): expressions[key] = value wrapper.update('table_task1', expressions, {'service_id': query['service_id']}) - else: - return ErrorResponse(500) - return HtmlResponse('Return to main page

Database Updated

') + return JsonResponse(validation_results) def delete_post(query, *args): - get_wrapper_for('mysql').delete_from('table_task1', {'service_id': query['service_id']}) - return HtmlResponse('Return to main page

Database Updated

') + wrapper = get_wrapper_for('mysql') + scheme = wrapper.schemes['table_task1'] + + try: + scheme.fields['service_id'].validate(query['service_id']) + except ValidationError as e: + result = {'error': True, 'service_id': str(e)} + else: + result = {'error': False} + wrapper.delete_from('table_task1', {'service_id': query['service_id']}) + + return JsonResponse(result) def add_post(query, *args): wrapper = get_wrapper_for('mysql') header_fields = wrapper.get_column_names() - headers = [] - values = [] - for field_name in query: + + insert_data = {} + + for field_name, value in query.items(): if field_name in header_fields: - headers.append(field_name) - values.append(f'"{query[field_name]}"') + insert_data[field_name] = value - if len(headers) == len(header_fields): - wrapper.insert_one('table_task1', values, headers) + scheme = wrapper.schemes['table_task1'] + validation_result = scheme.validate(query) + if not validation_result['error']: + wrapper.insert_one('table_task1', insert_data) - return HtmlResponse('Return to main page

Database Updated

') + return JsonResponse(validation_result) def db_get(query, *args): -- cgit v1.2.3