Mercurial > farol > farolluz
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')): |