兰海课程

code_views.py 2.3KB

    # -*- coding: utf-8 -*- from __future__ import division from django.conf import settings from django.core.urlresolvers import reverse from django.db import transaction from django.shortcuts import redirect, render from django_we.decorators import wechat_only from furl import furl from account.models import UserInfo from codes.models import CourseCodeInfo from course.decorators import check_token from utils.error.errno_utils import CourseCodeStatusCode, ProfileStatusCode from utils.error.response_utils import response @wechat_only @check_token @transaction.atomic def course_code(request): unique_identifier = request.GET.get(settings.WECHAT_UNIQUE_IDENTIFICATION, '') user, created = UserInfo.objects.select_for_update().get_or_create(**{settings.WECHAT_UNIQUE_IDENTIFICATION: unique_identifier}) user.unionid = request.GET.get('unionid', '') user.openid = request.GET.get('openid', '') user.nickname = request.GET.get('nickname', '') user.avatar = request.GET.get('headimgurl', '') user.save() try: course_code = CourseCodeInfo.objects.get(user_id=user.user_id, exchanged=True, status=True) except CourseCodeInfo.DoesNotExist: course_code = None if course_code: return redirect(furl(reverse('page:course_list')).add(request.GET).add({'user_id': user.user_id}).url) return render(request, 'page/course_code.html', { 'domain': settings.DOMAIN, 'user_info': user.data, 'params': 'user_id={}&vtoken={}'.format(user.user_id, request.GET.get('vtoken', '')), }) @transaction.atomic def code_exchange(request): user_id = request.POST.get('user_id', '') code = request.POST.get('code', '') try: user = UserInfo.objects.select_for_update().get(user_id=user_id) except UserInfo.DoesNotExist: return response(ProfileStatusCode.PROFILE_NOT_FOUND) try: course_code = CourseCodeInfo.objects.select_for_update().get(code=code, status=True) except CourseCodeInfo.DoesNotExist: return response(CourseCodeStatusCode.COURSE_CODE_NOT_FOUND) if course_code.exchanged: return response(CourseCodeStatusCode.COURSE_CODE_HAS_EXCHANGED) course_code.user_id = user.user_id course_code.exchanged = True course_code.save() return response(200, 'Course Code Exchanged Success', u'课程兑换码兑换成功')