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