Beispiel #1
0
class UpdateXmlContrat(object):
    """class to update new Xml on Oracle database, with restarting contrat """
    def __init__(self, logger=None):
        self.logger = logger or logging.getLogger(__name__)
        self.__oracle = Oracle(mode="admin")
        self.__oracle._connect()
        # self.__oracle._close()

    def update_xml(self, new_zips):
        for nzip in new_zips:
            xml_content_clob = nzip.get('xml')
            new_xml_clob = self.__oracle.cursor.var(cx_Oracle.CLOB)
            new_xml_clob.setvalue(0, xml_content_clob)

            idcontrat = nzip.get("idcontrat")
            idcontrat_var = self.__oracle.cursor.var(cx_Oracle.NUMBER)
            idcontrat_var.setvalue(0, idcontrat)

            # update PARAMETRERAPPLICATION
            self.__oracle.cursor.execute(
                """ UPDATE SITECENTRAL.PARAMETREAPPLICATION 
                                            SET PARAMETRESAPPLICATION = :parametreapp 
                                            WHERE IDCONTRAT = :idcontrat 
                                            AND TYPEAPPLICATION = 41""",
                parametreapp=new_xml_clob,
                idcontrat=idcontrat_var)
            self.__oracle.connection.commit()
            self.logger.info("Success : Update idcontrat %s !!" % idcontrat)

        # self.__oracle._close()

    def restart_contrat(self, idcontrat, idlogin, timeout=1):
        self.__suspend_contrat(idcontrat, idlogin)
        sleep(timeout)
        self.__resume_contrat(idcontrat, idlogin)

    def close(self):
        self.__oracle._close()

    def __suspend_contrat(self, idcontrat, idlogin):
        idcontrat_var = self.__oracle.cursor.var(cx_Oracle.NUMBER)
        idcontrat_var.setvalue(0, idcontrat)
        idlogin_var = self.__oracle.cursor.var(cx_Oracle.STRING)
        idlogin_var.setvalue(0, idlogin)
        try:
            self.logger.info("-> (-) Suspend contrat : %s" % idcontrat)
            self.__oracle.cursor.callproc("APICONTRAT.SuspendreContrat",
                                          [idcontrat_var, idlogin_var])
        except Exception, ex:
            self.logger.error(
                "Error: during suspending contrat : %s, cause: %s" %
                (idcontrat, ex))