You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.views.generic import FormView
|
|
from .forms import *
|
|
from store.models import OrderData
|
|
from django.contrib.auth import logout, authenticate, login
|
|
from .utils import normalize_phone
|
|
from random import randint
|
|
import requests
|
|
from django.conf import settings
|
|
|
|
|
|
class LoginView(FormView):
|
|
form_class = LoginForm
|
|
template_name = 'accounts/login.jinja'
|
|
|
|
|
|
def login_view(request):
|
|
form = LoginForm(request.POST or None)
|
|
if form.is_valid():
|
|
phone = normalize_phone(form.cleaned_data['phone'])
|
|
password = form.cleaned_data['password']
|
|
profile = Profile.objects.get(phone=phone)
|
|
user = authenticate(username=profile.phone, password=password)
|
|
if user.is_active:
|
|
login(request, user)
|
|
return redirect('/account/')
|
|
c = dict(form=form)
|
|
return render(request, 'accounts/login.jinja', c)
|
|
|
|
|
|
def login_sms_view(request):
|
|
form = LoginSmsForm(request.POST or None)
|
|
phone = request.GET.get('phone', None)
|
|
form.phone = phone
|
|
if form.is_valid():
|
|
profile = form.profile
|
|
profile.set_password(settings.PROFILE_TEMP_PASSWORD)
|
|
profile.save()
|
|
user = authenticate(username=profile.phone, password=settings.PROFILE_TEMP_PASSWORD)
|
|
if user.is_active:
|
|
login(request, user)
|
|
return redirect('/account/')
|
|
|
|
c = dict(form=form)
|
|
return render(request, 'accounts/login_sms.jinja', c)
|
|
|
|
|
|
@login_required
|
|
def account_index(request):
|
|
return render(request, 'accounts/index.jinja')
|
|
|
|
|
|
@login_required
|
|
def account_logout(request):
|
|
logout(request)
|
|
return redirect('/')
|
|
|
|
|
|
@login_required
|
|
def order_detail(request, pk):
|
|
order = get_object_or_404(OrderData, pk=pk, profile=request.user)
|
|
c = dict(order=order)
|
|
return render(request, 'accounts/order_detail.jinja', c)
|
|
|