views.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # coding=utf-8
  2. import traceback
  3. from rest_framework import generics
  4. from rest_framework.views import APIView
  5. from django.conf import settings
  6. from util import response_ok, response_error
  7. from util.wx.wechat import WeChat
  8. from util.permission import IsCustomerUser
  9. from util.exceptions import CustomError
  10. from apps.customer.activity.serializers import ActivitySerializer
  11. from apps.activity.models import Activity
  12. from apps.WechatApplet.models import WechatApplet
  13. class ActivityDetailView(generics.RetrieveAPIView):
  14. # permission_classes = [IsCustomerUser, ]
  15. queryset = Activity.objects.filter(enabled=True, delete=False, check_status=settings.PASS)
  16. serializer_class = ActivitySerializer
  17. def retrieve(self, request, *args, **kwargs):
  18. activity_id = request.GET.get('activity_id')
  19. instance = self.queryset.filter(id=activity_id).first()
  20. if not instance:
  21. raise CustomError(u'未找到相应活动信息!')
  22. serializer = self.get_serializer(instance)
  23. return response_ok(serializer.data)
  24. class ActivityPosterView(APIView):
  25. '''必须登录才能生成海报'''
  26. permission_classes = [IsCustomerUser, ]
  27. def get(self, request):
  28. appid = request.GET.get('appid', None)
  29. activity_id = request.GET.get('activity_id', None)
  30. try:
  31. app = WechatApplet.getByAppid(appid)
  32. activity = Activity.getById(activity_id)
  33. wxCode = app.generateActivityCode(request.customer.id, activity.id)
  34. serializer = ActivitySerializer(activity)
  35. data = serializer.data
  36. data['wxCode'] = settings.MEDIA_URL + wxCode
  37. return response_ok(data)
  38. except CustomError as e:
  39. return response_error(e.get_error_msg())
  40. except Exception as e:
  41. traceback.print_exc()
  42. return response_error(str(e))