コード例 #1
0
def create_annotation(form_data: QueryDict):  
    import json

    a = Annotator.objects.get(id=form_data['annotator_id'])
    tr = TweetRelation.objects.get(id=form_data['tweet_relation_id'])
    ts = form_data['time_spent']

    anotation_on_tweet_by_user_exists =  Annotation.objects \
    .filter(tweet_relation=tr, annotator=a) \
    .exists()

    if not anotation_on_tweet_by_user_exists:
        ann = Annotation.objects.create(
            tweet_relation=tr,
            annotator=a,
            time_spent=ts
        )

        questions = {k: v for k, v in form_data.items() if k.isnumeric()}
        for k, v in questions.items():
            q = Question.objects.get(id=k)
            if q.type == "Checkbox":
                value = json.dumps(form_data.getlist(k), ensure_ascii=False)
            else:
                value = json.dumps(v, ensure_ascii=False)
            answer = Answer.objects.create(
                value=value,
                annotation_id=ann.id,
                question_id=q.id,            
            )

        remove_id_from_cache('IN_PROGRESS_IDS', tr.id)

        return ann
    return None
コード例 #2
0
ファイル: base_server.py プロジェクト: czk1989/MY_CMDB
    def post_server(self):
        response = BaseResponse()
        add_dict = QueryDict(self.request.body, encoding='utf-8')
        data = {}
        for k, v in add_dict.items():
            data[k] = v
        obj = self.form(data)
        if obj.is_valid():
            if self.post_data:
                # for save_model in self.post_data:
                #     temp={}
                #     for i in obj.cleaned_data:
                #         for j in save_model._meta.fields:
                #             if j.name==i:
                #                 temp[i]=obj.cleaned_data['i']
                #     save_model.objects.create(**temp)
                self.post_data.objects.create(**obj.cleaned_data)

            else:
                self.data.objects.create(**obj.cleaned_data)
            response.status = True
            return response
        else:
            response.status = False
            response.data = obj.as_table()
            return response
コード例 #3
0
def request_body_serialze(request):
    querydict = QueryDict(request.body.decode("utf-8"), encoding="utf-8")
    response_dict = {}
    try:
        for key, val in querydict.items():
            response_dict[key] = val
    except:
        pass
    return response_dict
コード例 #4
0
def request_body_serialze(request):
    # 对request.body做QuertDict编码转换处理
    # 如果不做数据处理:格式b'id=49&name=%E4%B8%AD&name_cn=&comment='
    # 页面中提交的中文“中”,变成%E4%B8%AD
    querydict = QueryDict(request.body.decode("utf-8", errors='replace'),
                          encoding="utf-8")
    response_dict = {}
    try:
        for key, val in querydict.items():
            response_dict[key] = json.loads(val)
    except:
        pass
    return response_dict
コード例 #5
0
 def request_body_serialze(self, request):
     '''处理数据进行反序列化的函数
     #quertdict转成普通字典
     对request.body做QuertDict编码转换处理
     # 如果不做数据处理:格式b'id=49&name=%E4%B8%AD&name_cn=&comment='
     # 页面中提交的中文“中”,变成%E4%B8%AD'''
     querydict = QueryDict(request.body.decode("utf-8"), encoding="utf-8")
     response_dict = {}
     try:
         for key, val in querydict.items():
             response_dict[key] = val
     except:
         pass
     return response_dict
コード例 #6
0
 def post_assets(cls, request):
     response = BaseResponse()
     add_dict = QueryDict(request.body, encoding='utf-8')
     data = {}
     for k, v in add_dict.items():
         data[k] = v
     obj = IdcForm(data)
     if obj.is_valid():
         IDC.objects.create(**obj.cleaned_data)
         response.status = True
         return response
     else:
         response.status = False
         response.data = obj.as_table()
         return response
コード例 #7
0
    def add_data(request):
        response = BaseResponse()
        try:
            response.error = []
            post_dict = QueryDict(request.body, encoding='utf-8')
            data_values = {k: v for k, v in post_dict.items()}
            repository_models.Applications.objects.create(**data_values)

            # app_name = post_dict.get('app_name')
            # project_id = post_dict.get('project_id')
            # app_type = post_dict.get('app_type')
            #
            # add_to_db = repository_models.Applications(
            #     name = app_name,
            #     app_type = app_type,
            #     project_id = repository_models.ProjectInfo.objects.get(id=project_id),
            # )
            #
            # add_to_db.save()

            # # create groups include production and cstest.
            # from urllib import parse, request
            # import json
            # import urllib
            # groups_list = ['CSTest', 'Production']
            # header_dict = {"Content-Type": "application/x-www-form-urlencoded"}
            # url = 'http://127.0.0.1:%s/update-server-group.html' % settings.project_port
            # for group in groups_list:
            #     textmod = {"add_group_app_id": add_to_db.id, "add_group_name": group, "add_group_yaml_path": 1}
            #     textmod = parse.urlencode(textmod).encode(encoding='utf-8')
            #     request = urllib.request.Request(url=url, data=textmod, headers=header_dict)
            #     response = urllib.request.urlopen(request)

        except Exception as e:
            print(Exception, e)
            response.status = False
            response.message = str(e)
        return response
