Skip to content
Snippets Groups Projects
Commit 0bf93a57 authored by Julian's avatar Julian
Browse files

Fixed linter errors

parent 1306790e
Branches
Tags
No related merge requests found
...@@ -147,6 +147,7 @@ disable=missing-module-docstring, ...@@ -147,6 +147,7 @@ disable=missing-module-docstring,
method-hidden, method-hidden,
bad-continuation, bad-continuation,
too-many-ancestors, too-many-ancestors,
no-self-use,
# Enable the message, report, category or checker with the given id(s). You can # Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option # either give multiple identifier separated by comma (,) or put this option
......
from copy import deepcopy from copy import deepcopy
from ldap3 import MODIFY_REPLACE, MODIFY_DELETE, MODIFY_ADD, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES
class LDAPCommitError(Exception):
pass
class SessionState: class SessionState:
def __init__(self, objects=None, deleted_objects=None, references=None): def __init__(self, objects=None, deleted_objects=None, references=None):
self.objects = objects or {} self.objects = objects or {}
...@@ -11,14 +16,15 @@ class SessionState: ...@@ -11,14 +16,15 @@ class SessionState:
def ref(self, obj, attr, values): def ref(self, obj, attr, values):
for value in values: for value in values:
key = (attr, value)
if key not in self.references: if key not in self.references:
self.references[key] = {self.obj} self.references[key] = {obj}
else: else:
self.references[key].add(self.obj) self.references[key].add(obj)
def unref(self, obj, attr, values): def unref(self, obj, attr, values):
for value in values: for value in values:
self.references.get((name, value), set()).discard(obj) self.references.get((attr, value), set()).discard(obj)
class ObjectState: class ObjectState:
def __init__(self, session=None, attributes=None, dn=None): def __init__(self, session=None, attributes=None, dn=None):
...@@ -93,7 +99,7 @@ class ModifyOperation: ...@@ -93,7 +99,7 @@ class ModifyOperation:
for attr, changes in self.changes.items(): for attr, changes in self.changes.items():
for action, values in changes: for action, values in changes:
if action == MODIFY_REPLACE: if action == MODIFY_REPLACE:
session_state.unref(self.obj, attr, self.attributes.get(attr, []) session_state.unref(self.obj, attr, self.attributes.get(attr, []))
session_state.ref(self.obj, attr, values) session_state.ref(self.obj, attr, values)
elif action == MODIFY_ADD: elif action == MODIFY_ADD:
session_state.ref(self.obj, attr, values) session_state.ref(self.obj, attr, values)
...@@ -141,9 +147,9 @@ class Session: ...@@ -141,9 +147,9 @@ class Session:
oper = self.changes.pop(0) oper = self.changes.pop(0)
try: try:
oper.apply_ldap(conn) oper.apply_ldap(conn)
except e: except Exception as err:
self.changes.insert(0, oper) self.changes.insert(0, oper)
raise e raise err
oper.apply_object(oper.obj.committed_state) oper.apply_object(oper.obj.committed_state)
oper.apply_session(self.committed_state) oper.apply_session(self.committed_state)
self.committed_state = self.state.copy() self.committed_state = self.state.copy()
...@@ -207,21 +213,21 @@ class Object: ...@@ -207,21 +213,21 @@ class Object:
def setattr(self, name, values): def setattr(self, name, values):
oper = ModifyOperation(self, {name: [(MODIFY_REPLACE, [values])]}) oper = ModifyOperation(self, {name: [(MODIFY_REPLACE, [values])]})
oper.apply_object(obj.state) oper.apply_object(self.state)
if self.state.session: if self.state.session:
oper.apply_session(self.state.session.state) oper.apply_session(self.state.session.state)
self.state.session.changes.append(oper) self.state.session.changes.append(oper)
def attr_append(self, name, value): def attr_append(self, name, value):
oper = ModifyOperation(self, {name: [(MODIFY_ADD, [value])]}) oper = ModifyOperation(self, {name: [(MODIFY_ADD, [value])]})
oper.apply_object(obj.state) oper.apply_object(self.state)
if self.state.session: if self.state.session:
oper.apply_session(self.state.session.state) oper.apply_session(self.state.session.state)
self.state.session.changes.append(oper) self.state.session.changes.append(oper)
def attr_remove(self, name, value): def attr_remove(self, name, value):
oper = ModifyOperation(self, {name: [(MODIFY_DELETE, [value])]}) oper = ModifyOperation(self, {name: [(MODIFY_DELETE, [value])]})
oper.apply_object(obj.state) oper.apply_object(self.state)
if self.state.session: if self.state.session:
oper.apply_session(self.state.session.state) oper.apply_session(self.state.session.state)
self.state.session.changes.append(oper) self.state.session.changes.append(oper)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment