예제 #1
0
    def labelSla(self):
        """
        FIXME: Grave bug , non lascia il testo semplice nella cella in cui è presente
            anche un tag ...
        """
        self.labelObj = self.slaPageObjects()
        index = -1
        gr = []
        for pageObject in self.labelObj:
            itexts = pageObject.findall('ITEXT')
            group = pageObject.get('GROUPS')
            if group in gr:
                for itext in itexts:
                    attributes = itext.items()
                    dictionary = {}
                    for kk in range(0, len(attributes)):
                        dictionary[attributes[kk][0]] = attributes[kk][1]
                    ch = dictionary['CH']
                    tags = Sla2pdfUtils.findTags(ch)
                    if tags:
                        tagsKeys = tags.keys()[0] or []
                        function = tags[tagsKeys]['function']
                        parameter = tags[tagsKeys]['parameter']
                        if function == "bcview":
                            bc = self.objects[index][tagsKeys]
                            if bc == "None":
                                bc = "0000000000000"
                            value = "bcview;%s;%s;%s" %(bc,
                                        str(tags[tagsKeys]['parameter'].split('X')[0]),
                                        str(tags[tagsKeys]['parameter'].split('X')[1])) or ""
                        elif tagsKeys in self.timeTags:
                            value = Sla2pdfUtils.getNowValue(tagsKeys)
                        else:
                            value = self.objects[index][tagsKeys] or ""
                        if function in self.formatFunctions and "X" not in parameter:
                            resolvedTag = self.callFunction(function, value, parameter)
                            value = ch.replace(tags[tagsKeys]['completeTag'], resolvedTag)
                        else:
                            value = str(value)

                    else:
                        value = ch
                    if value.count('€') >1:
                        value = value.replace('€', '', 1)
                    itext.set('CH', value)
            else:
                gr.append(group)
                index += 1
