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'))
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)