def create(self, request, *args, **kwargs): user = request.user couple = CoupleController.get_couple(request.user) try: album_pk = request.DATA.get('album') album = PhotoAlbum.objects.get(pk=album_pk) except: album = None image = request.FILES.get('image') if image is None: return Response({'success': False, 'message': _(u'사진 업로드 실패')}, status=status.HTTP_400_BAD_REQUEST) try: description = request.DATA.get('description') description = sanitize(description) except: description = None photo = Photo.objects.create( user=user, couple=couple, album=album, image=image, description=description) mission_handler = MissionHandler(user) mission_handler.new_cleared_missions() return Response({'success': True, 'data': {'photo_pk': photo.pk}}, status=status.HTTP_201_CREATED)
def list(self, request, *args, **kwargs): # Mission Category Setup category = request.GET.get("category", "DM") category = category.upper() if category not in ["DM", "LM", "CM", "EM"]: category = "DM" category = MissionCategory.objects.get(identity=category) # UserMission Get or Create user = request.user couple = CoupleController.get_couple(user) missions = Mission.active.filter(category=category) for mission in missions: UserMission.objects.get_or_create( user=user, couple=couple, mission=mission) page = self.paginate_queryset(missions) if page is not None: serializer = self.get_pagination_serializer(page) else: serializer = self.get_serializer(missions, many=True) return Response({'success': True, 'data': serializer.data}, status=status.HTTP_200_OK)
def get(self, request): couple = CoupleController.get_couple(request.user) couple_id = couple.pk if couple else 0 user_id = request.user.pk starter = request.user.userprofile.starter mission = request.user.userprofile.mission return Response({'success': True, 'couple_id': couple_id, 'user_id': user_id, 'starter': starter, 'mission': mission}, status=status.HTTP_200_OK)
def create(self, request): couple = CoupleController.get_couple(request.user) title = request.DATA.get('title') title = sanitize(title) photo_album = PhotoAlbum.objects.create(couple=couple, title=title) return Response({'success': True, 'data': {'photo_album_pk': photo_album.pk}}, status=status.HTTP_201_CREATED)
def __init__(self, request_obj, mission_id): if not isinstance(request_obj.user, User): raise Exception('must pass User object') self.request_obj = request_obj self.user = self.request_obj.user self.couple = CoupleController.get_couple(self.user) self.mission = Mission.objects.get(id=mission_id) self.couple_mission, created = UserMission.objects.get_or_create( couple=self.couple, mission=self.mission)
def update(self, request, pk=None): # 필드들의 변경은 가능 first_name = request.DATA.get('first_name', None) if first_name is not None: first_name = sanitize(first_name) last_name = request.DATA.get('last_name', None) if last_name is not None: last_name = sanitize(last_name) gender = request.DATA.get('gender', None) birthdate = request.DATA.get('birthdate', None) first_date = request.DATA.get('first_date', None) image = request.FILES.get('image', None) error_dic = self.__validate__( gender, birthdate, first_date) if error_dic: print error_dic error_type = error_dic['type'] message = error_dic['message'] return Response({'success': False, 'type': error_dic['type'], 'message': error_dic['message']}, status=status.HTTP_400_BAD_REQUEST) user = request.user userprofile = user.userprofile couple = CoupleController.get_couple(user) if first_name is not None: user.first_name = sanitize(first_name) if last_name is not None: user.last_name = sanitize(last_name) if gender is not None: userprofile.gender = gender if birthdate is not None: userprofile.birthdate = parser.parse(birthdate).date() if first_date is not None and couple: couple.first_date = parser.parse(first_date).date() if image is not None: userprofile.image = image user.save() userprofile.save() if couple: couple.save() return Response({'success': True}, status=status.HTTP_200_OK)
def create(self, request, *args, **kwargs): user = request.user couple = CoupleController.get_couple(user) receiver = CoupleController.get_partner(couple, user) content = request.DATA.get('content') content = sanitize(content) paper_type = request.DATA.get('paper_type') if not paper_type: paper_type = Letter.PLAIN else: try: paper_type = int(paper_type) except: message = _(u'편지지 타입이 올바르지 않습니다.') return Response({'success': False, 'message': message}, status=status.HTTP_400_BAD_REQUEST) letter = Letter.objects.create( user=user, couple=couple, receiver=receiver, content=content, paper_type=paper_type) mission_handler = MissionHandler(user) mission_handler.new_cleared_missions() return Response({'success': True, 'data': {'letter_pk': letter.pk}}, status=status.HTTP_201_CREATED)
def create(self, request, *args, **kwargs): couple = CoupleController.get_couple(request.user) request.DATA['couple'] = couple.pk request.DATA['title'] = sanitize(request.DATA['title']) serializer = self.get_serializer(data=request.DATA) if serializer.is_valid(): self.pre_save(serializer.object) self.object = serializer.save(force_insert=True) self.post_save(self.object, created=True) headers = self.get_success_headers(serializer.data) return Response({'success': True, 'data': serializer.data}, status=status.HTTP_201_CREATED, headers=headers) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def retrieve(self, request, pk=None): couple = CoupleController.get_couple(request.user) letter = Letter.objects.get(pk=pk) if letter.user != request.user and not letter.already_read: letter.already_read = True letter.save() sender = letter.user.get_full_name() receiver = letter.receiver.get_full_name() content = letter.content paper_type = letter.paper_type updated_at = letter.updated_at letter_data = {'sender': sender, 'receiver': receiver, 'content': content, 'updated_at': updated_at, 'paper_type': paper_type} return Response({'success': True, 'data': {'letter': letter_data}}, status=status.HTTP_200_OK)
def list(self, request): couple_object = CoupleController.get_couple(request.user) couple_ddays = CoupleDday.objects.filter(couple=couple_object) serializer = CoupleDdaySerializer(couple_ddays, many=True) return Response({'success': True, 'data': serializer.data}, status=status.HTTP_200_OK)
def has_object_permission(self, request, view, obj): is_owner = bool(obj.user == request.user) is_couple = bool(CoupleController.get_couple(request.user)) return is_owner or is_couple
def __init__(self, user): if not isinstance(user, User): raise Exception('must pass User object.') self.user = user self.couple = CoupleController.get_couple(user)
def update(self, request, pk=None): couple = CoupleController.get_couple(request.user) photo_album = PhotoAlbum.objects.get(pk=pk) serializer = PhotoAlbumSerializer(photo_album) return Response({'success': True, 'data': {'title': serializer.data['title']}}, status=status.HTTP_200_OK)
def list(self, request): couple_object = CoupleController.get_couple(request.user) photo_albums = PhotoAlbum.objects.filter(couple=couple_object) serializer = PhotoAlbumSerializer(photo_albums, many=True) return Response({'success': True, 'data': serializer.data}, status=status.HTTP_200_OK)