Revision 66b454b7 cloudcms/clients.py
b/cloudcms/clients.py | ||
---|---|---|
10 | 10 |
from datetime import datetime |
11 | 11 |
from lxml import html |
12 | 12 |
|
13 |
from synnefo import settings
|
|
13 |
from django.conf import settings
|
|
14 | 14 |
|
15 | 15 |
CLIENTS_CACHE_TIMEOUT = getattr(settings, 'CLOUDCMS_CLIENTS_CACHE_TIMEOUT', 120) |
16 | 16 |
|
... | ... | |
170 | 170 |
yield source.get_latest() |
171 | 171 |
|
172 | 172 |
|
173 |
|
|
174 |
class PithosXMLSource(VersionSource): |
|
175 |
""" |
|
176 |
Extract version from versioninfo.xml |
|
177 |
""" |
|
178 |
source_type = 'pithos_xml' |
|
179 |
|
|
180 |
def load(self): |
|
181 |
""" |
|
182 |
Extract first item from versioninfo.xml |
|
183 |
""" |
|
184 |
spliturl = urlparse.urlsplit(self.link) |
|
185 |
baseurl = spliturl.geturl().replace(spliturl.path, '') |
|
186 |
html = self.get_url(self.link) |
|
187 |
items = html.xpath("//item") |
|
188 |
|
|
189 |
# helper lambdas |
|
190 |
def _parse_row(row): |
|
191 |
try: |
|
192 |
name = row.find("title").text |
|
193 |
link = row.find("enclosure").attrib["url"] |
|
194 |
strdate = row.find("pubdate").text |
|
195 |
date = datetime.strptime(strdate.split(" +")[0], |
|
196 |
"%a, %d %B %Y %H:%M:%S") |
|
197 |
print "DATE", date |
|
198 |
version = row.find("title").text |
|
199 |
return { |
|
200 |
'name': name, |
|
201 |
'link': link, |
|
202 |
'date': date, |
|
203 |
'version': version |
|
204 |
} |
|
205 |
except Exception, e: |
|
206 |
return None |
|
207 |
|
|
208 |
versions = filter(bool, map(_parse_row, items)) |
|
209 |
self.versions = versions |
|
210 |
return self |
|
211 |
|
|
212 |
|
|
173 | 213 |
# SOURCE TYPES CLASS MAP |
174 | 214 |
SOURCE_TYPES = { |
175 | 215 |
'redmine_files': RedmineSource, |
176 | 216 |
'direct': DirectSource, |
217 |
'pithos_xml': PithosXMLSource, |
|
177 | 218 |
'link': LinkSource |
178 | 219 |
} |
179 |
|
Also available in: Unified diff