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
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
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
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
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
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
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
def reformat_request_get_params(params: QueryDict) -> dict: return dict((i, None) if j == '' else (i, j) for i, j in params.items())
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
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 }