summaryrefslogtreecommitdiff
path: root/day9/task5_vue/backend/views.py
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-07-21 13:39:12 +0400
committerAndrew <saintruler@gmail.com>2019-07-21 13:39:12 +0400
commit3bc79068d5d7bae4bb4ecd3a50ff1c7cade4a3a7 (patch)
tree0b9e72a82e8d1059979cde96898d1ec2f6d5560f /day9/task5_vue/backend/views.py
parentaa9212f3226b10976c31cdf804139d60ae655a16 (diff)
Добавлена валидация для всех запросов на изменение бд.
Diffstat (limited to 'day9/task5_vue/backend/views.py')
-rw-r--r--day9/task5_vue/backend/views.py42
1 files changed, 27 insertions, 15 deletions
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('<a href="/">Return to main page</a><br><h1>Database Updated</h1>')
+ return JsonResponse(validation_results)
def delete_post(query, *args):
- get_wrapper_for('mysql').delete_from('table_task1', {'service_id': query['service_id']})
- return HtmlResponse('<a href="/">Return to main page</a><br><h1>Database Updated</h1>')
+ 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('<a href="/">Return to main page</a><br><h1>Database Updated</h1>')
+ return JsonResponse(validation_result)
def db_get(query, *args):