Esempio n. 1
0
    def pdf(self, operationName, classic=None, template_file=None):
        """ Restituisce una stringa contenente il report in formato PDF
        """
        azienda = Azienda().getRecord(id=Environment.azienda)
        scribusVersion(self._slaTemplate)
        if not Environment.new_print_enjine:
            if self._slaTemplateObj is None:
                self._slaTemplateObj = SlaTpl2Sla(
                                        slaFileName=self._slaTemplate,
                                        pdfFolder=self._anagrafica._folder,
                                        report=self._anagrafica._reportType,
                                        classic=classic,
                                        template_file=template_file)

        param = []
        for d in self.objects:
            d.resolveProperties()
            param.append(d.dictionary(complete=True))
        multilinedirtywork(param)
        if azienda and param:
            azidict = azienda.dictionary(complete=True)
            for a, b in azidict.items():
                k = "azi_" + a
                azidict[k] = b
                del azidict[a]
            param[0].update(azidict)
        if not Environment.new_print_enjine:
            return self._slaTemplateObj.serialize(param, self.objects)
        else:
            return Sla2Pdf(slaFileName=self._slaTemplate,
                        pdfFolder=self._anagrafica._folder,
                        report=self._anagrafica._reportType).createPDF(
                                        objects=param, daos=self.objects)
    def pdf(self, operationName, classic=None, template_file=None):
        """ Restituisce una stringa contenente il report in formato PDF
        """
        azienda = Azienda().getRecord(id=Environment.azienda)
        param = []
        for d in self.objects:
            d.resolveProperties()
            param.append(d.dictionary(complete=True))