예제 #2
0
    def fillDocument(self):
        """ Replacing tags with real values """
        self.gruppi = self.findTablesProperties()
        iteranti = self.getIteratableGroups(self.gruppi)
        self.pageObjects = self.slaPageObjects()
        iterator = 0
        while iterator < self.lenPageObjects():
            if self.pbar:
                pbar(self.pbar,pulse=True,text="GENERAZIONE STAMPA ATTENDERE %s") %(str(iterator))
            pageObject = self.pageObjects[iterator]
            isTableItem = pageObject.get('isTableItem')
            isGroupControl = pageObject.get('isGroupControl')
            pageNumber = int(pageObject.get('OwnPage')) + 1
            group = str(pageObject.get('GROUPS')).strip()
            itexts = pageObject.findall('ITEXT')
            try:
                group= group.strip().split('%%%')[0]
            except:
                group = group
            pfile = pageObject.get('PFILE')
            if (pfile != ''):
                iterator += 1
                continue
            if group:
                actualGroup = group
                if str(actualGroup).strip() not in iteranti:
                    # Replacing non-iterator tags

                    for itext in itexts:
                        ch = itext.get('CH')
                        tags = Sla2pdfUtils.findTags(ch)
                        #print "Stampo il tag", tags
                        if tags is not None:
                            tagsKeys = tags.keys()
                            #print "Dizionario dei tags tagsKeys",  tagsKeys
                            for tagkey in tagsKeys:
                                if tagkey.replace(' ', '') == '':
                                    continue
                                #try:
                                resolvedTag = ''
                                function = tags[tagkey]['function']
                                parameter = tags[tagkey]['parameter']
                                if "X" in parameter:
                                    parameter = parameter.split("X")
                                if tagkey == 'currentPage':
                                    value = pageNumber
                                elif tagkey == 'totalPage':
                                    value = self.pagesNumber
                                elif tagkey in self.timeTags:
                                    value = Sla2pdfUtils.getNowValue(tagkey)
                                else:
                                    if self.cycle <= (len(self.objects) - 1):
                                        try:
                                            value = self.objects[self.cycle][tagkey] or ''
                                        except:
                                            if "destinazione_merce" in tagkey:
                                                if tagkey == "destinazione_merce":
                                                    value = self.daos.DM.denominazione or ""
                                                elif tagkey == "indirizzo_destinazione_merce":
                                                    value = self.daos.DM.indirizzo
                                                elif tagkey == "localita_destinazione_merce":
                                                    value = self.daos.DM.localita or ""
                                                elif tagkey == "cap_destinazione_merce":
                                                    value = self.daos.DM.cap or ""
                                                elif tagkey == "provincia_destinazione_merce":
                                                    value = self.daos.DM.provincia or ""
                                            #else:
                                                #try:

                                    else:
                                        value = ''
                                # Function
                                if function in self.formatFunctions:
                                    resolvedTag = uu(self.callFunction(function, value, parameter))
                                else:
                                    resolvedTag = uu(value)
                                ch = ch.replace(tags[tagkey]['completeTag'], resolvedTag)
                                  # Save itext
                                try:
                                    if value.count('€') >1:
                                        value = value.replace('€', '', 1)
                                except:
                                    pass
                                itext.set('CH', ch)

                else:
                    if isGroupControl == '1':
                        iterator += 1
                        continue
                    for itext in itexts:
                        ch = str(itext.get('CH'))
                        if '<<' in ch and '>>' in ch:
                            while (ch.find('<<') > -1) and (ch.find('>>') > -1):
                                arrayIndex = int(ch[ch.find('<<')+2:ch.find('>>')])
                                ch = ch.replace(('<<%d>>' % arrayIndex), '')
                        else:
                            arrayIndex = -1
                        tags = Sla2pdfUtils.findTags(ch)
                        if tags is not None:
                            for k in tags.keys():
                                if k.replace(' ', '') == '':
                                    continue
                                #try:
                                resolvedTag = ''
                                function = tags[k]['function']
                                parameter = tags[k]['parameter']
                                if k == 'currentPage':
                                    value = pageNumber
                                elif k == 'totalPage':
                                    value = self.pagesNumber
                                elif k in self.timeTags:
                                    value = Sla2pdfUtils.getNowValue(k)
                                else:
                                    indexN = k.find('(n)')
                                    if '(n)' in k:
                                        indexNP = k.find('(n).')
                                        if '(n).' in k:
                                            arrayName = k[:indexNP]
                                            tagName = k[indexNP+4:]
                                            if self.cycle <= (len(self.objects) - 1):
                                                if arrayIndex <= (len(self.objects[self.cycle][arrayName]) - 1):
                                                    arraySource = self.objects[self.cycle][arrayName][arrayIndex]

                                                    if SHOWZERORIGA == True:
                                                        value = arraySource[tagName]
                                                    else:
                                                        value = arraySource[tagName] or ""
                                                else:
                                                    value = ''
                                            else:
                                                value = ''
                                        else:
                                            tagName = k[:indexN]
                                            if arrayIndex <= (len(self.objects) - 1):
                                                arraySource = self.objects[arrayIndex]
                                                if SHOWZEROTOTALI:
                                                    value = str(arraySource[tagName])
                                                else:
                                                    value = arraySource[tagName] or ''
                                            else:
                                                value = ''
                                    else:
                                        if self.cycle <= (len(self.objects) - 1):
                                            value = self.objects[self.cycle][k] or ''
                                        else:
                                            value = ''
                                # Function
#                                print "FUCTION", function, value, parameter
                                if function in self.formatFunctions:
                                    resolvedTag = uu(self.callFunction(function, value, parameter))
                                else:
                                    resolvedTag = uu(value)
                                ch = ch.replace(tags[k]['completeTag'], resolvedTag)
                                try:
                                    if value.count('€') >1:
                                        value = value.replace('€', '', 1)
                                except:
                                    pass
                                itext.set('CH', ch)
            iterator += 1