Mercurial > hg > MPIWGWeb
diff MPIWGStaff.py @ 217:2598210ada7a
ICS calendar for talks.
author | casties |
---|---|
date | Mon, 07 Oct 2013 19:45:23 +0200 |
parents | 3b517b412f77 |
children | 95e0087b9e19 |
line wrap: on
line diff
--- a/MPIWGStaff.py Wed Oct 02 14:40:50 2013 +0200 +++ b/MPIWGStaff.py Mon Oct 07 19:45:23 2013 +0200 @@ -16,8 +16,10 @@ import logging import email import re +import datetime from Products.ZDBInterface.ZDBInterfaceFolder import ZDBInterfaceFolder +from Products.MPIWGManager.MPIWGIcsManager import MPIWGIcsManager from SrvTxtUtils import getInt, unicodify, utf8ify, sqlName import MPIWGHelper @@ -36,6 +38,12 @@ manage_addMPIWGStaffForm = MPIWGStaff_old.manage_addMPIWGStaffForm manage_addMPIWGStaff = MPIWGStaff_old.manage_addMPIWGStaff +# MPIWGManager properties for ICS-calendars +# (ID_EN, ID_DE, VALUE_EN, VALUE_DE, WEIGHT, ID) +calendar_props = [('Description', 'Beschreibung', None, None, 0, 'description'), + ('Location', 'Ort', None, None, 0, 'location'), + ('URL', 'URL', None, None, 0, 'url'), + ('Time', 'Zeit', None, None, 0, 'time')] class MPIWGStaffFolder(ZDBInterfaceFolder): @@ -353,7 +361,7 @@ def getUsername(self): """returns the username""" id = re.sub('@mpiwg-berlin\.mpg\.de', '', self.content.e_mail) - return id + return str(id) getId = getUsername @@ -414,7 +422,17 @@ if sortBy == 'priority': query += " order by priority" - return self.folder.executeZSQL(query, [self.content.key]) + return self.folder.executeZSQL(query, [self.getKey()]) + + + def getTalksCal(self): + """Return the talks calendar object (MPIWGIcsManager)""" + try: + cal = self.folder.get('calendars').get("%s_talks"%self.getUsername()) + return cal + except: + return None + def getTeaching(self, published=True, sortBy='priority'): """Return the list of teaching activities""" @@ -425,16 +443,14 @@ if sortBy == 'priority': query += " ORDER BY priority" - return self.folder.executeZSQL(query,[self.content.key]) + return self.folder.executeZSQL(query,[self.getKey()]) def getLastUpdateCV(self): """getDate of Last Update""" try: - fname="%s_cv.pdf"%self.getUsername().encode('utf-8') - logging.debug(fname) - ob=self.folder._getOb("downloadableFiles")._getOb(fname) - return ob.bobobase_modification_time() + ob=self.folder.get("downloadableFiles").get("%s_cv.pdf"%self.getUsername()) + return datetime.datetime.fromtimestamp(ob._p_mtime) except: return "No file yet!" @@ -442,24 +458,21 @@ def getLastUpdatePublications(self): """getDate of Last Update""" try: - ob=self.folder._getOb("downloadableFiles")._getOb("%s_publications.pdf"%self.getUsername().encode('utf-8')) - return ob.bobobase_modification_time() + ob=self.folder.get("downloadableFiles").get("%s_publications.pdf"%self.getUsername()) + return datetime.datetime.fromtimestamp(ob._p_mtime) except: return "No file yet!" def downloadCV(self,REQUEST): """download the cv""" - fname="%s_cv.pdf"%self.getUsername().encode('utf-8') - logging.debug(fname) - ob=self.folder._getOb("downloadableFiles")._getOb(fname) - + ob=self.folder.get("downloadableFiles").get("%s_cv.pdf" % self.getUsername()) REQUEST.RESPONSE.redirect(ob.absolute_url()) + def downloadPublications(self,REQUEST): """donwload the publication list""" - ob=self.folder._getOb("downloadableFiles")._getOb("%s_publications.pdf"%self.getUsername().encode('utf-8')) - + ob=self.folder.get("downloadableFiles").get("%s_publications.pdf"%self.getUsername()) REQUEST.RESPONSE.redirect(ob.absolute_url()) @@ -526,20 +539,40 @@ pt = PageTemplateFile('zpt/staff/edit_profile.zpt', globals()).__of__(self) return pt() - security.declareProtected('View management screens','editTalks') def editTalks(self,REQUEST): """edit talks""" + pt=PageTemplateFile('zpt/staff/edit_talks.zpt', globals()).__of__(self) + if REQUEST: argv=REQUEST.form - if argv.has_key('main_fields'): #got data to change + # ICS URL driven talks + url = argv.get('ics_url', None) + if url: + cal_id = "%s_talks"%self.getUsername() + # use ICS calendar + cal = self.getTalksCal() + if cal is not None: + # calendar exists + if cal.url == url: + # same url + return pt() + else: + # remove + del self.folder.get('calendars')[cal_id] + + # create new calendar + cal = MPIWGIcsManager(cal_id, '', url, defaultProps=calendar_props) + self.folder.get('calendars')[cal_id] = cal + + # manually edited talks + elif argv.has_key('main_fields'): #got data to change self.invalidate_cache() self.changeAdditionalData(argv); - pt=PageTemplateFile('zpt/staff/edit_talks.zpt', globals()).__of__(self) return pt() @@ -617,7 +650,7 @@ data=REQUEST.form - ob = self.folder._getOb("downloadableFiles") + ob = self.folder.get("downloadableFiles") if data.get('cv_publish',None):