コード例 #1
0
ファイル: ci_type.py プロジェクト: russellPanda/cmdb-2
    def delete(cls, type_id, attr_ids=None):
        """
        delete attributes from CIType
        :param type_id: 
        :param attr_ids: list
        :return: 
        """
        from api.tasks.cmdb import ci_cache

        cls._check(type_id, attr_ids)

        for attr_id in attr_ids:
            existed = CITypeAttribute.get_by(type_id=type_id,
                                             attr_id=attr_id,
                                             first=True,
                                             to_dict=False)
            if existed is not None:
                existed.soft_delete()

                for ci in CI.get_by(type_id=type_id, to_dict=False):
                    AttributeValueManager.delete_attr_value(attr_id, ci.id)

                    ci_cache.apply_async([ci.id], queue=CMDB_QUEUE)

                CITypeAttributeCache.clean(type_id, attr_id)

        CITypeAttributesCache.clean(type_id)
コード例 #2
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb
    def delete(cls, type_id, attr_ids=None):
        """
        delete attributes from CIType
        :param type_id: 
        :param attr_ids: list
        :return: 
        """
        cls._check(type_id, attr_ids)

        for attr_id in attr_ids:
            existed = CITypeAttribute.get_by(type_id=type_id,
                                             attr_id=attr_id,
                                             first=True,
                                             to_dict=False)
            if existed is not None:
                existed.soft_delete()

        CITypeAttributeCache.clean(type_id)
コード例 #3
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb
 def get_attributes_by_type_id(type_id):
     attrs = CITypeAttributeCache.get(type_id)
     result = list()
     for attr in sorted(attrs, key=lambda x: (x.order, x.id)):
         attr_dict = AttributeManager().get_attribute(attr.attr_id)
         attr_dict["is_required"] = attr.is_required
         attr_dict["order"] = attr.order
         attr_dict["default_show"] = attr.default_show
         result.append(attr_dict)
     return result
コード例 #4
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb
    def update(cls, type_id, attributes):
        """
        update attributes to CIType
        :param type_id: 
        :param attributes: list
        :return: 
        """
        cls._check(type_id, [i.get('attr_id') for i in attributes])

        for attr in attributes:
            existed = CITypeAttribute.get_by(type_id=type_id,
                                             attr_id=attr.get("attr_id"),
                                             first=True,
                                             to_dict=False)
            if existed is None:
                continue

            existed.update(**attr)

        CITypeAttributeCache.clean(type_id)
コード例 #5
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb
    def add(cls, type_id, attr_ids=None, **kwargs):
        """
        add attributes to CIType
        :param type_id: 
        :param attr_ids: list
        :param kwargs: 
        :return: 
        """
        cls._check(type_id, attr_ids)

        for attr_id in attr_ids:
            existed = CITypeAttribute.get_by(type_id=type_id,
                                             attr_id=attr_id,
                                             first=True,
                                             to_dict=False)
            if existed is not None:
                continue

            current_app.logger.debug(attr_id)
            CITypeAttribute.create(type_id=type_id, attr_id=attr_id, **kwargs)

        CITypeAttributeCache.clean(type_id)
コード例 #6
0
def ci_type_attribute_order_rebuild(type_id):
    current_app.logger.info('rebuild attribute order')
    db.session.remove()

    from api.lib.cmdb.ci_type import CITypeAttributeGroupManager

    attrs = CITypeAttributeCache.get(type_id)
    id2attr = {attr.attr_id: attr for attr in attrs}

    res = CITypeAttributeGroupManager.get_by_type_id(type_id, True)
    order = 0
    for group in res:
        for _attr in group.get('attributes'):
            if order != id2attr.get(_attr['id']) and id2attr.get(_attr['id']):
                id2attr.get(_attr['id']).update(order=order)

            order += 1
コード例 #7
0
ファイル: preference.py プロジェクト: wulinjun4/cmdb
    def create_or_update_tree_view(type_id, levels):
        attrs = CITypeAttributeCache.get(type_id)
        for idx, i in enumerate(levels):
            for attr in attrs:
                attr = AttributeCache.get(attr.attr_id)
                if i == attr.id or i == attr.name or i == attr.alias:
                    levels[idx] = str(attr.id)
        levels = ",".join(levels)

        existed = PreferenceTreeView.get_by(uid=g.user.uid,
                                            type_id=type_id,
                                            to_dict=False,
                                            first=True)
        if existed is not None:
            if not levels:
                existed.soft_delete()
                return existed
            return existed.update(levels=levels)
        elif levels:
            return PreferenceTreeView.create(levels=levels,
                                             type_id=type_id,
                                             uid=g.user.uid)
コード例 #8
0
ファイル: value.py プロジェクト: zhoulhb/cmdb-1
 def __check_is_required(type_id, attr, value):
     type_attr = CITypeAttributeCache.get(type_id, attr.id)
     if type_attr and type_attr.is_required and not value and value != 0:
         return abort(400, "attribute <{0}> value is required".format(attr.alias))
コード例 #9
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb
 def get_attr_names_by_type_id(type_id):
     return [
         AttributeCache.get(attr.attr_id).name
         for attr in CITypeAttributeCache.get(type_id)
     ]