This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
PcfRevuesDePresse/RevuesDePresse.py

72 lines
2.8 KiB
Python

""" RevuesDePresse Class """
import os
from interfaces import IRevuesDePresse
from zope.interface import implements
from Products.Archetypes.public import *
schema = BaseSchema + Schema((
TextField('description',
widget=RichWidget(description_msgid="desc_folder",
description="The description of the presse reviews folder.",
label_msgid="label_folder",
label="Description",
i18n_domain = "revuesdepresse",
rows=15)),
StringField('pressreviewsbaseurl',
widget=StringWidget(description="Base URL of press reviews",
description_msgid="desc_pressreviewsbaseurl",
label_msgid="label_pressreviewsbaseurl",
label="Press Reviews Base URL",
i18n_domain = "revuesdepresse"),
required=1,
searchable=0),
StringField('pressreviewspath',
widget=StringWidget(description="Path to server directory with press reviews",
description_msgid="desc_pressreviewspath",
label_msgid="label_pressreviewspath",
label="Press Reviews Path",
i18n_domain = "revuesdepresse"),
required=1,
searchable=0),
))
class RevuesDePresse(BaseContent):
implements(IRevuesDePresse)
schema = schema
_at_rename_after_creation = True
def getTodayLink(self):
if not self.pressreviewsbaseurl[-1] == '/':
self.pressreviewsbaseurl += '/'
return self.pressreviewsbaseurl + 'revue.PDF'
def getLinks(self, num=None, offset=0):
'''Return a list of tuples (url, label)'''
if not self.pressreviewsbaseurl[-1] == '/':
self.pressreviewsbaseurl += '/'
filenames = os.listdir(self.pressreviewspath)
def cmp_filenames(x, y):
if len(x) != 18:
return -1
if len(y) != 18:
return 1
return cmp((y[10:14], y[8:10], y[6:8]), (x[10:14], x[8:10], x[6:8]))
filenames.sort(cmp_filenames)
all_links = []
for filename in filenames:
if not os.path.splitext(filename)[-1].lower() == '.pdf':
continue
url = self.pressreviewsbaseurl + filename
label = '%s/%s/%s' % (filename[6:8], filename[8:10], filename[10:14])
all_links.append((url, label))
if num is None:
return all_links[offset:]
return all_links[offset:offset+num]
registerType(RevuesDePresse)