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
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
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
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
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()