Пример #1
0
    def create(self, request, *args, **kwargs):
        logger.info("TRY CREATE CHATBOT  ||" + create_log_content(request))
        # Django 에서는 request의 body로 들어온 정보를 변환하지 못하도록 막았기 때문에 이를 풀어줌
        mutable = request.POST._mutable
        request.POST._mutable = True

        chat_log_data = request.data
        now_date_time = datetime.now()

        # 필드 중 생성 날짜. 시간들에 대한 정보를 클라이언트가 아닌 서버에서 생성
        create_date_time = "%04d%02d%02d%02d%02d%02d" % (
            now_date_time.year,
            now_date_time.month,
            now_date_time.day,
            now_date_time.hour,
            now_date_time.minute,
            now_date_time.second
        )
        # 20191123 => 2019년 11월 23
        create_date = create_date_time[:8]
        # 193043일 => 19시 30분 43초
        create_time = create_date_time[8:]

        chat_log_data['createDateTime'] = create_date_time
        chat_log_data['createDate'] = create_date
        chat_log_data['createTime'] = create_time

        # 생성 날짜, 시간에 대한 정보를 바꾸었으니 다시 원상 복구
        request.POST._mutable = mutable

        # 이 데이터를 토대로 채팅 생성
        return CreateModelMixin.create(self, request, *args, **kwargs)
Пример #2
0
    def create(self, request, *args, **kwargs):
        logger.info("TRY CREATE WELFARE  ||" + create_log_content(request))
        welfare_data = request.data

        disables = welfare_data.get('disables', [])
        house_types = welfare_data.get('houseTypes', [])
        desires = welfare_data.get('desires', [])
        target_characters = welfare_data.get('targetCharacters', [])
        life_cycles = welfare_data.get('lifeCycles', [])
        responsibles = welfare_data.get('responsibles', [])

        # 유효성 검사를 거치지않는 필드들에 대해서 따로 검사
        try:
            for disable in disables:
                Disable.objects.get(disableId=disable)
            for house_type in house_types:
                HouseType.objects.get(houseTypeId=house_type)
            for desire in desires:
                Desire.objects.get(desireId=desire)
            for target_character in target_characters:
                TargetCharacter.objects.get(targetCharacterId=target_character)
            for life_cycle in life_cycles:
                LifeCycle.objects.get(lifeCycleId=life_cycle)
            for responsible in responsibles:
                Responsible.objects.get(responsibleId=responsible)
        except Disable.DoesNotExist or Welfare.DoesNotExist or HouseType.DoesNotExist or TargetCharacter.DoesNotExist \
               or LifeCycle.DoesNotExist or Responsible.DoesNotExist:
            return Response(status=status.HTTP_400_BAD_REQUEST)

        return CreateModelMixin.create(self, request, *args, **kwargs)
Пример #3
0
    def create(self, request):
        res = CreateModelMixin.create(self, request)
        if res.status_code == 201:
            tok = CommunicationThreadToken.objects.create(
                thread=self.object.thread, user=self.object.author)
            log.info('Reply token with UUID %s created.' % (tok.uuid))

        return res
Пример #4
0
    def create(self, request, *args, **kwargs):
        bulk = isinstance(request.data, list)

        if not bulk:
            return CreateModelMixin.create(self, request, *args, **kwargs)

        else:
            data = self.clear_request_data(request)
            serializer = self.get_serializer(data=data, many=True)
            serializer.is_valid(raise_exception=True)
            self.perform_bulk_create(serializer)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
