launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #25246
[Merge] ~ilasc/launchpad:stormify-person-language into launchpad:master
Ioana Lasc has proposed merging ~ilasc/launchpad:stormify-person-language into launchpad:master.
Commit message:
Stormify PersonLanguage
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~ilasc/launchpad/+git/launchpad/+merge/390173
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~ilasc/launchpad:stormify-person-language into launchpad:master.
diff --git a/lib/lp/answers/model/question.py b/lib/lp/answers/model/question.py
index de38575..31c4ed7 100644
--- a/lib/lp/answers/model/question.py
+++ b/lib/lp/answers/model/question.py
@@ -1,4 +1,4 @@
-# Copyright 2009-2017 Canonical Ltd. This software is licensed under the
+# Copyright 2009-2020 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
"""Question models."""
@@ -1367,9 +1367,9 @@ class QuestionTargetMixin:
AnswerContact,
LeftJoin(Person, AnswerContact.person == Person.id),
LeftJoin(PersonLanguage,
- AnswerContact.personID == PersonLanguage.personID),
+ AnswerContact.personID == PersonLanguage.person_id),
LeftJoin(Language,
- PersonLanguage.language == Language.id)]
+ PersonLanguage.language_id == Language.id)]
columns = [Person, Language]
conditions = self._getConditionsToQueryAnswerContacts()
results = self._store.using(*origin).find(tuple(columns), conditions)
diff --git a/lib/lp/registry/model/person.py b/lib/lp/registry/model/person.py
index 2b1b8cf..9173612 100644
--- a/lib/lp/registry/model/person.py
+++ b/lib/lp/registry/model/person.py
@@ -258,6 +258,7 @@ from lp.services.database.sqlbase import (
SQLBase,
sqlvalues,
)
+from lp.services.database.stormbase import StormBase
from lp.services.database.stormexpr import fti_search
from lp.services.helpers import (
ensure_unicode,
@@ -654,8 +655,8 @@ class Person(
def languages(self):
"""See `IPerson`."""
results = Store.of(self).find(
- Language, And(Language.id == PersonLanguage.languageID,
- PersonLanguage.personID == self.id))
+ Language, And(Language.id == PersonLanguage.language_id,
+ PersonLanguage.person_id == self.id))
results.order_by(Language.englishname)
return list(results)
@@ -681,8 +682,8 @@ class Person(
def addLanguage(self, language):
"""See `IPerson`."""
person_language = Store.of(self).find(
- PersonLanguage, And(PersonLanguage.languageID == language.id,
- PersonLanguage.personID == self.id)).one()
+ PersonLanguage, And(PersonLanguage.language_id == language.id,
+ PersonLanguage.person_id == self.id)).one()
if person_language is not None:
# Nothing to do.
return
@@ -692,12 +693,12 @@ class Person(
def removeLanguage(self, language):
"""See `IPerson`."""
person_language = Store.of(self).find(
- PersonLanguage, And(PersonLanguage.languageID == language.id,
- PersonLanguage.personID == self.id)).one()
+ PersonLanguage, And(PersonLanguage.language_id == language.id,
+ PersonLanguage.person_id == self.id)).one()
if person_language is None:
# Nothing to do.
return
- PersonLanguage.delete(person_language.id)
+ person_language.delete()
self.deleteLanguagesCache()
def _init(self, *args, **kw):
@@ -4062,12 +4063,21 @@ class PersonSet:
Owner = ClassAlias(Person, 'Owner')
-class PersonLanguage(SQLBase):
- _table = 'PersonLanguage'
+class PersonLanguage(StormBase):
+ __storm_table__ = 'PersonLanguage'
+ id = Int(primary=True)
+ person_id = Int(name='person', allow_none=False)
+ person = Reference(person_id, 'Person.id')
- person = ForeignKey(foreignKey='Person', dbName='person', notNull=True)
- language = ForeignKey(foreignKey='Language', dbName='language',
- notNull=True)
+ language_id = Int(name='language', allow_none=False)
+ language = Reference(language_id, 'Language.id')
+
+ def __init__(self, person, language):
+ self.person = person
+ self.language = language
+
+ def delete(self):
+ Store.of(self).remove(self)
@implementer(ISSHKey)
diff --git a/lib/lp/services/worlddata/model/language.py b/lib/lp/services/worlddata/model/language.py
index 800b219..9cb3c36 100644
--- a/lib/lp/services/worlddata/model/language.py
+++ b/lib/lp/services/worlddata/model/language.py
@@ -1,4 +1,4 @@
-# Copyright 2009-2011 Canonical Ltd. This software is licensed under
+# Copyright 2009-2020 Canonical Ltd. This software is licensed under
# the GNU Affero General Public License version 3 (see the file
# LICENSE).
@@ -165,7 +165,7 @@ class Language(SQLBase):
Join(
Person,
LanguageSet._getTranslatorJoins(),
- Person.id == PersonLanguage.personID),
+ Person.id == PersonLanguage.person_id),
).find(
Person,
PersonLanguage.language == self,
@@ -200,7 +200,7 @@ class LanguageSet:
KarmaCache.projectgroupID == None,
KarmaCache.sourcepackagenameID == None,
KarmaCache.distributionID == None)),
- PersonLanguage.personID ==
+ PersonLanguage.person_id ==
KarmaCache.personID)
@property
@@ -237,7 +237,7 @@ class LanguageSet:
LeftJoin(
Language,
self._getTranslatorJoins(),
- PersonLanguage.languageID == Language.id),
+ PersonLanguage.language_id == Language.id),
).find(
(Language, Count(PersonLanguage)),
Language.id.is_in(ids),