Mercurial > farol > farolluz
comparison farolluz/parsers/cvrf.py @ 5:d62264a643fb
Allow parsing of incomplete documents
author | Benoît Allard <benoit.allard@greenbone.net> |
---|---|
date | Mon, 06 Oct 2014 11:39:38 +0200 |
parents | d47e1164740f |
children | 4c6e15514a6d |
comparison
equal
deleted
inserted
replaced
4:c5cf387b5785 | 5:d62264a643fb |
---|---|
245 raise ValueError('Not a CVRF document !') | 245 raise ValueError('Not a CVRF document !') |
246 doc = CVRF( | 246 doc = CVRF( |
247 cvrfdoc.findtext(UN('cvrf', 'DocumentTitle')).strip(), | 247 cvrfdoc.findtext(UN('cvrf', 'DocumentTitle')).strip(), |
248 cvrfdoc.findtext(UN('cvrf', 'DocumentType')).strip() | 248 cvrfdoc.findtext(UN('cvrf', 'DocumentType')).strip() |
249 ) | 249 ) |
250 | |
250 cvrfpub = cvrfdoc.find(UN('cvrf', 'DocumentPublisher')) | 251 cvrfpub = cvrfdoc.find(UN('cvrf', 'DocumentPublisher')) |
251 pub = CVRFPublisher(cvrfpub.attrib['Type'], cvrfpub.attrib.get('VendorID')) | 252 if cvrfpub is not None: |
252 doc.setPublisher(pub) | 253 pub = CVRFPublisher(cvrfpub.attrib['Type'], cvrfpub.attrib.get('VendorID')) |
253 contact = cvrfpub.find(UN('cvrf', 'ContactDetails')) | 254 doc.setPublisher(pub) |
254 if contact is not None: | 255 contact = cvrfpub.find(UN('cvrf', 'ContactDetails')) |
255 pub.setContact(contact.text.strip()) | 256 if contact is not None: |
256 authority = cvrfpub.find(UN('cvrf', 'IssuingAuthority')) | 257 pub.setContact(contact.text.strip()) |
257 if authority is not None: | 258 authority = cvrfpub.find(UN('cvrf', 'IssuingAuthority')) |
258 pub.setAuthority(authority.text.strip()) | 259 if authority is not None: |
260 pub.setAuthority(authority.text.strip()) | |
261 | |
259 cvrftracking = cvrfdoc.find(UN('cvrf', 'DocumentTracking')) | 262 cvrftracking = cvrfdoc.find(UN('cvrf', 'DocumentTracking')) |
260 identification = CVRFTrackingID( | 263 if cvrftracking is not None: |
261 cvrftracking.findtext('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'ID')])).strip() | 264 identification = CVRFTrackingID( |
262 ) | 265 cvrftracking.findtext('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'ID')])).strip() |
263 for cvrfalias in cvrftracking.findall('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'Alias')])): | 266 ) |
264 identification.addAlias(cvrfalias.text.strip()) | 267 for cvrfalias in cvrftracking.findall('/'.join([UN('cvrf', 'Identification'), UN('cvrf', 'Alias')])): |
265 tracking = CVRFTracking( | 268 identification.addAlias(cvrfalias.text.strip()) |
266 identification, | 269 tracking = CVRFTracking( |
267 cvrftracking.findtext(UN('cvrf', 'Status')).strip(), | 270 identification, |
268 parseVersion(cvrftracking.findtext(UN('cvrf', 'Version')).strip()), | 271 cvrftracking.findtext(UN('cvrf', 'Status')).strip(), |
269 parseDate(cvrftracking.findtext(UN('cvrf', 'InitialReleaseDate')).strip()), | 272 parseVersion(cvrftracking.findtext(UN('cvrf', 'Version')).strip()), |
270 parseDate(cvrftracking.findtext(UN('cvrf', 'CurrentReleaseDate')).strip()) | 273 parseDate(cvrftracking.findtext(UN('cvrf', 'InitialReleaseDate')).strip()), |
271 ) | 274 parseDate(cvrftracking.findtext(UN('cvrf', 'CurrentReleaseDate')).strip()) |
272 doc.setTracking(tracking) | 275 ) |
273 for cvrfrev in cvrftracking.findall('/'.join([UN('cvrf', 'RevisionHistory'), UN('cvrf', 'Revision')])): | 276 doc.setTracking(tracking) |
274 rev = CVRFRevision( | 277 for cvrfrev in cvrftracking.findall('/'.join([UN('cvrf', 'RevisionHistory'), UN('cvrf', 'Revision')])): |
275 parseVersion(cvrfrev.findtext(UN('cvrf', 'Number')).strip()), | 278 rev = CVRFRevision( |
276 parseDate(cvrfrev.findtext(UN('cvrf', 'Date')).strip()), | 279 parseVersion(cvrfrev.findtext(UN('cvrf', 'Number')).strip()), |
277 cvrfrev.findtext(UN('cvrf', 'Description')).strip(), | 280 parseDate(cvrfrev.findtext(UN('cvrf', 'Date')).strip()), |
278 ) | 281 cvrfrev.findtext(UN('cvrf', 'Description')).strip(), |
279 tracking.addRevision(rev) | 282 ) |
280 | 283 tracking.addRevision(rev) |
281 xmlgenerator = cvrftracking.find(UN('cvrf', 'Generator')) | 284 |
282 if xmlgenerator is not None: | 285 xmlgenerator = cvrftracking.find(UN('cvrf', 'Generator')) |
283 generator = CVRFGenerator() | 286 if xmlgenerator is not None: |
284 xmlengine = xmlgenerator.findtext(UN('cvrf', 'Engine')) | 287 generator = CVRFGenerator() |
285 if xmlengine is not None: | 288 xmlengine = xmlgenerator.findtext(UN('cvrf', 'Engine')) |
286 generator.setEngine(xmlengine.strip()) | 289 if xmlengine is not None: |
287 xmldate = xmlgenerator.findtext(UN('cvrf', 'Date')) | 290 generator.setEngine(xmlengine.strip()) |
288 if xmldate is not None: | 291 xmldate = xmlgenerator.findtext(UN('cvrf', 'Date')) |
289 generator.setDate(parseDate(xmldate.strip())) | 292 if xmldate is not None: |
290 tracking.setGenerator(generator) | 293 generator.setDate(parseDate(xmldate.strip())) |
294 tracking.setGenerator(generator) | |
291 | 295 |
292 for cvrfnote in cvrfdoc.findall('/'.join([UN('cvrf', 'DocumentNotes'), UN('cvrf', 'Note')])): | 296 for cvrfnote in cvrfdoc.findall('/'.join([UN('cvrf', 'DocumentNotes'), UN('cvrf', 'Note')])): |
293 doc.addNote(parseNote(cvrfnote)) | 297 doc.addNote(parseNote(cvrfnote)) |
294 | 298 |
295 distr = cvrfdoc.findtext(UN('cvrf', 'DocumentDistribution')) | 299 distr = cvrfdoc.findtext(UN('cvrf', 'DocumentDistribution')) |