From 345a32e9a0a280f15465da49e0d7df79c1b2fee1 Mon Sep 17 00:00:00 2001 From: Konstantin Mishakov Date: Sun, 17 Sep 2023 23:11:55 +0700 Subject: [PATCH 1/4] level_2 --- django_views_routing_homework/urls.py | 5 +++-- .../views/level_2/c_product_type.py | 7 ++++++- .../views/level_2/d_authorization.py | 7 +++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/django_views_routing_homework/urls.py b/django_views_routing_homework/urls.py index 7ea3e32..39a60fc 100644 --- a/django_views_routing_homework/urls.py +++ b/django_views_routing_homework/urls.py @@ -4,6 +4,7 @@ from django_views_routing_homework.views.level_1.a_welcome_user import welcome_user_view from django_views_routing_homework.views.level_1.c_baned_username import is_username_banned_view from django_views_routing_homework.views.level_2.a_user_info_by_username import get_user_info_by_username_view +from django_views_routing_homework.views.level_2.b_greet_user_language import greet_user_in_different_languages_view from django_views_routing_homework.views.level_2.c_product_type import get_products_view from django_views_routing_homework.views.level_2.d_authorization import authorization_view, process_authorization_view from django_views_routing_homework.views.level_3.b_validate_user_data import validate_user_data_view @@ -15,7 +16,7 @@ path('admin/', admin.site.urls), path('welcome/', welcome_user_view), path('banned//', is_username_banned_view), - path('user-info-by-username//', get_user_info_by_username_view), + path('user-info-by-username//', get_user_info_by_username_view), path('products/', get_products_view), path('authorization/', authorization_view), path('process-authorization/', process_authorization_view), @@ -23,5 +24,5 @@ path('user/validate/', validate_user_data_view), path('user/github//full-name/', validate_user_data_view), path('text/generate/', generate_file_with_text_view), - # добавлять пути тут + path('greet///', greet_user_in_different_languages_view), ] diff --git a/django_views_routing_homework/views/level_2/c_product_type.py b/django_views_routing_homework/views/level_2/c_product_type.py index 5d87f69..6db5b88 100644 --- a/django_views_routing_homework/views/level_2/c_product_type.py +++ b/django_views_routing_homework/views/level_2/c_product_type.py @@ -38,6 +38,11 @@ def get_products_view(request): products = [] - # код писать тут + for product in PRODUCTS: + type = request.GET.get('type') + if type and product['type'] == type: + products.append(product) + elif not type: + products.append(product) return JsonResponse(data=products, safe=False) diff --git a/django_views_routing_homework/views/level_2/d_authorization.py b/django_views_routing_homework/views/level_2/d_authorization.py index 4873af5..8b648ae 100644 --- a/django_views_routing_homework/views/level_2/d_authorization.py +++ b/django_views_routing_homework/views/level_2/d_authorization.py @@ -38,7 +38,11 @@ def process_authorization_view(request): if request.method == 'POST': data = json.loads(request.body) - # код писать тут + print(data) + for username, password in USERNAME_TO_PASSWORD_MAPPER.items(): + if data['username'] == username and data['password'] == password: + return JsonResponse(data={}, status=200) + return JsonResponse(data={}, status=403) else: return HttpResponseNotAllowed(permitted_methods=['POST']) @@ -46,4 +50,3 @@ def process_authorization_view(request): # не обращайте внимания на эту вьюху, она нужна лишь для отрисовки страницы авторизации def authorization_view(request): return render(request, 'authorization.html') - From 3e0875735b236cb257c91f3e8c37bba57ecace2b Mon Sep 17 00:00:00 2001 From: Konstantin Mishakov Date: Mon, 18 Sep 2023 18:00:32 +0700 Subject: [PATCH 2/4] after_CR --- .../views/level_2/c_product_type.py | 11 +++++------ .../views/level_2/d_authorization.py | 10 +++++----- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/django_views_routing_homework/views/level_2/c_product_type.py b/django_views_routing_homework/views/level_2/c_product_type.py index 6db5b88..a1c097e 100644 --- a/django_views_routing_homework/views/level_2/c_product_type.py +++ b/django_views_routing_homework/views/level_2/c_product_type.py @@ -38,11 +38,10 @@ def get_products_view(request): products = [] - for product in PRODUCTS: - type = request.GET.get('type') - if type and product['type'] == type: - products.append(product) - elif not type: - products.append(product) + product_type = request.GET.get('type') + if product_type: + products = [product for product in PRODUCTS if product['type'] == product_type] + else: + products = PRODUCTS return JsonResponse(data=products, safe=False) diff --git a/django_views_routing_homework/views/level_2/d_authorization.py b/django_views_routing_homework/views/level_2/d_authorization.py index 8b648ae..dabf3db 100644 --- a/django_views_routing_homework/views/level_2/d_authorization.py +++ b/django_views_routing_homework/views/level_2/d_authorization.py @@ -38,11 +38,11 @@ def process_authorization_view(request): if request.method == 'POST': data = json.loads(request.body) - print(data) - for username, password in USERNAME_TO_PASSWORD_MAPPER.items(): - if data['username'] == username and data['password'] == password: - return JsonResponse(data={}, status=200) - return JsonResponse(data={}, status=403) + usernames = list(USERNAME_TO_PASSWORD_MAPPER.keys()) + if data['username'] in usernames and data['password'] == USERNAME_TO_PASSWORD_MAPPER[data['username']]: + return JsonResponse(data={}, status=200) + else: + return JsonResponse(data={}, status=403) else: return HttpResponseNotAllowed(permitted_methods=['POST']) From 12976b266e1e5782abf762dd79e483e9ff10f648 Mon Sep 17 00:00:00 2001 From: Konstantin Mishakov Date: Wed, 20 Sep 2023 16:07:52 +0700 Subject: [PATCH 3/4] after CR2 --- .../views/level_2/c_product_type.py | 4 +--- .../views/level_2/d_authorization.py | 8 +++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/django_views_routing_homework/views/level_2/c_product_type.py b/django_views_routing_homework/views/level_2/c_product_type.py index a1c097e..d53ebe6 100644 --- a/django_views_routing_homework/views/level_2/c_product_type.py +++ b/django_views_routing_homework/views/level_2/c_product_type.py @@ -37,11 +37,9 @@ def get_products_view(request): - products = [] + products = PRODUCTS product_type = request.GET.get('type') if product_type: products = [product for product in PRODUCTS if product['type'] == product_type] - else: - products = PRODUCTS return JsonResponse(data=products, safe=False) diff --git a/django_views_routing_homework/views/level_2/d_authorization.py b/django_views_routing_homework/views/level_2/d_authorization.py index dabf3db..3fe8107 100644 --- a/django_views_routing_homework/views/level_2/d_authorization.py +++ b/django_views_routing_homework/views/level_2/d_authorization.py @@ -38,11 +38,9 @@ def process_authorization_view(request): if request.method == 'POST': data = json.loads(request.body) - usernames = list(USERNAME_TO_PASSWORD_MAPPER.keys()) - if data['username'] in usernames and data['password'] == USERNAME_TO_PASSWORD_MAPPER[data['username']]: - return JsonResponse(data={}, status=200) - else: - return JsonResponse(data={}, status=403) + password = USERNAME_TO_PASSWORD_MAPPER.get(data['username']) + status = 200 if password and data['password'] == password else 403 + return JsonResponse(data={}, status=status) else: return HttpResponseNotAllowed(permitted_methods=['POST']) From 5680f38be5a11b24e388138059c76a24728a3d1b Mon Sep 17 00:00:00 2001 From: Konstantin Mishakov Date: Sun, 24 Sep 2023 20:47:57 +0700 Subject: [PATCH 4/4] added walrus operator --- django_views_routing_homework/views/level_2/c_product_type.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/django_views_routing_homework/views/level_2/c_product_type.py b/django_views_routing_homework/views/level_2/c_product_type.py index d53ebe6..a5f3b0a 100644 --- a/django_views_routing_homework/views/level_2/c_product_type.py +++ b/django_views_routing_homework/views/level_2/c_product_type.py @@ -38,8 +38,7 @@ def get_products_view(request): products = PRODUCTS - product_type = request.GET.get('type') - if product_type: + if product_type := request.GET.get('type'): products = [product for product in PRODUCTS if product['type'] == product_type] return JsonResponse(data=products, safe=False)