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
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