コード例 #8
0
ファイル: utilities.py プロジェクト: pazhik/cspcapp
def reformat_request_get_params(params: QueryDict) -> dict:
    return dict((i, None) if j == '' else (i, j) for i, j in params.items())
コード例 #9
0
ファイル: logs.py プロジェクト: abuve/autodeploy
    def data_create(request):
        response = BaseResponse()
        try:
            post_data = QueryDict(request.body, encoding='utf-8')
            mongoMission_template_id = post_data.get(
                'mongoMission_template_id')
            mongoMission_memo = post_data.get('mongoMission_memo')

            template_data = OMTOOLS_MODELS.MongodbMissionTemplate.objects.get(
                id=int(mongoMission_template_id))
            var_list = json.loads(template_data.var_dict)

            m_db = template_data.database
            m_document = template_data.document
            m_op_type = template_data.get_op_type_display()
            m_find = template_data.find
            m_update = template_data.update
            m_multi_tag = template_data.multi_tag

            def __json_val_check(json_val):
                for k, v in json_val.items():
                    if type(v) == dict:
                        __json_val_check(v)
                    else:
                        try:
                            if 'ISODate' in v:
                                json_val[k] = datetime.datetime.strptime(
                                    v.split('~')[1], '%Y-%m-%d %H:%M:%S')
                            if 'ObjectId' in v:
                                json_val[k] = ObjectId(v.split('~')[1])
                        except:
                            continue

            for k, v in post_data.items():
                if '$$' in k:
                    # 根据名称查找变量参数
                    for var_obj in var_list:
                        if k == var_obj['var_name']:
                            if var_obj['choice'] == 'LIST':
                                var = str(v.split('\r\n'))
                            else:
                                try:
                                    var = json.loads(v)
                                    __json_val_check(var)
                                except:
                                    var = v

                            m_find = m_find.replace(k, str(var))
                            # m_find = m_find.replace("'", '"')
                            if m_update:
                                m_update = m_update.replace(k, var)
                                # m_update = m_update.replace("'", '"')
                            else:
                                m_update = {}

            # 生成exec语句
            if m_op_type == 'update':
                option_exec = "%s.%s.update(%s, %s, {'multi':%s})" % (
                    m_db, m_document, m_find, m_update, m_multi_tag)
            elif m_op_type == 'find':
                option_exec = "%s.%s.find(%s)" % (m_db, m_document, m_find)
            else:
                option_exec = None

            print(option_exec)

            # 生成任务md5值,用于邮件审批
            Token_STR = 'NEBB5oMQOPMpLTn6PneJKBDEMU0WeBxd'
            time_stamp = str(int(time.time()))
            md5_value = hashlib.md5(
                str(Token_STR + time_stamp).encode('utf-8'))

            # 创建Mission
            data_obj = OMTOOLS_MODELS.MongodbMission(
                title=template_data.title,
                op_type=template_data.op_type,
                op_exec=option_exec,
                database=m_db,
                document=m_document,
                find=m_find,
                update=m_update,
                multi_tag=m_multi_tag,
                req_user_id=request.user.id,
                approval_md5=md5_value.hexdigest(),
                memo=mongoMission_memo,
            )
            data_obj.save()

            # 调用邮件接口,发送审核邮件
            approval_email = template_data.approve_mail
            mail_title = 'MongoDB自助任务审核 - %s' % template_data.title
            approval_url = "http://cmdb_cloud.omtools.me:9991/omtools/mongodb-approval.html?id=%s" % md5_value.hexdigest(
            )
            mail_content = "申请执行以下语句:<br><br>%s<br><br>审批地址:<a href='%s'>%s</a>" % (
                option_exec, approval_url, approval_url)
            # smtp.sendMail("*****@*****.**", "bananaballs123!", [approval_email], mail_title, mail_content)
            send_mail = subprocess.Popen([
                settings.pyenv, './utils/smtp.py', approval_email, mail_title,
                mail_content
            ])

        except Exception as e:
            print(Exception, e)
            response.status = False
            response.message = str(e)

        return response
コード例 #10
0
def merge_query_dict(query_dict: QueryDict) -> dict:
    return {
        k: v if len(v) > 1 else v[0]
        for k, v in query_dict.items() if len(v) > 0
    }