#        multilinedirtywork(param)
        if azienda:
            azidict = azienda.dictionary(complete=True)
            for a, b in azidict.items():
                k = "azi_" + a
                azidict[k] = b
                del azidict[a]
            if param:
                param[0].update(azidict)
        if template_file:
            scribusVersion(Environment.labelTemplatesDir + template_file)
        else:
            scribusVersion(self._slaTemplate)
        if not Environment.new_print_enjine:
            print "OLD PRINT ENGINE"
            self._slaTemplateObj = SlaTpl2Sla(slaFileName=self._slaTemplate,
                                        pdfFolder=self._anagrafica._folder,
                                        report=self._anagrafica._reportType,
                                        label=True).serialize(
                                                param,
                                                self.objects,
                                                classic=classic,
                                                template_file=template_file)
            return self._slaTemplateObj
        else:
            print "NEW PRINT ENGINE"
            if template_file:
                slafile = Environment.labelTemplatesDir + template_file
            else:
                slafile = self._slaTemplate
            SlaTpl2Sla_ng(slafile=None, label=True,
                                    report=self._anagrafica._reportType,
                                    objects=param, daos=self.objects,
                                    slaFileName=slafile,
                                    pdfFolder=self._anagrafica._folder,
                                    classic=classic,
                                    template_file=template_file)
            return Sla2Pdf_ng(slafile=self._anagrafica._folder \
                                    + "_temppp.sla").translate()
    def pdf(self, operationName, classic=None, template_file=None):
        """ Qui si stampa selezione """
        from sqlalchemy.orm import undefer_group
        self._slaTemplate = None
        self._slaTemplateObj = None
        # aggiungo i dati azienda al dao in modo che si gestiscano a monte
        azienda = Azienda().getRecord(id=Environment.azienda)
        operationNameUnderscored = operationName.replace(' ', '_').lower()
        a = Environment.templatesDir.decode("utf-8") + operationNameUnderscored + '.sla'
        Environment.pg2log.info(a)
        if os.path.exists(Environment.templatesDir + operationNameUnderscored \
                                                                + '.sla'):
            self._slaTemplate = Environment.templatesDir \
                                    + operationNameUnderscored \
                                    + '.sla'
        elif "DDT" in operationName and \
                        os.path.exists(Environment.templatesDir + 'ddt.sla'):
            self._slaTemplate = Environment.templatesDir + 'ddt.sla'
        else:
            self._slaTemplate = Environment.templatesDir \
                                        + self.defaultFileName \
                                        + '.sla'
        """ Restituisce una stringa contenente il report in formato PDF """
        if self.dao.__class__.__name__ in Environment.fromHtmlLits:
            operation = Gtk.PrintOperation()
            setting = Gtk.PageSetup()
            ps = Gtk.PaperSize.new_custom("cc", "cc", 210, 297, gtk.Unit.MM)
            st = Gtk.PrintSettings()
            s = Gtk.PageSetup()
            s.set_paper_size(ps)
            margine_fondo = float(setconf("Stampa", "singolo_margine_basso")or 4.3)
            s.set_bottom_margin(margine_fondo, gtk.Unit.MM)
            margine_sinistro = float(setconf("Stampa", "singolo_margine_sinistro")or 4.3)
            s.set_left_margin(margine_sinistro, gtk.Unit.MM)
            margine_destro = float(setconf("Stampa", "singolo_margine_destro")or 4.3)
            s.set_right_margin(margine_destro, gtk.Unit.MM)
            margine_alto = float(setconf("Stampa", "singolo_margine_alto")or 4.3)
            s.set_top_margin(margine_alto, gtk.Unit.MM)
            orientamento = str(setconf("Stampa", "singolo_ori"))
            if orientamento == "orizzontale":
                s.set_orientation(Gtk.PageOrientation.LANDSCAPE)
            operation.set_default_page_setup(s)
            operation.set_export_filename(Environment.tempDir + ".temp.pdf")
            p = self._gtkHtml.get_main_frame().print_full(operation,gtk.PrintOperationAction.EXPORT)
            g = file(Environment.tempDir + ".temp.pdf", "rb")
            f = g.read()
            g.close()
            return f
        param = [self.dao.dictionary(complete=True)]
        multilinedirtywork(param)
        if azienda:
            azidict = azienda.dictionary(complete=True)
            for a, b in azidict.items():
                k = "azi_" + a
                azidict[k] = b
                del azidict[a]
            param[0].update(azidict)
        if 'operazione' in param[0] and 'causale_trasporto' in param[0]:
            if (param[0]["operazione"] in ["DDT vendita", "DDT acquisto"]) \
                 and param[0]["causale_trasporto"] != "":
                param[0]["operazione"] = "DDT"

        # controllo la versione dello sla che devo elaborare
        versione = scribusVersion(self._slaTemplate)
        Environment.pg2log.info("VERSIONE SLA: " + str(versione))

        if Environment.new_print_enjine:
            stpl2sla = SlaTpl2Sla_ng(
                            slafile=None, label=None, report=None,
                            objects=param,
                            daos=self.dao,
                            slaFileName=self._slaTemplate,
                            pdfFolder=self._anagrafica._folder,
                            classic=True,
                            template_file=None).fileElaborated()
            return Sla2Pdf_ng(slafile=stpl2sla).translate()
        else:
            if self._slaTemplateObj is None:
                self._slaTemplateObj = SlaTpl2Sla(
                                        slaFileName=self._slaTemplate,
                                        pdfFolder=self._anagrafica._folder,
                                        report=self._anagrafica._reportType,
                                        classic=True,
                                        template_file=template_file)
            print("DAO IN STAMPA CLASSICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
            Environment.pg2log.info("DAO IN STAMPA CLASSIC: " + str(self.dao))
            return self._slaTemplateObj.serialize(param, classic=True,
                                                  dao=self.dao)
Esempio n. 4
0
def _to_pdf(dao, classic=None, template_file=None):
    operationName = dao.operazione

    operationNameUnderscored = operationName.replace(' ', '_').lower()

    _slaTemplate = None

    # aggiungo i dati azienda al dao in modo che si gestiscano a monte
    azienda = Azienda().getRecord(id=Environment.azienda)

    if os.path.exists(Environment.templatesDir + operationNameUnderscored + '.sla'):
        _slaTemplate = Environment.templatesDir + operationNameUnderscored + '.sla'
    elif "DDT" in operationName and \
            os.path.exists(Environment.templatesDir + 'ddt.sla'):
        _slaTemplate = Environment.templatesDir + 'ddt.sla'
    else:
        _slaTemplate = Environment.templatesDir + 'documento.sla'
    """ Restituisce una stringa contenente il report in formato PDF """

    if dao.__class__.__name__ in Environment.fromHtmlLits:
        from  xhtml2pdf import pisa
        #f = self.hh
        g = file(Environment.tempDir + ".temp.pdf", "wb")
        pisa.CreatePDF(str(f), g)
        g.close()
        g = file(Environment.tempDir + ".temp.pdf", "r")
        f = g.read()
        g.close()
        return f

    param = [dao.dictionary(complete=True)]

    utils.multilinedirtywork(param)

    try:
        if hasattr(Environment.conf.Documenti, "jnet"):
            from promogest.modules.NumerazioneComplessa.jnet import \
                numerazioneJnet

            param[0]["numero"] = numerazioneJnet(dao)
    except:
        pass

    if azienda:
        azidict = azienda.dictionary(complete=True)
        for a, b in azidict.items():
            k = "azi_" + a
            azidict[k] = b
            del azidict[a]
        param[0].update(azidict)

    if 'operazione' in param[0] and 'causale_trasporto' in param[0]:
        if (param[0]["operazione"] in ["DDT vendita", "DDT acquisto"]) \
                and param[0]["causale_trasporto"] != "":
            param[0]["operazione"] = "DDT"

    _anagrafica_folder = tempfile.gettempdir() + os.sep

    stpl2sla = SlaTpl2Sla_ng(slafile=None, label=None, report=None,
                             objects=param,
                             daos=dao,
                             slaFileName=_slaTemplate,
                             pdfFolder=_anagrafica_folder,
                             classic=True,
                             template_file=None).fileElaborated()
    return Sla2Pdf_ng(slafile=stpl2sla).translate()