Esempio n. 1
0
 def save(self, *args, **kwargs):
     if not self.mask:
         self.mask = 0
     self.data = convert_to_json(self.data)
     self.accessHistory = convert_to_json(self.accessHistory)
     cache_expire_ru(self, 'realOwner_vd_ids')
     super(VD, self).save(*args, **kwargs)
Esempio n. 2
0
 def save(self, *args, **kwargs):
     if not self.vd:
         raise IntegrityError('Proxy.vd must not be None')
     if not self.id:
         # 나중에 vd 가 바뀔 수 있으며, 이때부터 proxy.id != proxy.vd.id
         self.id = self.vd.id
     self.guide = convert_to_json(self.guide)
     super(Proxy, self).save(*args, **kwargs)
Esempio n. 3
0
    def create(self, request, *args, **kwargs):
        # vd 조회
        vd = self.vd
        if not vd: return Response(status=status.HTTP_401_UNAUTHORIZED)

        # guide 조회
        guide = convert_to_json(request.data['guide'])

        # myself 변환
        if 'vd' in guide and guide['vd'] == 'myself':
            guide['vd'] = vd.id

        # check validation 1
        if 'type' in guide and guide['type'] == 'user':
            ru = RealUser.objects.get(email=guide['email'])
            if ru == self.vd.realOwner:
                return Response(status=status.HTTP_400_BAD_REQUEST)

        # proxy 조회
        try:
            proxy = Proxy.objects.get(guide=guide)
        except Proxy.DoesNotExist:
            vd_publisher = VD()
            # TODO : type 이 images 가 아닌 경우에 대한 구현
            if guide['type'] == 'images':
                vd_publisher.is_private = True
                vd_publisher.is_public = False
                vd_publisher.parent = vd
            vd_publisher.save()
            proxy = Proxy.objects.create(vd=vd_publisher, guide=guide)

        # check validation 2
        if not proxy.vd:
            raise NotImplementedError
        if proxy.vd == vd:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        if proxy.vd.is_private:
            if not proxy.vd.parent:
                raise NotImplementedError
            if proxy.vd.parent != vd:
                return Response(status=status.HTTP_403_FORBIDDEN)

        # importer 생성 및 celery task 처리
        importer, is_created = Importer.objects.get_or_create(publisher=proxy,
                                                              subscriber=vd)
        importer.start(high_priority=is_created)

        # 결과 처리
        serializer = self.get_serializer(importer)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
Esempio n. 4
0
 def save(self, *args, **kwargs):
     if not self.created:
         self.created = get_timestamp()
     self.data = convert_to_json(self.data)
     super(Inquiry, self).save(*args, **kwargs)
Esempio n. 5
0
 def save(self, *args, **kwargs):
     if not self.email:
         raise ValueError('RealUser.email cannot be None')
     self.data = convert_to_json(self.data)
     self.email = BaseUserManager.normalize_email(self.email)
     super(RealUser, self).save(*args, **kwargs)
Esempio n. 6
0
 def save(self, *args, **kwargs):
     self.value = convert_to_json(self.value)
     super(Storage, self).save(*args, **kwargs)