From cc377963e0c8cb8da0a1f56303098da4ee07cee4 Mon Sep 17 00:00:00 2001 From: SDE Date: Sun, 22 Oct 2023 14:18:22 +0300 Subject: [PATCH] 0.7.64 profile change photo --- ArticlesApp/js_urls.py | 2 +- ArticlesApp/urls_translate.py | 3 -- AuthApp/js_urls.py | 2 ++ AuthApp/js_views.py | 62 +++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/ArticlesApp/js_urls.py b/ArticlesApp/js_urls.py index 59756d8..fa8b0f6 100644 --- a/ArticlesApp/js_urls.py +++ b/ArticlesApp/js_urls.py @@ -5,6 +5,6 @@ from django.urls import path from .js_views import * urlpatterns = [ - + path('get_articles_block/', get_articles_block_ajax, name='get_articles_block_ajax'), ] \ No newline at end of file diff --git a/ArticlesApp/urls_translate.py b/ArticlesApp/urls_translate.py index 50456fa..0bd0ae9 100644 --- a/ArticlesApp/urls_translate.py +++ b/ArticlesApp/urls_translate.py @@ -1,12 +1,9 @@ from django.urls import path from .views import * -from .js_views import * urlpatterns = [ path('articles/', ArticlesPageView, name=u'articles'), path('articles//', ArticlesPageView, name=u'articles_by_year'), path('article//', ArticlesOnePageView, name=u'article_one'), path('info_page//', UserPageView, name=u'user_page'), - - path('get_articles_block/', get_articles_block_ajax, name='get_articles_block_ajax'), ] \ No newline at end of file diff --git a/AuthApp/js_urls.py b/AuthApp/js_urls.py index 118b650..ab58350 100644 --- a/AuthApp/js_urls.py +++ b/AuthApp/js_urls.py @@ -23,4 +23,6 @@ urlpatterns = [ path('change_profile/', change_profile_ajax, name='change_profile_ajax'), + path('change_profile_confirm/', change_profile_confirm_ajax, name='change_profile_confirm_ajax'), + path('change_avatar_confirm/', change_avatar_confirm_ajax, name='change_avatar_confirm_ajax'), ] \ No newline at end of file diff --git a/AuthApp/js_views.py b/AuthApp/js_views.py index a4fea0a..9c28b9f 100644 --- a/AuthApp/js_views.py +++ b/AuthApp/js_views.py @@ -12,6 +12,10 @@ from datetime import datetime from django.template.loader import render_to_string from django.urls import reverse from .funcs import * +from django.core.exceptions import ValidationError +import json +from django.core.files import File +import base64 # @login_required(login_url='/profile/login/') @@ -64,6 +68,64 @@ def support_tickets_ajax(request): return JsonResponse({'html': html}, status=200) +@login_required(login_url='/profile/login/') +def change_avatar_confirm_ajax(request): + from django.core.files.base import ContentFile + + if request.method != 'POST': + raise Http404 + + data = json.loads(request.body) + file_data = json.loads(data[0]) + head, content = file_data['file'].split(',') + content = base64.b64decode(content) + file = ContentFile(content) + request.user.user_profile.avatar.save(file_data['file_name'], file) + request.user.user_profile.save(update_fields=['avatar']) + + return JsonResponse({'url': request.user.user_profile.avatar.url}) + + +@login_required(login_url='/profile/login/') +def change_profile_confirm_ajax(request): + if request.method != 'POST': + raise Http404 + + data = request.POST + + from .forms import RegistrationForm + form = RegistrationForm(data) + if not form.is_valid(): + raise ValidationError(form.errors) + + data_for_save = {} + if 'firstname' in data: + data_for_save.update({'first_name': data['firstname']}) + if 'lastname' in data: + data_for_save.update({'last_name': data['lastname']}) + if 'email' in data: + data_for_save.update({'email': data['email']}) + data_for_save.update({'username': data['email']}) + request.user.update(**data_for_save) + + data_for_save = {} + if 'password' in data: + data_for_save.update({'password': data['password']}) + if 'confirm_password' in data: + data_for_save.update({'confirm_password': data['confirm_password']}) + request.user.u.set_password(data['password']) + + data_for_save = {} + if 'country' in data: + data_for_save.update({'country': data['country']}) + if 'city' in data: + data_for_save.update({'city': data['city']}) + if 'tel' in data: + data_for_save.update({'phone': data['tel']}) + request.user.user_profile.update(**data_for_save) + + html = get_profile_change_page_content_html(request) + return JsonResponse({'html': html}, status=200) @login_required(login_url='/profile/login/') def change_profile_ajax(request):