app.YQPoint_views 源代码

from generic.models import YQPointRecord
from app.views_dependency import *
from app.models import (
    Prize,
    Pool,
    PoolRecord,
)
from app.YQPoint_utils import (
    get_pools_and_items,
    buy_exchange_item,
    buy_lottery_pool,
    buy_random_pool,
)
from app.utils import get_sidebar_and_navbar

__all__ = [
    'myYQPoint',
    'myPrize',
    'showPools',
]


[文档] class myYQPoint(ProfileTemplateView): template_name = 'myYQPoint.html' page_name = '我的元气值' http_method_names = ['get']
[文档] def prepare_get(self): html_display = {} my_messages.transfer_message_context(self.request.GET, html_display) html_display.update(YQPoint=self.request.user.YQpoint) self.extra_context.update(html_display=html_display) return self.get
[文档] def get(self): YQPoint = self.request.user.YQpoint received_set = YQPointRecord.objects.filter( user=self.request.user, ).exclude(source_type=YQPointRecord.SourceType.CONSUMPTION).order_by("-time") send_set = YQPointRecord.objects.filter( user=self.request.user, source_type=YQPointRecord.SourceType.CONSUMPTION, ).order_by("-time") return self.render(YQPoint=YQPoint, received_set=received_set, send_set=send_set)
[文档] class myPrize(ProfileTemplateView): template_name = 'myPrize.html' page_name = '我的奖品' http_method_names = ['get']
[文档] def prepare_get(self): html_display = {} my_messages.transfer_message_context(self.request.GET, html_display) self.extra_context.update(html_display=html_display) return self.get
[文档] def get(self): lottery_set = PoolRecord.objects.filter( user=self.request.user, pool__type=Pool.Type.LOTTERY, status__in=[ PoolRecord.Status.LOTTERING, PoolRecord.Status.NOT_LUCKY, PoolRecord.Status.UN_REDEEM], ).order_by("-time") exchange_set = PoolRecord.objects.filter( user=self.request.user, status__in=[ PoolRecord.Status.UN_REDEEM, PoolRecord.Status.REDEEMED, PoolRecord.Status.OVERDUE], ).order_by("-status", "-time") return self.render(lottery_set=lottery_set, exchange_set=exchange_set)
[文档] @login_required(redirect_field_name="origin") @utils.check_user_access(redirect_url="/logout/") @logger.secure_view() def showPools(request: UserRequest) -> HttpResponse: """ 展示各种奖池的页面,可以通过POST请求发起兑换/抽奖/买盲盒 :param request :type request: HttpRequest :return :rtype: HttpResponse """ if request.user.is_org(): return redirect(message_url(wrong("只有个人账号可以进入此页面!"))) frontend_dict = {"exchange_pools_info": {}, "lottery_pools_info": {}, "random_pools_info": {}} frontend_dict["current_pool"] = -1 # 当前所在的tab # 2表示无效果,1表示开出空盒(谢谢参与),0表示开出奖品 frontend_dict["random_pool_effect_code"] = 2 # 用户是否处于活跃状态。已经毕业的用户只能查看奖池,不能参与兑换 frontend_dict['active_user'] = request.user.active # POST表明发起兑换/抽奖/买盲盒 if request.method == "POST" and request.POST: if request.POST.get('submit_exchange', '') != '': context = buy_exchange_item( request.user, poolitem_id=request.POST['submit_exchange'], attributes={k: v for k, v in request.POST.items() if k not in ['pool_id', 'submit_exchange']}) my_messages.transfer_message_context( context, frontend_dict, normalize=True) frontend_dict["current_pool"] = int(request.POST["pool_id"]) elif request.POST.get('submit_lottery', '') != '': context = buy_lottery_pool( request.user, pool_id=request.POST['submit_lottery']) my_messages.transfer_message_context( context, frontend_dict, normalize=True) frontend_dict["current_pool"] = int(request.POST["submit_lottery"]) elif request.POST.get('submit_random', '') != '': context, prize_id, frontend_dict["random_pool_effect_code"] = buy_random_pool( request.user, pool_id=request.POST['submit_random']) my_messages.transfer_message_context( context, frontend_dict, normalize=True) if prize_id != -1: # 表明成功购买了一个盲盒 prize = Prize.objects.get(id=prize_id) # 供前端展示盲盒开出的结果 frontend_dict["random_pool_effect_name"] = prize.name frontend_dict["random_pool_effect_image"] = prize.image frontend_dict["current_pool"] = int(request.POST["submit_random"]) get_pools_and_items(Pool.Type.EXCHANGE, request.user, frontend_dict["exchange_pools_info"]) get_pools_and_items(Pool.Type.LOTTERY, request.user, frontend_dict["lottery_pools_info"]) # 这里包含结束一天以内的 get_pools_and_items(Pool.Type.RANDOM, request.user, frontend_dict["random_pools_info"]) frontend_dict["my_YQpoint"] = request.user.YQpoint # 元气值余额 if frontend_dict["current_pool"] == -1: if len(frontend_dict["exchange_pools_info"]["pools_info"]): frontend_dict["current_pool"] = frontend_dict["exchange_pools_info"]["pools_info"][0]["id"] elif len(frontend_dict["lottery_pools_info"]["pools_info"]): frontend_dict["current_pool"] = frontend_dict["lottery_pools_info"]["pools_info"][0]["id"] elif len(frontend_dict["random_pools_info"]["pools_info"]): frontend_dict["current_pool"] = frontend_dict["random_pools_info"]["pools_info"][0]["id"] frontend_dict["bar_display"] = get_sidebar_and_navbar( request.user, "元气值商城") return render(request, "showPools.html", frontend_dict)