示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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
示例#12
0
    def __init__(self, user):
        if not isinstance(user, User):
            raise Exception('must pass User object.')

        self.user = user
        self.couple = CoupleController.get_couple(user)
示例#13
0
 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)
示例#14
0
 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)