示例#1
0
def get_object(public_id, request_user: UserModel):
    try:
        object_instance = object_manager.get_object(
            public_id,
            user=request_user,
            permission=AccessControlPermission.READ)
    except (ObjectManagerGetError, ManagerGetError) as err:
        return abort(404, err.message)
    except AccessDeniedError as err:
        return abort(403, err.message)

    try:
        type_instance = TypeManager(
            database_manager=current_app.database_manager).get(
                object_instance.get_type_id())
    except ObjectManagerGetError as err:
        LOGGER.error(err.message)
        return abort(404, err.message)

    try:
        render = CmdbRender(object_instance=object_instance,
                            type_instance=type_instance,
                            render_user=request_user,
                            object_manager=object_manager,
                            ref_render=True)
        render_result = render.result()
    except RenderError as err:
        LOGGER.error(err)
        return abort(500)

    resp = make_response(render_result)
    return resp
示例#2
0
def get_object(public_id, request_user: User):
    try:
        object_instance = object_manager.get_object(public_id)
    except ObjectManagerGetError as err:
        LOGGER.error(err)
        return abort(404)

    try:
        type_instance = object_manager.get_type(object_instance.get_type_id())
    except ObjectManagerGetError as err:
        LOGGER.error(err)
        return abort(404)

    try:
        render = CmdbRender(object_instance=object_instance,
                            type_instance=type_instance,
                            render_user=request_user,
                            user_list=user_manager.get_users())
        render_result = render.result()
    except RenderError as err:
        LOGGER.error(err)
        return abort(500)

    resp = make_response(render_result)
    return resp
示例#3
0
 def __get_objectdata(self, cmdb_object, iteration):
     data = {}
     data["id"] = cmdb_object.object_information['object_id']
     data["fields"] = {}
     for field in cmdb_object.fields:
         try:
             field_name = field["name"]
             if field["type"] == "ref" and field["value"] and iteration > 0:
                 # resolve type
                 iteration = iteration - 1
                 current_object = self.__object_manager.get_object(
                     field["value"])
                 type_instance = self.__object_manager.get_type(
                     current_object.get_type_id())
                 cmdb_render_object = CmdbRender(
                     object_instance=current_object,
                     type_instance=type_instance,
                     render_user=None)
                 data["fields"][field_name] = self.__get_objectdata(
                     cmdb_render_object.result(), iteration)
             else:
                 data["fields"][field_name] = field["value"]
         except Exception as err:
             LOGGER.error(err)
     return data
示例#4
0
 def __get_objectdata(self, cmdb_object, iteration):
     data = {}
     data["id"] = cmdb_object.object_information['object_id']
     data["fields"] = {}
     for field in cmdb_object.fields:
         try:
             field_name = field["name"]
             if field["type"] == "ref" and field["value"] and iteration > 0:
                 # resolve type
                 current_object = self.__object_manager.get_object(
                     field["value"])
                 type_instance = self.__object_manager.get_type(
                     current_object.get_type_id())
                 cmdb_render_object = CmdbRender(
                     object_instance=current_object,
                     type_instance=type_instance,
                     render_user=None,
                     object_manager=self.__object_manager)
                 data["fields"][field_name] = self.__get_objectdata(
                     cmdb_render_object.result(), iteration - 1)
             elif field['type'] == 'ref-section-field':
                 data['fields'][field_name] = {'fields': {}}
                 for section_ref_field in field['references']['fields']:
                     data['fields'][field_name]['fields'][section_ref_field[
                         'name']] = section_ref_field['value']
             else:
                 data["fields"][field_name] = field["value"]
         except ObjectManagerGetError:
             continue
         except Exception as err:
             LOGGER.error(err)
     return data
示例#5
0
    def render_object_template(self, doctpl_id: int, object_id: int):
        template = self.__template_manager.get_template(doctpl_id)
        cmdb_object = self.__obm.get_object(object_id)
        type_instance = self.__obm.get_type(cmdb_object.get_type_id())
        cmdb_render_object = CmdbRender(object_instance=cmdb_object,
                                        type_instance=type_instance,
                                        render_user=None)
        generator = ObjectDocumentGenerator(template, self.__obm,
                                            cmdb_render_object.result(),
                                            PdfDocumentType())

        return generator.generate_doc()