add Languages collection

reorg page generation a bit
This commit is contained in:
david 2002-05-18 13:31:42 +00:00
parent a619738f33
commit 7eb22052e6
4 changed files with 68 additions and 54 deletions

View File

@ -15,7 +15,6 @@ import Database
import Log
from string import strip
from types import StringType
#from UserDict import UserDict
# Globals
@ -115,6 +114,7 @@ class Lampadas:
self.Config.Load()
self.Docs = Docs()
self.Docs.Load()
self.Languages = Languages()
self.Strings = Strings()
self.Users = Users()
@ -143,23 +143,6 @@ class Classes(LampadasCollection):
newClass.Load(row)
self.data[newClass.ID] = newClass
# def Add(self, Title, ClassID, Format, DTD, DTDVersion, Version, LastUpdate, URL, ISBN, PubStatus, ReviewStatus, TickleDate, PubDate, HomeURL, TechReviewStatus, License, Abstract, LanguageCode, SeriesID):
# self.id = DB.Value('SELECT max(doc_id) from document') + 1
# self.sql = "INSERT INTO document(doc_id, title, class_id, format, dtd, dtd_version, version, last_update, url, isbn, pub_status, review_status, tickle_date, pub_date, ref_url, tech_review_status, license, abstract, lang, sk_seriesid) VALUES (" + str(self.id) + ", " + wsq(Title) + ", " + str(ClassID) + ", " + wsq(Format) + ", " + wsq(DTD) + ", " + wsq(DTDVersion) + ", " + wsq(Version) + ", " + wsq(LastUpdate) + ", " + wsq(URL) + ", " + wsq(ISBN) + ", " + wsq(PubStatus) + ", " + wsq(ReviewStatus) + ", " + wsq(TickleDate) + ", " + wsq(PubDate) + ", " + wsq(HomeURL) + ", " + wsq(TechReviewStatus) + ", " + wsq(License) + ", " + wsq(Abstract) + ", " + wsq(LanguageCode) + ", " + wsq(SeriesID) + ")"
# assert DB.Exec(self.sql) == 1
# DB.Commit()
# self.NewID = DB.Value('SELECT MAX(doc_id) from document')
# newDoc = Doc(self.NewID)
# self[self.NewID] = newDoc
# return self.NewID
# def Del(self, id):
# self.sql = ('DELETE from document WHERE doc_id=' + str(id))
# assert DB.Exec(self.sql) == 1
# DB.Commit()
# del self[id]
class Class:
@ -203,7 +186,6 @@ class Config(LampadasCollection):
row = self.cursor.fetchone()
if row == None: break
self[trim(row[0])] = trim(row[1])
# Documents
@ -371,6 +353,39 @@ class DocError:
self.Error = trim(row[0])
# Languages
class Languages(LampadasCollection):
"""
A collection object of all languages.
"""
def __init__(self):
self.data = {}
self.sql = "SELECT isocode, language_name FROM language"
self.cursor = DB.Select(self.sql)
while (1):
row = self.cursor.fetchone()
if row == None: break
newLanguage = Language()
newLanguage.Load(row)
self.data[newLanguage.Code] = newLanguage
class Language:
def __init__(self, LanguageCode=None):
if LanguageCode == None: return
self.Code = LanguageCode
self.sql = "SELECT isocode, language_name 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])
# String
class Strings(LampadasCollection):
@ -389,23 +404,6 @@ class Strings(LampadasCollection):
newString.Load(row)
self.data[newString.Code] = newString
# def Add(self, Title, StringID, Format, DTD, DTDVersion, Version, LastUpdate, URL, ISBN, PubStatus, ReviewStatus, TickleDate, PubDate, HomeURL, TechReviewStatus, License, Abstract, LanguageCode, SeriesID):
# self.id = DB.Value('SELECT max(doc_id) from document') + 1
# self.sql = "INSERT INTO document(doc_id, title, class_id, format, dtd, dtd_version, version, last_update, url, isbn, pub_status, review_status, tickle_date, pub_date, ref_url, tech_review_status, license, abstract, lang, sk_seriesid) VALUES (" + str(self.id) + ", " + wsq(Title) + ", " + str(StringID) + ", " + wsq(Format) + ", " + wsq(DTD) + ", " + wsq(DTDVersion) + ", " + wsq(Version) + ", " + wsq(LastUpdate) + ", " + wsq(URL) + ", " + wsq(ISBN) + ", " + wsq(PubStatus) + ", " + wsq(ReviewStatus) + ", " + wsq(TickleDate) + ", " + wsq(PubDate) + ", " + wsq(HomeURL) + ", " + wsq(TechReviewStatus) + ", " + wsq(License) + ", " + wsq(Abstract) + ", " + wsq(LanguageCode) + ", " + wsq(SeriesID) + ")"
# assert DB.Exec(self.sql) == 1
# DB.Commit()
# self.NewID = DB.Value('SELECT MAX(doc_id) from document')
# newDoc = Doc(self.NewID)
# self[self.NewID] = newDoc
# return self.NewID
# def Del(self, id):
# self.sql = ('DELETE from document WHERE doc_id=' + str(id))
# assert DB.Exec(self.sql) == 1
# DB.Commit()
# del self[id]
class String:

