Module Gnumed.business.gmLinuxMedNewsXML
Import LinuxMedNews XML data.
http://linuxmednews.com/1414243433
Expand source code
# -*- coding: utf-8 -*-
"""Import LinuxMedNews XML data.
http://linuxmednews.com/1414243433"""
#============================================================
__author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>"
__license__ = "GPL v2"
# std lib
import sys
import datetime as pyDT
import logging
from xml.etree import ElementTree as etree
# GNUmed
if __name__ == '__main__':
sys.path.insert(0, '../../')
from Gnumed.pycommon import gmI18N
gmI18N.activate_locale()
gmI18N.install_domain()
from Gnumed.pycommon import gmDateTime
from Gnumed.business import gmPerson
_log = logging.getLogger('gm-LinuxMedNewsXML')
#============================================================
def parse_xml_linuxmednews(xml_text=None, filename=None):
dob_format = '%Y-%m-%d'
try:
if xml_text is None:
_log.debug('parsing XML in [%s]', filename)
pat = etree.parse(filename)
else:
pat = etree.fromstring(xml_text)
except etree.ParseError:
_log.exception('Cannot parse, is this really XML ?')
return None
dto = gmPerson.cDTO_person()
dto.firstnames = pat.find('firstname').text
dto.lastnames = pat.find('lastname').text
dto.title = pat.find('name_prefix').text
dto.gender = pat.find('gender').text
dob = pyDT.datetime.strptime(pat.find('DOB').text, dob_format)
dto.dob = dob.replace(tzinfo = gmDateTime.pydt_now_here().tzinfo)
dto.dob_is_estimated = False
dto.source = 'LinuxMedNews XML'
#dto.remember_comm_channel(channel=None, url=None):
#dto.remember_address(number=None, street=None, urb=None, region_code=None, zip=None, country_code=None, adr_type=None, subunit=None)
return dto
#============================================================
# main/testing
#============================================================
if __name__ == '__main__':
if len(sys.argv) == 1:
sys.exit()
if sys.argv[1] != 'test':
sys.exit()
#import datetime
gmDateTime.init()
def test():
print(parse_xml_linuxmednews(filename = sys.argv[2]))
test()
Functions
def parse_xml_linuxmednews(xml_text=None, filename=None)
-
Expand source code
def parse_xml_linuxmednews(xml_text=None, filename=None): dob_format = '%Y-%m-%d' try: if xml_text is None: _log.debug('parsing XML in [%s]', filename) pat = etree.parse(filename) else: pat = etree.fromstring(xml_text) except etree.ParseError: _log.exception('Cannot parse, is this really XML ?') return None dto = gmPerson.cDTO_person() dto.firstnames = pat.find('firstname').text dto.lastnames = pat.find('lastname').text dto.title = pat.find('name_prefix').text dto.gender = pat.find('gender').text dob = pyDT.datetime.strptime(pat.find('DOB').text, dob_format) dto.dob = dob.replace(tzinfo = gmDateTime.pydt_now_here().tzinfo) dto.dob_is_estimated = False dto.source = 'LinuxMedNews XML' #dto.remember_comm_channel(channel=None, url=None): #dto.remember_address(number=None, street=None, urb=None, region_code=None, zip=None, country_code=None, adr_type=None, subunit=None) return dto