mirror of
https://github.com/veops/cmdb.git
synced 2025-08-08 00:50:22 +08:00
fix: acl cache
This commit is contained in:
@@ -8,6 +8,7 @@ from flask import current_app
|
|||||||
from flask import request
|
from flask import request
|
||||||
from sqlalchemy.exc import InvalidRequestError
|
from sqlalchemy.exc import InvalidRequestError
|
||||||
from sqlalchemy.exc import OperationalError
|
from sqlalchemy.exc import OperationalError
|
||||||
|
from sqlalchemy.exc import PendingRollbackError
|
||||||
from sqlalchemy.exc import StatementError
|
from sqlalchemy.exc import StatementError
|
||||||
|
|
||||||
from api.extensions import db
|
from api.extensions import db
|
||||||
@@ -98,7 +99,10 @@ def reconnect_db(func):
|
|||||||
|
|
||||||
|
|
||||||
def _flush_db():
|
def _flush_db():
|
||||||
db.session.commit()
|
try:
|
||||||
|
db.session.commit()
|
||||||
|
except (StatementError, OperationalError, InvalidRequestError, PendingRollbackError):
|
||||||
|
db.session.rollback()
|
||||||
|
|
||||||
|
|
||||||
def flush_db(func):
|
def flush_db(func):
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
import msgpack
|
import msgpack
|
||||||
|
|
||||||
from api.extensions import cache
|
from api.extensions import cache
|
||||||
from api.extensions import db
|
from api.lib.decorator import flush_db
|
||||||
from api.lib.utils import Lock
|
from api.lib.utils import Lock
|
||||||
from api.models.acl import App
|
from api.models.acl import App
|
||||||
from api.models.acl import Permission
|
from api.models.acl import Permission
|
||||||
@@ -221,9 +221,9 @@ class RoleRelationCache(object):
|
|||||||
return msgpack.loads(r_g, raw=False)
|
return msgpack.loads(r_g, raw=False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@flush_db
|
||||||
def rebuild(cls, rid, app_id):
|
def rebuild(cls, rid, app_id):
|
||||||
cls.clean(rid, app_id)
|
cls.clean(rid, app_id)
|
||||||
db.session.remove()
|
|
||||||
|
|
||||||
cls.get_parent_ids(rid, app_id)
|
cls.get_parent_ids(rid, app_id)
|
||||||
cls.get_child_ids(rid, app_id)
|
cls.get_child_ids(rid, app_id)
|
||||||
@@ -235,9 +235,9 @@ class RoleRelationCache(object):
|
|||||||
cls.get_resources2(rid, app_id)
|
cls.get_resources2(rid, app_id)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@flush_db
|
||||||
def rebuild2(cls, rid, app_id):
|
def rebuild2(cls, rid, app_id):
|
||||||
cache.delete(cls.PREFIX_RESOURCES2.format(rid, app_id))
|
cache.delete(cls.PREFIX_RESOURCES2.format(rid, app_id))
|
||||||
db.session.remove()
|
|
||||||
cls.get_resources2(rid, app_id)
|
cls.get_resources2(rid, app_id)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
Reference in New Issue
Block a user