兰海课程

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 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 @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'课程兑换码兑换成功')