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