Skip to content

Commit f68d1de

Browse files
committed
mod : event
1 parent b8d115c commit f68d1de

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

py/DB/User.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,21 +116,30 @@ def has_role(self, role: str) -> bool:
116116
return role in [r.name for r in list(self.roles)]
117117

118118

119-
@event.listens_for(Person.organisation, "set", raw=True, propagate=True)
120-
def before_person_update(target, value, oldvalue, initiator):
119+
# associate the listener function with SomeClass,
120+
# to execute during the "before_insert" hook
121+
@event.listens_for(User, "before_insert")
122+
@event.listens_for(Guest, "before_insert")
123+
@event.listens_for(User, "before_update")
124+
@event.listens_for(Guest, "before_update")
125+
def my_before_person_organisation(mapper, connection, target):
121126
# execute a stored procedure upon INSERT,
122127
# apply the value to the row to be inserted
123-
value = value.strip().lower()
128+
value = target.organisation.strip()
124129
try:
125-
org = (
126-
target.session.query(Organization)
127-
.filter(func.lower(Organization.name) == value)
128-
.one()
129-
)
130-
except NoResultFound:
131-
neworg = Organization(name=value)
132-
target.session.add(neworg)
133-
org = neworg.name
130+
org = connection.execute(
131+
text("select name from organizations WHERE name ilike '%s' " % value)
132+
).scalar()
133+
if org is None:
134+
org = connection.execute(
135+
text(
136+
"insert into organizations(name) values('%s') RETURNING name"
137+
% value
138+
)
139+
).scalar()
140+
141+
except:
142+
pass
134143
assert org is not None, NO_ORGANIZATION_ADDED
135144

136145

0 commit comments

Comments
 (0)