def risktype(request, rtname=''): if request.method == 'POST': try: return createrisktype(request) except Exception as e: if type(e) is error.RTException: return error.handle_RT_exception(e) else: return error.handle_RT_exception( error.RTException(e.__str__(), 500)) elif request.method == 'GET': try: return getrisktype(rtname) except Exception as e: if type(e) is error.RTException: return error.handle_RT_exception(e) else: return error.handle_RT_exception( error.RTException(e.__str__(), 500)) else: r = HttpResponse(content=json.dumps( {globals.MSG: error.HTTP_METHOD_NOT_SUPPORTED}), content_type='application/json') r.status_code = 400 return r
def create(self, rta, renumentryname, renumentryvalue): if type(renumentryname) is not unicode or type(renumentryvalue) is not unicode or renumentryname == '' or renumentryvalue == '': raise error.RTException(error.RISKTYPE_ATTR_ENUM_INFO_EMPTY) self.created_date = timezone.now() self.riskattr = rta self.riskenumentryname = renumentryname self.riskenumentryvalue = renumentryvalue try: self.save() except Exception as e: raise error.RTException(error.RISKTYPE_ATTR_ENUM_ENTRY_COULD_NOT_BE_CREATED, 500)
def create(self, rt, rattrname, rattrtype): if type(rattrname) is not unicode or type(rattrtype) is not unicode or rattrname == '' or rattrtype == '': raise error.RTException(error.RISKTYPE_ATTR_INFO_EMPTY) if rattrtype not in globals.RT_ATTR_TYPES: raise error.RTException(error.RISKTYPE_ATTR_TYPE_INVALID) self.created_date = timezone.now() self.risktype = rt self.riskattrname = rattrname self.riskattrtype = rattrtype try: self.save() except Exception as e: raise error.RTException(error.RISKTYPE_ATTR_COULD_NOT_BE_CREATED, 500)
def create(self, riskname): if type(riskname) is not unicode or riskname == '': raise error.RTException(error.RISKTYPE_NAME_EMPTY) try: rt = RiskType.objects.get(riskname=riskname) except RiskType.DoesNotExist: self.created_date = timezone.now() self.riskname = riskname try: self.save() except Exception as e: raise error.RTException(error.RISKTYPE_COULD_NOT_BE_CREATED, 500) except Exception as e: raise error.RTException(error.RISKTYPE_COULD_NOT_BE_CREATED, 500) else: raise error.RTException(error.RISKTYPE_EXISTS)
def getrisktype(rtname): try: rt = RiskType.objects.get(riskname=rtname) except RiskType.DoesNotExist: raise error.RTException(error.RISKTYPE_NOT_EXISTS) py_dict = {} py_dict[globals.RT_NAME] = rt.riskname py_dict[globals.RT_ATTRS] = [] rtaqs = RiskTypeAttribute.objects.filter(risktype=rt) for e in rtaqs: eed = {} if e.riskattrtype == globals.TENUM: rtaee = RiskTypeAttributeEnumEntry.objects.filter(riskattr=e) for ee in rtaee: eed[ee.riskenumentryname] = ee.riskenumentryvalue py_dict[globals.RT_ATTRS].append({ globals.RT_ATTR_NAME: e.riskattrname, globals.RT_ATTR_TYPE: e.riskattrtype, globals.EDICT: eed }) else: py_dict[globals.RT_ATTRS].append({ globals.RT_ATTR_NAME: e.riskattrname, globals.RT_ATTR_TYPE: e.riskattrtype }) r = HttpResponse(content=json.dumps(py_dict), content_type='application/json') r.status_code = 200 return r
def createrisktype(request): try: json_str = ((request.body).decode('utf-8')) py_dict = json.loads(json_str) except Exception as e: raise error.RTException(error.RISKTYPE_CONTENT_DECODE_ERROR, 500) if py_dict is None: raise error.RTException(error.RISKTYPE_CONTENT_ERROR, 500) if type( py_dict ) is not dict or globals.RT_NAME not in py_dict or globals.RT_ATTRS not in py_dict or type( py_dict[globals.RT_ATTRS]) is not list or len( py_dict[globals.RT_ATTRS]) == 0: raise error.RTException(error.RISKTYPE_CONTENT_ERROR, 500) rt = RiskType() rt.create(py_dict[globals.RT_NAME]) for e in py_dict[globals.RT_ATTRS]: if type(e) is not dict: continue if globals.RT_ATTR_NAME not in e or globals.RT_ATTR_TYPE not in e: continue if e[globals.RT_ATTR_TYPE] == globals.TENUM and ( globals.EDICT not in e or type(e[globals.EDICT]) is not dict or len(e[globals.EDICT]) == 0): continue rta = RiskTypeAttribute() try: rta.create(rt, e[globals.RT_ATTR_NAME], e[globals.RT_ATTR_TYPE]) if e[globals.RT_ATTR_TYPE] == globals.TENUM: for k in list(e[globals.EDICT].keys()): rtaee = RiskTypeAttributeEnumEntry() rtaee.create(rta, k, e[globals.EDICT][k]) except Exception as e: rt.delete() raise e r = HttpResponse(content=json.dumps({globals.MSG: error.OK}), content_type='application/json') r.status_code = 200 return r