comparison farolluz/parsers/cvrf.py @ 18:8a89b7a591e6

merged
author Benoît Allard <benoit.allard@greenbone.net>
date Tue, 14 Oct 2014 16:49:36 +0200
parents dcc946b30343
children 934c510f8077
comparison
equal deleted inserted replaced
3:8e23ba7d4167 18:8a89b7a591e6
92 elem.attrib.get('Type') 92 elem.attrib.get('Type')
93 ) 93 )
94 94
95 95
96 def parseAcknowledgment(elem, ns='cvrf'): 96 def parseAcknowledgment(elem, ns='cvrf'):
97 names = []
98 for cvrfname in elem.findall(UN(ns, 'Name')):
99 names.append(cvrfname.text.strip())
100 orgs = []
101 for cvrforg in elem.findall(UN(ns, 'Organization')):
102 orgs.append(cvrforg.text.strip())
97 return CVRFAcknowledgment( 103 return CVRFAcknowledgment(
98 elem.findtext(UN(ns, 'Name')), 104 names, orgs,
99 elem.findtext(UN(ns, 'Organization')),
100 elem.findtext(UN(ns, 'Description')), 105 elem.findtext(UN(ns, 'Description')),
101 elem.findtext(UN(ns, 'URL')), 106 elem.findtext(UN(ns, 'URL')),
102 ) 107 )
103 108
104 109
245 raise ValueError('Not a CVRF document !') 250 raise ValueError('Not a CVRF document !')
246 doc = CVRF( 251 doc = CVRF(
247 cvrfdoc.findtext(UN('cvrf', 'DocumentTitle')).strip(), 252 cvrfdoc.findtext(UN('cvrf', 'DocumentTitle')).strip(),
248 cvrfdoc.findtext(UN('cvrf', 'DocumentType')).strip() 253 cvrfdoc.findtext(UN('cvrf', 'DocumentType')).strip()
249 ) 254 )
255
250 cvrfpub = cvrfdoc.find(UN('cvrf', 'DocumentPublisher')) 256 cvrfpub = cvrfdoc.find(UN('cvrf', 'DocumentPublisher'))
251 pub = CVRFPublisher(cvrfpub.attrib['Type'], cvrfpub.attrib.get('VendorID')) 257 if cvrfpub is not None:
252 doc.setPublisher(pub) 258 pub = CVRFPublisher(cvrfpub.attrib['Type'], cvrfpub.attrib.get('VendorID'))
253 contact = cvrfpub.find(UN('cvrf', 'ContactDetails')) 259 doc.setPublisher(pub)
254 if contact is not None: 260 contact = cvrfpub.find(UN('cvrf', 'ContactDetails'))
255 pub.setContact(contact.text.strip()) 261 if contact is not None:
256 authority = cvrfpub.find(UN('cvrf', 'IssuingAuthority')) 262 pub.setContact(contact.text.strip())
257 if authority is not None: 263 authority = cvrfpub.find(UN('cvrf', 'IssuingAuthority'))
258 pub.setAuthority(authority.text.strip()) 264 if authority is not None:
265 pub.setAuthority(authority.text.strip())
266
259 cvrftracking = cvrfdoc.find(UN('cvrf', 'DocumentTracking')) 267 cvrftracking = cvrfdoc.find(UN('cvrf', 'DocumentTracking'))
260 identification = CVRFTrackingID( 268 if cvrftracking is not None:
261 cvrftracking.findtext('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'ID')])).strip() 269 identification = CVRFTrackingID(
262 ) 270 cvrftracking.findtext('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'ID')])).strip()
263 for cvrfalias in cvrftracking.findall('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'Alias')])): 271 )
264 identification.addAlias(cvrfalias.text.strip()) 272 for cvrfalias in cvrftracking.findall('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'Alias')])):
265 tracking = CVRFTracking( 273 identification.addAlias(cvrfalias.text.strip())
266 identification, 274 tracking = CVRFTracking(
267 cvrftracking.findtext(UN('cvrf', 'Status')).strip(), 275 identification,
268 parseVersion(cvrftracking.findtext(UN('cvrf', 'Version')).strip()), 276 cvrftracking.findtext(UN('cvrf', 'Status')).strip(),
269 parseDate(cvrftracking.findtext(UN('cvrf', 'InitialReleaseDate')).strip()), 277 parseVersion(cvrftracking.findtext(UN('cvrf', 'Version')).strip()),
270 parseDate(cvrftracking.findtext(UN('cvrf', 'CurrentReleaseDate')).strip()) 278 parseDate(cvrftracking.findtext(UN('cvrf', 'InitialReleaseDate')).strip()),
271 ) 279 parseDate(cvrftracking.findtext(UN('cvrf', 'CurrentReleaseDate')).strip())
272 doc.setTracking(tracking) 280 )
273 for cvrfrev in cvrftracking.findall('/'.join([UN('cvrf', 'RevisionHistory'), UN('cvrf', 'Revision')])): 281 doc.setTracking(tracking)
274 rev = CVRFRevision( 282 for cvrfrev in cvrftracking.findall('/'.join([UN('cvrf', 'RevisionHistory'), UN('cvrf', 'Revision')])):
275 parseVersion(cvrfrev.findtext(UN('cvrf', 'Number')).strip()), 283 rev = CVRFRevision(
276 parseDate(cvrfrev.findtext(UN('cvrf', 'Date')).strip()), 284 parseVersion(cvrfrev.findtext(UN('cvrf', 'Number')).strip()),
277 cvrfrev.findtext(UN('cvrf', 'Description')).strip(), 285 parseDate(cvrfrev.findtext(UN('cvrf', 'Date')).strip()),
278 ) 286 cvrfrev.findtext(UN('cvrf', 'Description')).strip(),
279 tracking.addRevision(rev) 287 )
280 288 tracking.addRevision(rev)
281 xmlgenerator = cvrftracking.find(UN('cvrf', 'Generator')) 289
282 if xmlgenerator is not None: 290 xmlgenerator = cvrftracking.find(UN('cvrf', 'Generator'))
283 generator = CVRFGenerator() 291 if xmlgenerator is not None:
284 xmlengine = xmlgenerator.findtext(UN('cvrf', 'Engine')) 292 generator = CVRFGenerator()
285 if xmlengine is not None: 293 xmlengine = xmlgenerator.findtext(UN('cvrf', 'Engine'))
286 generator.setEngine(xmlengine.strip()) 294 if xmlengine is not None:
287 xmldate = xmlgenerator.findtext(UN('cvrf', 'Date')) 295 generator.setEngine(xmlengine.strip())
288 if xmldate is not None: 296 xmldate = xmlgenerator.findtext(UN('cvrf', 'Date'))
289 generator.setDate(parseDate(xmldate.strip())) 297 if xmldate is not None:
290 tracking.setGenerator(generator) 298 generator.setDate(parseDate(xmldate.strip()))
299 tracking.setGenerator(generator)
291 300
292 for cvrfnote in cvrfdoc.findall('/'.join([UN('cvrf', 'DocumentNotes'), UN('cvrf', 'Note')])): 301 for cvrfnote in cvrfdoc.findall('/'.join([UN('cvrf', 'DocumentNotes'), UN('cvrf', 'Note')])):
293 doc.addNote(parseNote(cvrfnote)) 302 doc.addNote(parseNote(cvrfnote))
294 303
295 distr = cvrfdoc.findtext(UN('cvrf', 'DocumentDistribution')) 304 distr = cvrfdoc.findtext(UN('cvrf', 'DocumentDistribution'))
313 # --- The ProductTree 322 # --- The ProductTree
314 323
315 cvrfptree = cvrfdoc.find(UN('prod', 'ProductTree')) 324 cvrfptree = cvrfdoc.find(UN('prod', 'ProductTree'))
316 if cvrfptree is not None: 325 if cvrfptree is not None:
317 producttree = doc.createProductTree() 326 producttree = doc.createProductTree()
318 for branch in parseProdBranch(cvrfptree, producttree): 327 # We need to exhaust our generator ...
319 producttree.addBranch(branch) 328 for _ in parseProdBranch(cvrfptree, producttree): pass
320 329
321 for product in cvrfptree.findall(UN('prod', 'FullProductName')): 330 for product in cvrfptree.findall(UN('prod', 'FullProductName')):
322 producttree.addProduct(parseFullProductName(product, producttree)) 331 producttree.addProduct(parseFullProductName(product, producttree))
323 332
324 for cvrfrel in cvrfptree.findall(UN('prod', 'Relationship')): 333 for cvrfrel in cvrfptree.findall(UN('prod', 'Relationship')):
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)