# coding=utf-8 from django.shortcuts import render from uuid import uuid1 from AuthApp.models import * from django.contrib import auth from django.urls import reverse from django.http import HttpResponse, Http404, HttpResponseRedirect from django.template import loader, RequestContext from django.contrib.auth.decorators import login_required from BaseModels.mailSender import techSendMail from django.utils.translation import gettext as _ from datetime import datetime from django.contrib.auth.decorators import login_required from .funcs import * from GeneralApp.funcs import get_inter_http_response from GeneralApp.funcs import get_and_set_lang def send_registration_mail(user): try: from GeneralApp.funcs_options import get_options_by_opt_types, get_mail_send_options sets = get_options_by_opt_types(['domain', 'project_name'], only_vals=True) subject = _('Добро пожаловать в Trip With Bonus!') Dict = { 'logo': f'{sets["domain"]}/static/img/svg/LogoMobile.svg', 'project_name': sets['project_name'], 'message_title': subject, 'user': user } html = render_to_string('mail/m_registration.html', Dict) from BaseModels.mailSender import admin_send_mail_by_SMTPlib mail_sets = get_mail_send_options() to = [user.email, 'web@syncsystems.net', 'sa@a3-global.com', 'sysadmin.hax@gmail.com'] res = admin_send_mail_by_SMTPlib( mail_sets, subject=subject, from_email=mail_sets['sender_email'], to=to, html_content=html ) return res except Exception as e: print(f'send_registration_mail Error = {str(e)}') return None def check_user_registration_and_activate(request, user_id, authMailCode): try: user = User.objects.get( id=user_id, is_active=False, user_profile__authMailCode=authMailCode ) user.is_active = True user.save(update_fields=['is_active']) res = send_registration_mail(user) return HttpResponseRedirect(reverse('login_profile')) except User.DoesNotExist: user = None raise Http404 def registration_View(request): Dict = {} if request.GET and 'mailingSubscribeRequired' in request.GET and request.GET['mailingSubscribeRequired'] == 'true': request.session['mailingSubscribeRequired'] = 'true' # if request.p t = loader.get_template('pages/profile/p_registration.html') return get_inter_http_response(t, Dict, request) # return HttpResponse(t.render(Dict, request)) # def create_route_for_customer_View(request): # Dict = {} # t = loader.get_template('pages/profile/p_user_profile.html') # return HttpResponse(t.render(Dict, request)) # # # def create_route_for_mover_View(request): # Dict = {} # t = loader.get_template('pages/profile/p_user_profile.html') # return HttpResponse(t.render(Dict, request)) @login_required()#login_url='/profile/login/') def profile_page_View(request, page_name, id=None): lang = get_and_set_lang(request) page_html = get_profile_page_content_html(request, page_name, id) if not page_html: raise Http404 Dict = { 'page_html': page_html, 'page_name': page_name, 'page_type': 'profile' } if request.session and 'mailingSubscribeRequired' in request.session and request.session['mailingSubscribeRequired'] == 'true': request.user.user_profile.mailing_on = True request.user.user_profile.save(update_fields=['mailing_on']) del request.session['mailingSubscribeRequired'] # title = _('Личный кабинет пользователя') + ' ' + request.user.first_name + ' ' + request.user.last_name # # Dict.update({ # 'page': { # 'title': title, # 'description': title, # 'keywords': title, # } # }) # if request.GET and 'mobile' in request.GET and request.GET['mobile'] == 'true': # Dict.update({ # 'mobile': True # }) t = loader.get_template('pages/profile/p_user_profile.html') return get_inter_http_response(t, Dict, request) # return HttpResponse(t.render(Dict, request)) # @login_required()#login_url='/profile/login/') # def chat_w_user_View(request, user_id=None): # from ChatServiceApp.funcs import get_chat_page_content_Dict # # # receivers = get_chat_receivers_for_user(request.user) # # Dict = get_chat_page_content_Dict(request, user_id) # # # cur_chat_msgs = None # # # # try: # # cur_receiver = User.objects.get(id=user_id) # # if not cur_receiver in receivers: # # receivers.insert(0, cur_receiver) # # cur_chat_msgs = get_msgs_for_chat_w_users(request.user, cur_receiver) # # except User.DoesNotExist: # # cur_receiver = None # # # # # # Dict = { # # 'page': 'chat', # # 'cur_receiver': cur_receiver, # # 'receivers': receivers, # # 'messages':cur_chat_msgs # # } # # t = loader.get_template('pages/profile/p_user_profile.html') # return HttpResponse(t.render(Dict, request)) @login_required()#login_url='/profile/login/') def user_profile_View(request): Dict = {} user_online = request.session.get('online', False) # request.COOKIES['user_id'] = request.user.id t = loader.get_template('pages/profile/p_user_profile.html') response = get_inter_http_response(t, Dict, request) # response = HttpResponse(t.render(Dict, request)) response.set_cookie('user_id', request.user.id) return response def logout_View(request): from django.contrib.auth import logout from django.shortcuts import redirect logout(request) return redirect('login_profile') def login_View(request): from allauth.socialaccount.models import SocialApp auth_google_allow = SocialApp.objects.filter(provider='google') Dict = { 'auth_google_allow': auth_google_allow } if request.GET and 'mailingSubscribeRequired' in request.GET and request.GET['mailingSubscribeRequired'] == 'true': request.session['mailingSubscribeRequired'] = 'true' t = loader.get_template('pages/profile/p_login.html') return get_inter_http_response(t, Dict, request) # return HttpResponse(t.render(Dict, request)) def create_personal_user(data, creator): try: user_id = str(uuid1().hex)[:10] user_name = data['email'] mail = user_name user = User.objects.create_user(username=user_name, email=mail, password=user_id) if 'first_name' in data and data['first_name']: user.first_name = data['first_name'] if 'last_name' in data and data['last_name']: user.last_name = data['last_name'] user.is_staff = False user.is_active = False user.is_superuser = False # user.set_password(user_id) user.save() user_communications_ads_list = [] if 'office__name' in data['user_profile']: del data['user_profile']['office__name'] if 'communications' in data['user_profile']: user_communications_ads_list.extend(data['user_profile']['communications']) del data['user_profile']['communications'] if not 'creator' in data['user_profile'] and creator: data['user_profile']['creator'] = creator profiles = UserProfile.objects.filter(user=user).update(**data['user_profile']) user.refresh_from_db() return { 'name' : mail, 'pass' : user_id, 'user' : user } except Exception as e: return { 'error': f'{_("Ошибка добавление нового пользователя")} = {str(e)}', } def decode_get_param(data): import base64 import json d = data['data'].encode() token_data = base64.b64decode(d) try: request_data = token_data.decode('utf8') except: request_data = token_data data = json.loads(request_data) return data def recovery_password_user(request, uidb64=None, token=None): from django.contrib.auth.views import PasswordResetConfirmView return PasswordResetConfirmView(request=request, uidb64=uidb64, token=token ) def create_temporary_user(): from django.utils.translation import gettext as _ user_id = str(uuid1().hex)[:10] user_name = u'user'+user_id mail = user_id+u'@domain' user = User.objects.create_user(mail, mail,user_id) user.first_name = _(u'незарег. пользователь') user.last_name = u'' user.is_staff = False user.is_active = True user.is_superuser = False user.set_password(user_id) # print(u'user_create_pass', user.password) # p = user.get_profile() # p.address = '' # p.phone = '' # p.group = None # p.discount = 0 # p.pay_balance = 0 # p.authMailCode = uuid1().hex # p.save() user.save() user.mipp_user.temporary_user = True user.mipp_user.save() # print('user',user) # print('created profile',p) # print('user created', user) return { 'name' : mail, 'pass' : user_id, 'user' : user } def get_active_user(request): if request.user.is_anonymous: return None else: user = request.user # try: # bd = user.mipp_user.birthdate # except MIPPUser.DoesNotExist: # MIPPUser.objects.create(user=user) return user def get_active_user_if_anonymous_create_temporary(request): user = get_active_user(request) if not user: new_user_Dict = create_temporary_user() user = auth.authenticate(username=new_user_Dict['name'], password=new_user_Dict['pass']) if user: auth.login(request, user) return user