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) #print "tagsssss", ch, tags if tags: tagsKeys = tags.keys()[0] or [] function = tags[tagsKeys]['function'] parameter = tags[tagsKeys]['parameter'] if function == "bcview": bc = str(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, str(value), int(parameter)) value = ch.replace(tags[tagsKeys]['completeTag'], resolvedTag) else: value = str(value) else: value = ch #print "valueeeeeeeeeeeeee", value itext.set('CH', str(value)) else: gr.append(group) index += 1
def fillDocument(self): """ Replacing tags with real values """ self.pageObjects = self.slaPageObjects() iterator = 0 while iterator < self.lenPageObjects(): pageObject = self.slaPageObjects()[iterator] isTableItem = pageObject.get('isTableItem') pageNumber = int(pageObject.get('OwnPage')) + 1 group = str(pageObject.get('GROUPS')).strip() 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 self.iteratableGroups: # Replacing non-iterator tags itexts = pageObject.findall('ITEXT') for itext in itexts: ch = str(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'] #print "function" , function parameter = tags[tagkey]['parameter'] #print "parameter", 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): value = self.objects[self.cycle][tagkey] or '' else: value = '' # Function if function in self.formatFunctions: resolvedTag = self.callFunction(function, value, parameter) else: resolvedTag = str(value) ch = ch.replace(tags[tagkey]['completeTag'], resolvedTag) # Save itext itext.set('CH', ch) else: if isTableItem != '1': iterator += 1 continue itexts = pageObject.findall('ITEXT') for itext in itexts: ch = str(itext.get('CH')) if (ch.find('<<') > -1) and (ch.find('>>') > -1): 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: tagsKeys = tags.keys() for k in tagsKeys: 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 (indexN != -1): indexNP = k.find('(n).') if (indexNP != -1): 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] value = arraySource[tagName] or '' else: value = '' else: value = '' else: tagName = k[:indexN] if arrayIndex <= (len(self.objects) - 1): arraySource = self.objects[arrayIndex] value = arraySource[tagName] or '' else: value = '' else: if self.cycle <= (len(self.objects) - 1): value = self.objects[self.cycle][k] or '' else: value = '' # Function if function in self.formatFunctions: resolvedTag = self.callFunction(function, value, parameter) else: resolvedTag = str(value) ch = ch.replace(tags[k]['completeTag'], resolvedTag) # Save itext itext.set('CH', ch) iterator += 1 #self.pageObjectPropertiesDict() if not self.label: self.findTablesProperties() self.doc.write('___temp.sla')