View File

@ -39,27 +39,34 @@ class PageFactory:
def __call__(self, key, lang):
if key[:4] == 'doc/':
docid = int(key[4:])
Doc = L.Docs[docid]
assert not Doc == None
if Doc.Format=='SGML' or Doc.Format == 'XML':
Files = Doc.Files
if Files.Count() == 0:
return "No file to process"
elif Files.Count() > 1:
return "Only single files supported right now"
DocID = int(key[4:])
return self.DocPage(DocID, lang)
else:
return self.Page(key, lang)
def Page(self, key, lang):
page = L.Strings['tpl-default'].I18n[lang].Text
page = page.replace('|header|', L.Strings['header'].I18n[lang].Text)
page = page.replace('|footer|', L.Strings['footer'].I18n[lang].Text)
page = page.replace('|body|', L.Strings[key].I18n[lang].Text)
return page
def DocPage(self, DocID, lang):
Doc = L.Docs[DocID]
assert not Doc == None
if Doc.Format=='SGML' or Doc.Format == 'XML':
Files = Doc.Files
if Files.Count() == 0:
page = 'No file to process'
elif Files.Count() > 1:
page = 'Only single files supported right now'
else:
keys = Files.keys()
for key in keys:
File = Files[key]
page = C.ConvertSGMLFile(cvs_root + File.Filename, File.Format)
else:
return "FORMAT NOT YET SUPPORTED"
else:
page = L.Strings['tpl-default'].I18n[lang].Text
page = page.replace('|header|', L.Strings['header'].I18n[lang].Text)
page = page.replace('|footer|', L.Strings['footer'].I18n[lang].Text)
page = page.replace('|body|', L.Strings[key].I18n[lang].Text)
page = 'FORMAT NOT YET SUPPORTED'
return page

View File

@ -89,7 +89,9 @@ class Lintadas:
Log('Lintadas run on document ' + str(DocID) + ' complete')
# When run at the command line, all checks are performed on all documents.
# When run at the command line, check the document requested.
# If no document was specified, all checks are performed on all documents.
#
Lintadas = Lintadas()

View File

@ -143,7 +143,14 @@ class testStrings(unittest.TestCase):
assert L.Strings.Count() > 0
assert not L.Strings['header'] == None
assert L.Strings['test'].I18n['EN'].Text == 'Test Text'
class testLanguages(unittest.TestCase):
def testLanguages(self):
assert L.Languages['EN'].Name == 'English'
assert L.Languages['FR'].Name == 'French'
assert L.Languages.Count() == 136
class testUsers(unittest.TestCase):
def testUsers(self):