|
@@ -18,6 +18,7 @@ def login(request):
|
|
|
hasher = proto.copy()
|
|
hasher = proto.copy()
|
|
|
hasher.update(password.encode('utf-8'))
|
|
hasher.update(password.encode('utf-8'))
|
|
|
if hasher.hexdigest() == user.password:
|
|
if hasher.hexdigest() == user.password:
|
|
|
|
|
+ request.session['user'] = user
|
|
|
return redirect('sub')
|
|
return redirect('sub')
|
|
|
except User.DoesNotExist:
|
|
except User.DoesNotExist:
|
|
|
pass
|
|
pass
|
|
@@ -25,7 +26,6 @@ def login(request):
|
|
|
{'hint': '用户名或密码错误'})
|
|
{'hint': '用户名或密码错误'})
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
def register(request):
|
|
def register(request):
|
|
|
form = UserForm()
|
|
form = UserForm()
|
|
|
if request.method.lower() == 'get':
|
|
if request.method.lower() == 'get':
|
|
@@ -44,29 +44,64 @@ def register(request):
|
|
|
return render(request, 'demo/register.html', ctx)
|
|
return render(request, 'demo/register.html', ctx)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def check_username(request):
|
|
|
|
|
+ ctx = {}
|
|
|
|
|
+ if 'username' in request.GET:
|
|
|
|
|
+ username = request.GET['username']
|
|
|
|
|
+ try:
|
|
|
|
|
+ User.objects.get(username__exact=username)
|
|
|
|
|
+ ctx['valid'] = False
|
|
|
|
|
+ except User.DoesNotExist:
|
|
|
|
|
+ ctx['valid'] = True
|
|
|
|
|
+ return HttpResponse(json.dumps(ctx),
|
|
|
|
|
+ content_type='application/json; charset=utf-8')
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def show_subjects(request):
|
|
def show_subjects(request):
|
|
|
- ctx = {'subjects_list': Subject.objects.all()}
|
|
|
|
|
- return render(request, 'demo/subject.html', ctx)
|
|
|
|
|
|
|
+ if 'user' in request.session and request.session['user']:
|
|
|
|
|
+ ctx = {'subjects_list': Subject.objects.all()}
|
|
|
|
|
+ return render(request, 'demo/subject.html', ctx)
|
|
|
|
|
+ else:
|
|
|
|
|
+ return render(request, 'demo/login.html',
|
|
|
|
|
+ {'hint': '请先登录!'})
|
|
|
|
|
|
|
|
|
|
|
|
|
def show_teachers(request, no):
|
|
def show_teachers(request, no):
|
|
|
- teachers = Teacher.objects.filter(subject__no=no)
|
|
|
|
|
- ctx = {'teachers_list': teachers}
|
|
|
|
|
- return render(request, 'demo/teacher.html', ctx)
|
|
|
|
|
|
|
+ if 'user' in request.session and request.session['user']:
|
|
|
|
|
+ teachers = Teacher.objects.filter(subject__no=no)\
|
|
|
|
|
+ .select_related('subject')
|
|
|
|
|
+ ctx = {'teachers_list': teachers}
|
|
|
|
|
+ return render(request, 'demo/teacher.html', ctx)
|
|
|
|
|
+ else:
|
|
|
|
|
+ return render(request, 'demo/login.html',
|
|
|
|
|
+ {'hint': '请先登录!'})
|
|
|
|
|
|
|
|
|
|
|
|
|
def make_comment(request, no):
|
|
def make_comment(request, no):
|
|
|
ctx = {'code': 200}
|
|
ctx = {'code': 200}
|
|
|
- try:
|
|
|
|
|
- teacher = Teacher.objects.get(pk=no)
|
|
|
|
|
- if request.path.startswith('/good'):
|
|
|
|
|
- teacher.good_count += 1
|
|
|
|
|
- ctx['result'] = f'好评({teacher.gcount})'
|
|
|
|
|
|
|
+ if 'user' in request.session and request.session['user']:
|
|
|
|
|
+ user = request.session['user']
|
|
|
|
|
+ if user.counter > 0:
|
|
|
|
|
+ try:
|
|
|
|
|
+ teacher = Teacher.objects.get(pk=no)
|
|
|
|
|
+ if request.path.startswith('/good'):
|
|
|
|
|
+ teacher.good_count += 1
|
|
|
|
|
+ ctx['result'] = f'好评({teacher.gcount})'
|
|
|
|
|
+ else:
|
|
|
|
|
+ teacher.bad_count += 1
|
|
|
|
|
+ ctx['result'] = f'差评({teacher.bcount})'
|
|
|
|
|
+ teacher.save()
|
|
|
|
|
+ user.counter -= 1
|
|
|
|
|
+ User.objects.filter(username__exact=user.username)\
|
|
|
|
|
+ .update(counter=user.counter)
|
|
|
|
|
+ request.session['user'] = user
|
|
|
|
|
+ except Teacher.DoesNotExist:
|
|
|
|
|
+ ctx['code'] = 404
|
|
|
else:
|
|
else:
|
|
|
- teacher.bad_count += 1
|
|
|
|
|
- ctx['result'] = f'差评({teacher.bcount})'
|
|
|
|
|
- teacher.save()
|
|
|
|
|
- except Teacher.DoesNotExist:
|
|
|
|
|
- ctx['code'] = 404
|
|
|
|
|
|
|
+ ctx['code'] = 403
|
|
|
|
|
+ ctx['result'] = '票数不足'
|
|
|
|
|
+ else:
|
|
|
|
|
+ ctx['code'] = 302
|
|
|
|
|
+ ctx['result'] = '请先登录'
|
|
|
return HttpResponse(json.dumps(ctx),
|
|
return HttpResponse(json.dumps(ctx),
|
|
|
content_type='application/json; charset=utf-8')
|
|
content_type='application/json; charset=utf-8')
|