Exemple #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)
                 #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
Exemple #2
0
    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')