Пример #5
0
 def create(self, request, *args, **kwargs):
     identity = Identity.objects.get(current_user=request.user)
     if len(
             Absence.objects.filter(applier=identity,
                                    time_absence=request.POST.get(
                                        'time_absence', '20161103'))) != 0:
         return Response({'msg': 'Duplicated absence'},
                         status=status.HTTP_400_BAD_REQUEST)
     upper_bound = Service.get_upper_bound(identity.type)
     decrease_time = 1
     absence_time = identity.absence_times
     absence_type = request.POST.get('type', '')
     if absence_type == '全体排练+弦乐分排' or absence_type == '全体排练+管乐分排':
         absence_time += 1
         decrease_time += 1
     if absence_time >= upper_bound:
         return Response({'msg': 'You have used up all of your chances.'},
                         status=status.HTTP_403_FORBIDDEN)
     Service.change_absence_time(identity,
                                 identity.absence_times + decrease_time)
     Service.send_email(identity.name, timezone.now(),
                        request.POST.get('reason', ''))
     return CreateModelMixin.create(self, request, *args, **kwargs)
Пример #6
0
    def create(self, request, *args, **kwargs):
        # Django 에서는 request의 body로 들어온 정보를 변환하지 못하도록 막았기 때문에 이를 풀어줌
        mutable = request.POST._mutable
        request.POST._mutable = True

        qna_data = request.data
        now_datetime = datetime.now()

        # 필드 중 생성 날짜. 시간들에 대한 정보를 클라이언트가 아닌 서버에서 생성
        create_date_time = "%04d%02d%02d%02d%02d%02d" % (
            now_datetime.year, now_datetime.month, now_datetime.day,
            now_datetime.hour, now_datetime.minute, now_datetime.second)
        create_date = create_date_time[:8]
        create_time = create_date_time[8:]

        qna_data['createDateTime'] = create_date_time
        qna_data['createDate'] = create_date
        qna_data['createTime'] = create_time

        # 생성 날짜, 시간에 대한 정보를 바꾸었으니 다시 원상 복구
        request.POST._mutable = mutable

        # 이 데이터를 토대로 채팅 생성
        return CreateModelMixin.create(self, request, *args, **kwargs)
Пример #7
0
    def create(self, request, *args, **kwargs):
        logger.info("TRY CREATE MEMBER" + create_log_content(request))

        # Django 에서는 request의 body로 들어온 정보를 변환하지 못하도록 막았기 때문에 이를 풀어줌
        mutable = request.POST._mutable
        request.POST._mutable = True

        member_data = request.data
        social_id = member_data['socialId']
        salting_with_social_id = 'hoxymetoo_' + social_id
        now_datetime = datetime.now()

        jobs = member_data.get('jobs', [])
        disables = member_data.get('disables', [])
        welfares = member_data.get('welfares', [])
        house_types = member_data.get('houseTypes', [])
        desires = member_data.get('desires', [])
        target_characters = member_data.get('targetCharacters', [])
        life_cycles = member_data.get('lifeCycles', [])

        # 유효성 검사를 거치지않는 필드들에 대해서 따로 검사
        try:
            for job in jobs:
                Job.objects.get(jobId=job)
            for disable in disables:
                Disable.objects.get(disableId=disable)
            for welfare in welfares:
                Welfare.objects.get(welId=welfare)
            for house_type in house_types:
                HouseType.objects.get(houseTypeId=house_type)
            for desire in desires:
                Desire.objects.get(desireId=desire)
            for target_character in target_characters:
                TargetCharacter.objects.get(targetCharacterId=target_character)
            for life_cycle in life_cycles:
                LifeCycle.objects.get(lifeCycleId=life_cycle)
        except Job.DoesNotExist or Disable.DoesNotExist or Welfare.DoesNotExist or HouseType.DoesNotExist or \
               Desire.DoesNotExist or TargetCharacter.DoesNotExist or LifeCycle.DoesNotExist:
            logger.error("ERROR with field associated with CREATE MEMBER" +
                         create_log_content(request))
            return Response(status=status.HTTP_400_BAD_REQUEST)

        # 필드 중 생성 날짜. 시간들에 대한 정보를 클라이언트가 아닌 서버에서 생성
        create_date_time = "%04d%02d%02d%02d%02d%02d" % (
            now_datetime.year, now_datetime.month, now_datetime.day,
            now_datetime.hour, now_datetime.minute, now_datetime.second)
        create_date = create_date_time[:8]
        create_time = create_date_time[8:]
        mem_key = hashlib.sha256(salting_with_social_id.encode()).hexdigest()

        member_data['memKey'] = mem_key
        member_data['createDateTime'] = create_date_time
        member_data['updateDateTime'] = create_date_time
        member_data['createDate'] = create_date
        member_data['updateDate'] = create_date
        member_data['createTime'] = create_time
        member_data['updateTime'] = create_time

        # mutable 원상복구
        request.POST._mutable = mutable

        # 이 데이터를 토대로 멤버 생성
        CreateModelMixin.create(self, request, *args, **kwargs)

        instance = Member.objects.get(socialId=social_id)
        serializer = self.get_serializer(instance)
        serializer_data = serializer.data

        list_of_welfare_of_recommend = self.select_welfare_of_member(social_id)
        for welfare_of_recommend in list_of_welfare_of_recommend:
            MemWelfare.objects.get_or_create(socialId=instance,
                                             welId=welfare_of_recommend)

        member_data = self.changeAddressToString(serializer_data)
        decrypt_member_data = self.decryptMemberData(social_id=social_id,
                                                     member_data=member_data)
        return Response(decrypt_member_data)
