From d0e4d1aa4f01325e63d2b42e76b5e4999b8d1427 Mon Sep 17 00:00:00 2001 From: david <> Date: Sat, 18 May 2002 21:42:08 +0000 Subject: [PATCH] Added PubStatus, PubStatuses I18n support for Languages I18n support for PubStatuses --- LDP/lampadas/database/createdb.sh | 2 + LDP/lampadas/database/indexes.sql | 70 ++++++++++--------- LDP/lampadas/database/language.sql | 1 - LDP/lampadas/database/language_i18n.sql | 11 +++ LDP/lampadas/database/load.sql | 2 + LDP/lampadas/database/permissions.sql | 3 + LDP/lampadas/database/pub_status.sql | 2 - LDP/lampadas/database/pub_status_i18n.sql | 11 +++ LDP/lampadas/database/save.sql | 2 + LDP/lampadas/database/updates/update-0.2 | 22 ++++-- LDP/lampadas/pylib/DataLayer.py | 85 ++++++++++++++++++++--- LDP/lampadas/pylib/UnitTest.py | 16 ++++- 12 files changed, 174 insertions(+), 53 deletions(-) create mode 100644 LDP/lampadas/database/language_i18n.sql create mode 100644 LDP/lampadas/database/pub_status_i18n.sql diff --git a/LDP/lampadas/database/createdb.sh b/LDP/lampadas/database/createdb.sh index e1707c6c..28af37cc 100755 --- a/LDP/lampadas/database/createdb.sh +++ b/LDP/lampadas/database/createdb.sh @@ -17,9 +17,11 @@ psql lampadas -qf dtd.sql psql lampadas -qf format.sql psql lampadas -qf format_i18n.sql psql lampadas -qf language.sql +psql lampadas -qf language_i18n.sql psql lampadas -qf license.sql psql lampadas -qf notes.sql psql lampadas -qf pub_status.sql +psql lampadas -qf pub_status_i18n.sql psql lampadas -qf review_status.sql psql lampadas -qf role.sql psql lampadas -qf stats.sql diff --git a/LDP/lampadas/database/indexes.sql b/LDP/lampadas/database/indexes.sql index ddb590c5..96047eb0 100644 --- a/LDP/lampadas/database/indexes.sql +++ b/LDP/lampadas/database/indexes.sql @@ -1,33 +1,39 @@ -ALTER TABLE class_i18n ADD CONSTRAINT class_id_fk FOREIGN KEY (class_id) REFERENCES class(class_id); -ALTER TABLE class_i18n ADD CONSTRAINT class_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); -ALTER TABLE document ADD CONSTRAINT class_id_fk FOREIGN KEY (class_id) REFERENCES class(class_id); -ALTER TABLE document ADD CONSTRAINT format_fk FOREIGN KEY (format) REFERENCES format(format); -ALTER TABLE document ADD CONSTRAINT dtd_fk FOREIGN KEY (dtd) REFERENCES dtd(dtd); -ALTER TABLE document ADD CONSTRAINT pub_status_fk FOREIGN KEY (pub_status) REFERENCES pub_status(pub_status); -ALTER TABLE document ADD CONSTRAINT review_status_fk FOREIGN KEY (review_status) REFERENCES review_status(review_status); -ALTER TABLE document ADD CONSTRAINT tech_status_fk FOREIGN KEY (tech_review_status) REFERENCES review_status(review_status); -ALTER TABLE document ADD CONSTRAINT license_fk FOREIGN KEY (license) REFERENCES license(license); -ALTER TABLE document ADD CONSTRAINT language_fk FOREIGN KEY (lang) REFERENCES language(isocode); -ALTER TABLE document_error ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_file ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_file ADD CONSTRAINT format_fk FOREIGN KEY (format) REFERENCES format(format); -ALTER TABLE document_rev ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_topic ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_topic ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); -ALTER TABLE document_user ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_user ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); -ALTER TABLE document_user ADD CONSTRAINT role_fk FOREIGN KEY (role) REFERENCES role(role); -ALTER TABLE document_wiki ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE document_wiki ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); -ALTER TABLE doc_vote ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE doc_vote ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); -ALTER TABLE notes ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); -ALTER TABLE notes ADD CONSTRAINT creator_id_fk FOREIGN KEY (creator_id) REFERENCES username(user_id); -ALTER TABLE string_i18n ADD CONSTRAINT string_code_fk FOREIGN KEY (string_code) REFERENCES string(string_code); -ALTER TABLE string_i18n ADD CONSTRAINT string_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); -ALTER TABLE subtopic ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); -ALTER TABLE topic_i18n ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); -ALTER TABLE topic_i18n ADD CONSTRAINT lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); -ALTER TABLE username_notes ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); -ALTER TABLE username_notes ADD CONSTRAINT creator_id_fk FOREIGN KEY (creator_id) REFERENCES username(user_id); +ALTER TABLE class_i18n ADD CONSTRAINT class_id_fk FOREIGN KEY (class_id) REFERENCES class(class_id); +ALTER TABLE class_i18n ADD CONSTRAINT class_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE document ADD CONSTRAINT class_id_fk FOREIGN KEY (class_id) REFERENCES class(class_id); +ALTER TABLE document ADD CONSTRAINT format_fk FOREIGN KEY (format) REFERENCES format(format); +ALTER TABLE document ADD CONSTRAINT dtd_fk FOREIGN KEY (dtd) REFERENCES dtd(dtd); +ALTER TABLE document ADD CONSTRAINT pub_status_fk FOREIGN KEY (pub_status) REFERENCES pub_status(pub_status); +ALTER TABLE document ADD CONSTRAINT review_status_fk FOREIGN KEY (review_status) REFERENCES review_status(review_status); +ALTER TABLE document ADD CONSTRAINT tech_status_fk FOREIGN KEY (tech_review_status) REFERENCES review_status(review_status); +ALTER TABLE document ADD CONSTRAINT license_fk FOREIGN KEY (license) REFERENCES license(license); +ALTER TABLE document ADD CONSTRAINT language_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE document_error ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_file ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_file ADD CONSTRAINT format_fk FOREIGN KEY (format) REFERENCES format(format); +ALTER TABLE document_rev ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_topic ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_topic ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); +ALTER TABLE document_user ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_user ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); +ALTER TABLE document_user ADD CONSTRAINT role_fk FOREIGN KEY (role) REFERENCES role(role); +ALTER TABLE document_wiki ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE document_wiki ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); +ALTER TABLE doc_vote ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE doc_vote ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); +ALTER TABLE format_i18n ADD CONSTRAINT format_fk FOREIGN KEY (format) REFERENCES format(format); +ALTER TABLE format_i18n ADD CONSTRAINT format_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE language_i18n ADD CONSTRAINT language_fk FOREIGN KEY (language) REFERENCES language(isocode); +ALTER TABLE language_i18n ADD CONSTRAINT language_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE notes ADD CONSTRAINT doc_id_fk FOREIGN KEY (doc_id) REFERENCES document(doc_id); +ALTER TABLE notes ADD CONSTRAINT creator_id_fk FOREIGN KEY (creator_id) REFERENCES username(user_id); +ALTER TABLE pub_status_i18n ADD CONSTRAINT pub_status_fk FOREIGN KEY (pub_status) REFERENCES pub_status(pub_status); +ALTER TABLE pub_status_i18n ADD CONSTRAINT pub_status_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE string_i18n ADD CONSTRAINT string_code_fk FOREIGN KEY (string_code) REFERENCES string(string_code); +ALTER TABLE string_i18n ADD CONSTRAINT string_lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE subtopic ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); +ALTER TABLE topic_i18n ADD CONSTRAINT topic_num_fk FOREIGN KEY (topic_num) REFERENCES topic(topic_num); +ALTER TABLE topic_i18n ADD CONSTRAINT lang_fk FOREIGN KEY (lang) REFERENCES language(isocode); +ALTER TABLE username_notes ADD CONSTRAINT user_id_fk FOREIGN KEY (user_id) REFERENCES username(user_id); +ALTER TABLE username_notes ADD CONSTRAINT creator_id_fk FOREIGN KEY (creator_id) REFERENCES username(user_id); diff --git a/LDP/lampadas/database/language.sql b/LDP/lampadas/database/language.sql index 551bf193..31423597 100644 --- a/LDP/lampadas/database/language.sql +++ b/LDP/lampadas/database/language.sql @@ -3,7 +3,6 @@ DROP TABLE language; CREATE TABLE language ( isocode CHAR(2), - language_name CHAR(60), PRIMARY KEY (isocode) ); diff --git a/LDP/lampadas/database/language_i18n.sql b/LDP/lampadas/database/language_i18n.sql new file mode 100644 index 00000000..3b67c20e --- /dev/null +++ b/LDP/lampadas/database/language_i18n.sql @@ -0,0 +1,11 @@ +DROP TABLE language_i18n; + +CREATE TABLE language_i18n +( + isocode CHAR(2), + lang CHAR(2), + language_name CHAR(60), + + PRIMARY KEY (isocode, lang) +); + diff --git a/LDP/lampadas/database/load.sql b/LDP/lampadas/database/load.sql index 1918b208..9ebd41fe 100644 --- a/LDP/lampadas/database/load.sql +++ b/LDP/lampadas/database/load.sql @@ -15,9 +15,11 @@ copy dtd from '/tmp/lampadas_dtd.txt'; copy format from '/tmp/lampadas_format.txt'; copy format_i18n from '/tmp/lampadas_format_i18n.txt'; copy language from '/tmp/lampadas_language.txt'; +copy language_i18n from '/tmp/lampadas_language_i18n.txt'; copy license from '/tmp/lampadas_license.txt'; copy notes from '/tmp/lampadas_notes.txt'; copy pub_status from '/tmp/lampadas_pub_status.txt'; +copy pub_status_i18n from '/tmp/lampadas_pub_status_i18n.txt'; copy review_status from '/tmp/lampadas_review_status.txt'; copy role from '/tmp/lampadas_role.txt'; copy stats from '/tmp/lampadas_stats.txt'; diff --git a/LDP/lampadas/database/permissions.sql b/LDP/lampadas/database/permissions.sql index 08791481..d713ab81 100644 --- a/LDP/lampadas/database/permissions.sql +++ b/LDP/lampadas/database/permissions.sql @@ -13,10 +13,13 @@ GRANT ALL ON document_user TO "www-data"; GRANT ALL ON document_wiki TO "www-data"; GRANT ALL ON dtd TO "www-data"; GRANT ALL ON format TO "www-data"; +GRANT ALL ON format_i18n TO "www-data"; GRANT ALL ON language TO "www-data"; +GRANT ALL ON language_i18n TO "www-data"; GRANT ALL ON license TO "www-data"; GRANT ALL ON notes TO "www-data"; GRANT ALL ON pub_status TO "www-data"; +GRANT ALL ON pub_status_i18n TO "www-data"; GRANT ALL ON review_status TO "www-data"; GRANT ALL ON role TO "www-data"; GRANT ALL ON stats TO "www-data"; diff --git a/LDP/lampadas/database/pub_status.sql b/LDP/lampadas/database/pub_status.sql index f2a9d146..4c5e47d7 100644 --- a/LDP/lampadas/database/pub_status.sql +++ b/LDP/lampadas/database/pub_status.sql @@ -3,8 +3,6 @@ DROP TABLE pub_status; CREATE TABLE pub_status ( pub_status CHAR NOT NULL, - pub_status_name TEXT, - pub_status_desc TEXT, PRIMARY KEY (pub_status) ); diff --git a/LDP/lampadas/database/pub_status_i18n.sql b/LDP/lampadas/database/pub_status_i18n.sql new file mode 100644 index 00000000..e9e50589 --- /dev/null +++ b/LDP/lampadas/database/pub_status_i18n.sql @@ -0,0 +1,11 @@ +DROP TABLE pub_status_i18n; + +CREATE TABLE pub_status_i18n +( + pub_status CHAR NOT NULL, + lang CHAR(2) NOT NULL, + pub_status_name TEXT, + pub_status_desc TEXT, + + PRIMARY KEY (pub_status, lang) +); diff --git a/LDP/lampadas/database/save.sql b/LDP/lampadas/database/save.sql index a5639723..8ab7e297 100644 --- a/LDP/lampadas/database/save.sql +++ b/LDP/lampadas/database/save.sql @@ -15,9 +15,11 @@ copy dtd to '/tmp/lampadas_dtd.txt'; copy format to '/tmp/lampadas_format.txt'; copy format_i18n to '/tmp/lampadas_format_i18n.txt'; copy language to '/tmp/lampadas_language.txt'; +copy language_i18n to '/tmp/lampadas_language_i18n.txt'; copy license to '/tmp/lampadas_license.txt'; copy notes to '/tmp/lampadas_notes.txt'; copy pub_status to '/tmp/lampadas_pub_status.txt'; +copy pub_status_i18n to '/tmp/lampadas_pub_status_i18n.txt'; copy review_status to '/tmp/lampadas_review_status.txt'; copy role to '/tmp/lampadas_role.txt'; copy stats to '/tmp/lampadas_stats.txt'; diff --git a/LDP/lampadas/database/updates/update-0.2 b/LDP/lampadas/database/updates/update-0.2 index 7f887c2c..78590db0 100755 --- a/LDP/lampadas/database/updates/update-0.2 +++ b/LDP/lampadas/database/updates/update-0.2 @@ -283,10 +283,8 @@ while (@row = $result->fetchrow) { # # NOTE: must come before document_new table is generated # -$sql = "CREATE TABLE class_new (class_id INT4 NOT NULL, PRIMARY KEY (class_id))"; -$conn->exec($sql); -$sql = "CREATE TABLE class_i18n (class_id INT4 NOT NULL, lang CHAR(2) NOT NULL, class_name CHAR(20) NOT NULL, class_description TEXT NOT NULL, PRIMARY KEY (class_id, lang))"; -$conn->exec($sql); +$conn->exec("CREATE TABLE class_new (class_id INT4 NOT NULL, PRIMARY KEY (class_id))"); +$conn->exec("CREATE TABLE class_i18n (class_id INT4 NOT NULL, lang CHAR(2) NOT NULL, class_name CHAR(20) NOT NULL, class_description TEXT NOT NULL, PRIMARY KEY (class_id, lang))"); $sql = "SELECT class, class_name FROM class"; $result = $conn->exec("$sql"); @@ -302,6 +300,20 @@ while (@row = $result->fetchrow) { $conn->exec($sql); } +# i18n support in format table +# +$conn->exec("CREATE TABLE format_new (format CHAR(12) NOT NULL, PRIMARY KEY (format))"); +$conn->exec("CREATE TABLE format_i18n (format CHAR(12) NOT NULL, lang CHAR(2) NOT NULL, format_name CHAR(20) NOT NULL, PRIMARY KEY (format, lang))"); +$conn->exec("INSERT INTO format_i18n SELECT format, 'EN' as lang, format_name FROM format"); +$conn->exec("INSERT INTO format_new SELECT format FROM format"); + +# i18n support in pub_status table +# +$conn->exec("CREATE TABLE pub_status_new (pub_status CHAR(1) NOT NULL, PRIMARY KEY (pub_status))"); +$conn->exec("CREATE TABLE pub_status_i18n (pub_status CHAR(1) NOT NULL, lang CHAR(2) NOT NULL, pub_status_name TEXT NOT NULL, pub_status_description TEXT NOT NULL, PRIMARY KEY (pub_status, lang))"); +$conn->exec("INSERT INTO pub_status_i18n SELECT pub_status, 'EN' as lang, pub_status_name, pub_status_description FROM pub_status"); +$conn->exec("INSERT INTO pub_status_new SELECT pub_status FROM pub_status"); + # i18n support in topic table # $conn->exec("CREATE TABLE topic_new (topic_num INT4 NOT NULL, PRIMARY KEY (topic_num)"); @@ -412,6 +424,7 @@ $conn->exec("DROP TABLE document_wiki"); $conn->exec("DROP TABLE doc_vote"); $conn->exec("DROP TABLE editor"); $conn->exec("DROP TABLE editor_role"); +$conn->exec("DROP TABLE format"); $conn->exec("DROP TABLE maintainer"); $conn->exec("DROP TABLE maintainer_notes"); $conn->exec("DROP TABLE notes"); @@ -423,6 +436,7 @@ $conn->exec("ALTER TABLE class_new RENAME TO class"); $conn->exec("ALTER TABLE document_new RENAME TO document"); $conn->exec("ALTER TABLE document_wiki_new RENAME TO document_wiki"); $conn->exec("ALTER TABLE doc_vote_new RENAME TO doc_vote"); +$conn->exec("ALTER TABLE format_new RENAME TO format"); $conn->exec("ALTER TABLE notes_new RENAME TO notes"); $conn->exec("ALTER TABLE role_new RENAME TO role"); $conn->exec("ALTER TABLE topic_new RENAME TO topic"); diff --git a/LDP/lampadas/pylib/DataLayer.py b/LDP/lampadas/pylib/DataLayer.py index 41bfbea4..727d4c1b 100755 --- a/LDP/lampadas/pylib/DataLayer.py +++ b/LDP/lampadas/pylib/DataLayer.py @@ -108,18 +108,19 @@ class Lampadas: """ def __init__(self): - self.Classes = Classes() + self.Classes = Classes() self.Classes.Load() - self.Config = Config() + self.Config = Config() self.Config.Load() - self.Docs = Docs() + self.Docs = Docs() self.Docs.Load() - self.DTDs = DTDs() - self.Formats = Formats() - self.Languages = Languages() - self.Strings = Strings() - self.Topics = Topics() - self.Users = Users() + self.DTDs = DTDs() + self.Formats = Formats() + self.Languages = Languages() + self.PubStatuses = PubStatuses() + self.Strings = Strings() + self.Topics = Topics() + self.Users = Users() def User(self, UserID): return User(UserID) @@ -564,15 +565,77 @@ class Languages(LampadasCollection): class Language: def __init__(self, LanguageCode=None): + self.I18n = {} if LanguageCode == None: return self.Code = LanguageCode - self.sql = "SELECT isocode, language_name FROM language WHERE isocode= " + wsq(LanguageCode) + self.sql = "SELECT isocode FROM language WHERE isocode= " + wsq(LanguageCode) self.cursor = DB.Select(self.sql) self.Load(self.sql) def Load(self, row): self.Code = trim(row[0]) - self.Name = trim(row[1]) + self.sql = "SELECT lang, language_name FROM language_i18n WHERE isocode=" + wsq(self.Code) + self.cursor = DB.Select(self.sql) + while (1): + self.row = self.cursor.fetchone() + if self.row == None: break + newLanguageI18n = LanguageI18n() + newLanguageI18n.Load(self.row) + self.I18n[newLanguageI18n.Lang] = newLanguageI18n + +# LanguageI18n + +class LanguageI18n: + + def Load(self, row): + self.Lang = row[0] + self.Name = trim(row[1]) + + +# PubStatuses + +class PubStatuses(LampadasCollection): + """ + A collection object of all publication statuses. + """ + + def __init__(self): + self.data = {} + self.sql = "SELECT pub_status FROM pub_status" + self.cursor = DB.Select(self.sql) + while (1): + row = self.cursor.fetchone() + if row == None: break + newPubStatus = PubStatus() + newPubStatus.Load(row) + self.data[newPubStatus.PubStatus] = newPubStatus + +class PubStatus: + + def __init__(self, PubStatus=None): + self.I18n = {} + if PubStatus==None: return + self.PubStatus = PubStatus + + def Load(self, row): + self.PubStatus = trim(row[0]) + self.sql = "SELECT lang, pub_status_name, pub_status_desc FROM pub_status_i18n WHERE pub_status=" + wsq(self.PubStatus) + self.cursor = DB.Select(self.sql) + while (1): + self.row = self.cursor.fetchone() + if self.row == None: break + newPubStatusI18n = PubStatusI18n() + newPubStatusI18n.Load(self.row) + self.I18n[newPubStatusI18n.Lang] = newPubStatusI18n + +# PubStatusI18n + +class PubStatusI18n: + + def Load(self, row): + self.Lang = row[0] + self.Name = trim(row[1]) + self.Description = trim(row[2]) # Strings diff --git a/LDP/lampadas/pylib/UnitTest.py b/LDP/lampadas/pylib/UnitTest.py index 73f138cc..b0201ff7 100755 --- a/LDP/lampadas/pylib/UnitTest.py +++ b/LDP/lampadas/pylib/UnitTest.py @@ -203,10 +203,21 @@ class testFormats(unittest.TestCase): class testLanguages(unittest.TestCase): def testLanguages(self): - assert L.Languages['EN'].Name == 'English' - assert L.Languages['FR'].Name == 'French' + assert L.Languages['EN'].I18n['EN'].Name == 'English' + assert L.Languages['FR'].I18n['EN'].Name == 'French' assert L.Languages.Count() == 136 +class testPubStatuses(unittest.TestCase): + + def testPubStatuses(self): + assert not L.PubStatuses == None + assert L.PubStatuses.Count() > 0 + assert not L.PubStatuses['A'] == None + assert not L.PubStatuses['A'].I18n == None + assert not L.PubStatuses['A'].I18n['EN'] == None + assert L.PubStatuses['A'].I18n['EN'].Name > '' + assert L.PubStatuses['A'].I18n['EN'].Description > '' + class testStrings(unittest.TestCase): def testStrings(self): @@ -266,6 +277,5 @@ class testUserDocs(unittest.TestCase): assert UserDoc.Active == 1 or UserDoc.Active == 0 - if __name__ == "__main__": unittest.main()