fix(api): ipam assign address

This commit is contained in:
pycook 2024-11-11 18:56:09 +08:00
parent b1f8a0024b
commit f277cf088e
4 changed files with 21 additions and 9 deletions

View File

@ -106,8 +106,8 @@ class IpAddressManager(object):
ci_id = ip2ci[ip]['_id']
CIManager().update(ci_id, _sync=True, **kwargs)
if IPAddressBuiltinAttributes.ASSIGN_STATUS in kwargs and (
kwargs[IPAddressBuiltinAttributes.ASSIGN_STATUS] !=
ip2ci[ip].get(IPAddressBuiltinAttributes.ASSIGN_STATUS)):
(kwargs[IPAddressBuiltinAttributes.ASSIGN_STATUS] or 2) !=
(ip2ci[ip].get(IPAddressBuiltinAttributes.ASSIGN_STATUS) or 2)):
status_change_num += 1
ci_ids.append(ci_id)

View File

@ -265,9 +265,9 @@ class SubnetManager(object):
return _id
def delete(self, _id):
if CIRelation.get_by(only_query=True).join(CI, CI.id == CIRelation.second_ci_id).filter(
CIRelation.first_ci_id == _id).filter(CI.type_id == self.type_id).first():
@classmethod
def delete(cls, _id):
if CIRelation.get_by(only_query=True).filter(CIRelation.first_ci_id == _id).first():
return abort(400, ErrFormat.ipam_subnet_cannot_delete)
existed = IPAMSubnetScan.get_by(ci_id=_id, first=True, to_dict=False)

View File

@ -1,6 +1,7 @@
# -*- coding:utf-8 -*-
from flask import current_app
from sqlalchemy import func
from api.extensions import db
@ -32,11 +33,21 @@ class DBMixin(object):
for k in kwargs:
if hasattr(cls.cls, k):
query = query.filter(getattr(cls.cls, k) == kwargs[k])
if count_query:
_query = _query.filter(getattr(cls.cls, k) == kwargs[k])
if isinstance(kwargs[k], list):
query = query.filter(getattr(cls.cls, k).in_(kwargs[k]))
if count_query:
_query = _query.filter(getattr(cls.cls, k).in_(kwargs[k]))
else:
if "*" in str(kwargs[k]):
query = query.filter(getattr(cls.cls, k).ilike(kwargs[k].replace('*', '%')))
if count_query:
_query = _query.filter(getattr(cls.cls, k).ilike(kwargs[k].replace('*', '%')))
else:
query = query.filter(getattr(cls.cls, k) == kwargs[k])
if count_query:
_query = _query.filter(getattr(cls.cls, k) == kwargs[k])
if reverse:
if reverse in current_app.config.get('BOOL_TRUE'):
query = query.order_by(cls.cls.id.desc())
if only_query and not count_query:

View File

@ -476,6 +476,7 @@ class PreferenceShowAttributes(Model):
uid = db.Column(db.Integer, index=True, nullable=False)
type_id = db.Column(db.Integer, db.ForeignKey("c_ci_types.id"), nullable=False)
attr_id = db.Column(db.Integer, db.ForeignKey("c_attributes.id"))
builtin_attr = db.Column(db.String(256), nullable=True)
order = db.Column(db.SmallInteger, default=0)
is_fixed = db.Column(db.Boolean, default=False)