# HG changeset patch # User casties # Date 1365170323 -7200 # Node ID 54f135c1ed6577e27559f958df4351fa33c27a39 # Parent aca0fce3824bd866efd5a418f7d73b79d151113c updated MPIWGFeature. zpts moved to feature subfolder and renamed. new date attribute. nicer management interface. diff -r aca0fce3824b -r 54f135c1ed65 MPIWGDepartment.py --- a/MPIWGDepartment.py Fri Mar 08 16:17:58 2013 +0100 +++ b/MPIWGDepartment.py Fri Apr 05 15:58:43 2013 +0200 @@ -68,9 +68,6 @@ dir = getattr(self, lang, self.en) t = dir.title - if not t: - t = self.title - return t def getTitle(self, lang=None): diff -r aca0fce3824b -r 54f135c1ed65 MPIWGFeature.py --- a/MPIWGFeature.py Fri Mar 08 16:17:58 2013 +0100 +++ b/MPIWGFeature.py Fri Apr 05 15:58:43 2013 +0200 @@ -1,16 +1,24 @@ from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate +from OFS.Folder import Folder +from AccessControl import ClassSecurityInfo from Globals import package_home + import string import re import os import logging -from OFS.Folder import Folder -from AccessControl import ClassSecurityInfo +import datetime + +from SrvTxtUtils import getMonthName from MPIWGHelper import * class MPIWGFeature(Folder): - """special object for feature texts on the MPIWG website """ + """special object for feature texts on the MPIWG website. + Has templates for English and German in Folders /en/ and /de/. + Feature teaser is /(en|de)/teaser.pt. Full page is /(en|de)/main.pt. + Full title is the title of /(en|de)/main.pt. + """ meta_type="MPIWGFeature" @@ -19,38 +27,61 @@ {'label':'Main Config','action':'changeForm'}, ) - changeWeightForm = PageTemplateFile('zpt/MPIWGFeatureChangeWeight', globals()) - changeForm = PageTemplateFile('zpt/MPIWGFeatureConfig', globals()) + changeWeightForm = PageTemplateFile('zpt/feature/manage_change_weight', globals()) + changeForm = PageTemplateFile('zpt/feature/manage_config', globals()) - def __init__(self, id, title=None, weight=0): + def __init__(self, id, title=None, weight=0, date=None, title_en=None, title_de=None): self.id = str(id) self.weight = weight if title is None: self.title = id else: self.title = title - - # add language folder and sample templates + + if date is None: + self.date = datetime.date.today() + else: + self.date = date + + # + # add language folder_en and sample templates + # + mainid = 'main.pt' + teaserid = 'teaser.pt' + # english self.manage_addFolder('en') - folder = getattr(self, 'en') - introid = 'intro.pt' - folder._setObject(introid, ZopePageTemplate(introid)) - intro = getattr(folder,introid) - intro.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_intro.zpt')).read(),'text/html') - mainid = 'main.pt' - folder._setObject(mainid, ZopePageTemplate(mainid)) - main = getattr(folder,mainid) - main.pt_edit(open(os.path.join(package_home(globals()),'zpt/MPIWGFeature_template_main.zpt')).read(),'text/html') + folder_en = getattr(self, 'en') + folder_en[teaserid] = ZopePageTemplate(teaserid) + teaser_en = getattr(folder_en,teaserid) + teaser_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_teaser.zpt')).read(),'text/html') + folder_en[mainid] = ZopePageTemplate(mainid) + main_en = getattr(folder_en,mainid) + main_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_main.zpt')).read(),'text/html') + if title_en is not None: + main_en.title = title_en + # german + self.manage_addFolder('de') + folder_de = getattr(self, 'de') + folder_de[teaserid] = ZopePageTemplate(teaserid) + teaser_de = getattr(folder_de,teaserid) + teaser_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_teaser.zpt')).read(),'text/html') + folder_de[mainid] = ZopePageTemplate(mainid) + main_de = getattr(folder_de,mainid) + main_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/feature/default_template_main.zpt')).read(),'text/html') + if title_de is not None: + main_de.title = title_de def index_html(self): """default index page""" return self.getMain() - def getFullTitle(self): + def getFullTitle(self, lang=None): """returns the full title (from main.pt)""" - # get Language from MPIWGRoot - lang = self.getLang() + if lang is None: + # get Language from MPIWGRoot + lang = self.getLang() + dir = getattr(self, lang, self.en) pt = getattr(dir, 'main.pt') t = pt.title @@ -59,6 +90,29 @@ return t + def getDate(self): + """returns the date as a date object""" + return getattr(self, 'date', None) + + def getDateString(self, lang=None): + """returns the date as a string""" + d = self.getDate() + if d is None: + return '???' + + if lang is None: + # get Language from MPIWGRoot + lang = self.getLang() + + if lang == 'iso': + return d.isoformat() + elif lang == 'en': + return "%s %s, %s"%(getMonthName(d.month, 'en'), d.day, d.year) + elif lang == 'de': + return "%s. %s %s"%(d.day, getMonthName(d.month, 'de'), d.year) + + return None + def getUrl(self, baseUrl=None): """returns URL to this feature""" if baseUrl is None: @@ -133,12 +187,30 @@ if RESPONSE is not None: RESPONSE.redirect('manage_main') - def changeMPIWGFeature(self, title=None, weight=None, RESPONSE=None): + def changeMPIWGFeature(self, title=None, weight=None, date=None, title_en=None, title_de=None, RESPONSE=None): """change everything""" if title is not None: self.title = title if weight is not None: - self.weight = weight + self.weight = weight + if date is not None: + try: + self.date = datetime.datetime.strptime(date, '%Y-%m-%d').date() + except: + pass + + folder_en = self.get('en', None) + if folder_en is not None: + main_en = folder_en.get('main.pt', None) + if main_en is not None and title_en is not None: + main_en.title = title_en + + folder_de = self.get('de', None) + if folder_de is not None: + main_de = folder_de.get('main.pt', None) + if main_de is not None and title_de is not None: + main_de.title = title_de + if RESPONSE is not None: RESPONSE.redirect('manage_main') @@ -162,7 +234,7 @@ def manage_addMPIWGFeatureForm(self): """Form for adding""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/AddMPIWGFeature.zpt')).__of__(self) + pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/feature/manage_add_MPIWGFeature.zpt')).__of__(self) return pt() def manage_addMPIWGFeature(self, id, title=None,weight=0,RESPONSE=None): diff -r aca0fce3824b -r 54f135c1ed65 SrvTxtUtils.py --- a/SrvTxtUtils.py Fri Mar 08 16:17:58 2013 +0100 +++ b/SrvTxtUtils.py Fri Apr 05 15:58:43 2013 +0200 @@ -10,8 +10,34 @@ import urllib2 import logging +srvTxtUtilsVersion = "1.6" -srvTxtUtilsVersion = "1.5" +map_months = {'en': [u"", + u"January", + u"February", + u"March", + u"April", + u"May", + u"June", + u"July", + u"August", + u"September", + u"October", + u"November", + u"December"], + 'de': [u"", + u"Januar", + u"Februar", + u"M\u00e4rz", + u"April", + u"Mai", + u"Juni", + u"Juli", + u"August", + u"September", + u"Oktober", + u"November", + u"Dezember"]} def getInt(number, default=0): """returns always an int (0 in case of problems)""" @@ -73,7 +99,9 @@ return text - +def getMonthName(mon, lang): + """returns the name of the month mon in the language lang""" + return map_months[lang][mon] def getHttpData(url, data=None, num_tries=3, timeout=10, noExceptions=False): """returns result from url+data HTTP request""" diff -r aca0fce3824b -r 54f135c1ed65 zpt/AddMPIWGFeature.zpt --- a/zpt/AddMPIWGFeature.zpt Fri Mar 08 16:17:58 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ - -
-+ +
+