Пример #8
0
    def create(self, request, *args, **kwargs):
        # Test if the username exists
        username = request.data['username']
        if not User.objects.filter(username=username).exists():
            return Response({'User does not exist'},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)

        upload_extras = request.data['upload_extras']
        dp_type = request.data['data_product_type']

        request.data['data'] = request.FILES['file']

        # Add the SNEx2 targetid of the target to request
        targetname = request.data['targetname']
        targetquery = Target.objects.filter(name=targetname)
        if not targetquery:
            targetquery = TargetName.objects.filter(name=targetname)
            targetid = targetquery.first().target_id
        else:
            targetid = targetquery.first().id
        request.data['target'] = targetid

        # Sort the extras keywords into the appropriate dictionaries
        extras = {}
        extras['reduction_type'] = upload_extras.pop('reduction_type', '')
        background_subtracted = upload_extras.pop('background_subtracted', '')
        if background_subtracted:
            extras['background_subtracted'] = background_subtracted
            extras['subtraction_algorithm'] = upload_extras.pop(
                'subtraction_algorithm', '')
            extras['template_source'] = upload_extras.pop(
                'template_source', '')

        used_in = upload_extras.pop('used_in', '')
        if used_in:
            if ',' in used_in:
                last_name = used_in.split(',')[0]
                first_name = used_in.split(', ')[1]
                paper_query = Papers.objects.filter(
                    target_id=targetid,
                    author_last_name=last_name,
                    author_first_name=first_name)
                if len(paper_query) != 0:
                    paper_string = str(paper_query.first())
                    upload_extras['used_in'] = paper_string
            else:
                paper_query = Papers.objects.filter(target_id=targetid,
                                                    author_last_name=used_in)
                if len(paper_query) != 0:
                    paper_string = str(paper_query.first())
                    upload_extras['used_in'] = paper_string

        response = CreateModelMixin.create(self, request, *args, **kwargs)
        if response.status_code == status.HTTP_201_CREATED:
            dp = DataProduct.objects.get(pk=response.data['id'])
            try:
                #run_hook('data_product_post_upload', dp)
                run_custom_data_processor(dp, extras)
                # Make the ReducedDatumExtra row corresponding to this dp
                upload_extras['data_product_id'] = dp.id
                reduced_datum_extra = ReducedDatumExtra(target_id=targetid,
                                                        data_type=dp_type,
                                                        key='upload_extras',
                                                        value=upload_extras)
                reduced_datum_extra.save()
            except Exception:
                ReducedDatum.objects.filter(data_product=dp).delete()
                dp.delete()
                return Response(
                    {
                        'Data processing error':
                        '''There was an error in processing your DataProduct into \
                                                             individual ReducedDatum objects.'''
                    },
                    status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        return response