mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
do not mix model objects from different sessions
This commit is contained in:
parent
c746be51c9
commit
f16b23bcd8
1 changed files with 11 additions and 5 deletions
|
@ -389,12 +389,18 @@ def find_language(code: str) -> Language | None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def find_language_or_create(code: str, name: str) -> Language:
|
def find_language_or_create(code: str, name: str, session=None) -> Language:
|
||||||
|
if session:
|
||||||
|
existing_language: Language = session.query(Language).filter(Language.code == code).first()
|
||||||
|
else:
|
||||||
existing_language = Language.query.filter(Language.code == code).first()
|
existing_language = Language.query.filter(Language.code == code).first()
|
||||||
if existing_language:
|
if existing_language:
|
||||||
return existing_language
|
return existing_language
|
||||||
else:
|
else:
|
||||||
new_language = Language(code=code, name=name)
|
new_language = Language(code=code, name=name)
|
||||||
|
if session:
|
||||||
|
session.add(new_language)
|
||||||
|
else:
|
||||||
db.session.add(new_language)
|
db.session.add(new_language)
|
||||||
return new_language
|
return new_language
|
||||||
|
|
||||||
|
@ -651,10 +657,10 @@ def refresh_community_profile_task(community_id):
|
||||||
cover_changed = True
|
cover_changed = True
|
||||||
if 'language' in activity_json and isinstance(activity_json['language'], list) and not community.ignore_remote_language:
|
if 'language' in activity_json and isinstance(activity_json['language'], list) and not community.ignore_remote_language:
|
||||||
for ap_language in activity_json['language']:
|
for ap_language in activity_json['language']:
|
||||||
new_language = find_language_or_create(ap_language['identifier'], ap_language['name'])
|
new_language = find_language_or_create(ap_language['identifier'], ap_language['name'], session)
|
||||||
if new_language not in community.languages:
|
if new_language not in community.languages:
|
||||||
community.languages.append(new_language)
|
community.languages.append(new_language)
|
||||||
instance = Instance.query.get(community.instance_id)
|
instance = session.query(Instance).get(community.instance_id)
|
||||||
if instance and instance.software == 'peertube':
|
if instance and instance.software == 'peertube':
|
||||||
community.restricted_to_mods = True
|
community.restricted_to_mods = True
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
Loading…
Add table
Reference in a new issue