예제 #1
0
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
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
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
예제 #6
0
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