Changeset 4305


Ignore:
Timestamp:
Apr 19, 2017, 1:20:49 PM (2 years ago)
Author:
Juanma
Message:

Added responsability table

Location:
lliurex-abies2pmb/trunk/fuentes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lliurex-abies2pmb/trunk/fuentes/debian/changelog

    r4289 r4305  
     1lliurex-abies2pmb (1.1.3) xenial; urgency=medium
     2
     3  * Added responsability table
     4
     5 -- Juanma Navarro Mañez <juanma1980@gmail.com>  Wed, 19 Apr 2017 13:20:15 +0200
     6
    17lliurex-abies2pmb (1.1.2) xenial; urgency=medium
    28
  • lliurex-abies2pmb/trunk/fuentes/lliurex-abies2pmb.install/usr/share/lliurex-abies2pmb/abies2pmb.py

    r4292 r4305  
    88class abies2Pmb():
    99        def __init__(self):
    10                 self.dbg=0
     10                self.dbg=1
    1111               
    1212                #Dict with relations between pmb and abies
     
    3131                self.formatPmbColumns['indexint']={1:'string'}
    3232                self.formatPmbColumns['indexint'].update({3:'string'})
     33                self.formatPmbColumns['responsability']={2:'string'}
    3334
    3435                #Dict with default values to column
     
    4748                self.defaultPmbValues['docs_statut']={6:'1'}
    4849                self.defaultPmbValues['docs_statut'].update({7:'1'})
    49                 self.defaultPmbValues['responsability']={2:'"070"'}
    50 
    5150
    5251                #Blacklist pmb_abies tables.
     
    6968                self.pmb_tables["docs_type"]=[0,1,'','','','','','']
    7069                self.pmb_tables["docs_statut"]=[0,1,'','','','','','','']
    71                 self.pmb_tables["responsability"]=[1,0,'','','']
    72                 #dict with needed virtual tables
     70                self.pmb_tables["responsability"]=[1,0,2,3,'']
     71
     72#dict with needed virtual tables
    7373                #Only load one column using a 'get', any other column must be charged with formatTables or formatFields
    7474                self.virtual_tables={}
     
    9595                self.formatFields['Ejemplares']={'index 13':'concat 13,14,15'}
    9696                self.formatFields['Ejemplares'].update({'index 9':'date %m/%d/%y %H:%M:%S %Y-%m-%d %H:%M:%S'})
    97 #               self.formatFields['Ejemplares'].update({'index 2':'from Fondos_all.3 on 2=3'})
    9897                self.formatFields['Ejemplares'].update({'index 2':'from Fondos_all.5 on 2=3'})
    9998                #Replace index 3 with the needed data... Recipes from the other side...
     
    112111                self.formatFields['TiposFondo']={'index 0':'value 1=1,value 2=12,else=+100'}
    113112                self.formatFields['TiposEjemplar']={'index 0':'add index 0 100'}
    114 
    115                 #Dict whith special columns
     113                self.formatFields['Fondos_Autores']={'index 2':'indexValue.3 1="205",indexValue.3 0="070"'}
     114
     115                #Dict whith columns that must be transformed on loadTable
    116116                self.formatTables={}
    117117                self.formatTables['CDUs']={'index 1':'uniq'}
    118118                self.formatTables['Series']={'index 1':'uniq'}
    119119                self.formatTables['Fondos_all']={'index 1':'from Fondos_CDUs.1 on 0=0'}
     120                self.formatTables['Fondos_Autores']={'index 3':'value 1=0,value 0=1'}
    120121
    121122
     
    124125                #self.error['status']=True
    125126
    126                 #Array with process order (including virtual tables)
    127 #               self.executionOrder=['Ubicaciones','TiposLector','Autores','Editoriales','Cursos','Ejemplares','Series','CDUs','Fondos_all','Fondos','Fondos_Idiomas','TiposFondo']
     127                #Array with process order (including virtual and blacklisted tables)
    128128                self.executionOrder=['Ubicaciones','TiposLector','Autores','Editoriales','Cursos','Series','CDUs','TiposEjemplar','Fondos_all','Ejemplares','Fondos','Fondos_Idiomas','TiposFondo','Fondos_Autores']
    129129                #Tmp variables
     
    192192                                self._debug("Concatenating sql files in an unique file")
    193193                                self._concatFiles()
     194                                self._debug("Files generated for tables "+str(self.executionOrder))
    194195                        else:
    195196                                self._debug("Errors ocurred")
    196197                                self._debug(self.error)
    197                         self._debug("Files generated for tables "+str(self.executionOrder))
    198198                else:
    199199                        self._error(11)
     
    242242                                f=open (sqlFile,'w')
    243243                        for line in origData:
    244                                 pmbColumn=0
    245                                 strInsertValues=''
    246                                 for index in self.pmb_tables[destTable]:
    247                                         if index!='':
    248                                                 if transformDict:
    249                                                         if index in transformDict.keys():
    250                                                                 strTransform=transformDict[index]
    251 #                                                               self._debug("Transforming value "+str(line[index])+" index "+str(index)+" with "+strTransform)
    252                                                                 line[index]=eval(strTransform)
    253                                                 tmp=str(line[index]).strip("\n")
    254                                                 #Clean tmp field
    255                                                 tmp=tmp.replace('"',' ')
    256                                                 chkFormat=True
    257                                                 if (destTable in self.formatPmbColumns):
    258                                                         if index in self.formatPmbColumns[destTable]:
    259                                                                 chkFormat=False
    260                                                                 if self.formatPmbColumns[destTable][index]=='string':
    261                                                                         tmp=str(tmp)
    262                                                                         tmp=tmp.lstrip(' ')
    263                                                                         tmp=tmp.rstrip(' ')
    264                                                                         tmp='"'+tmp+'"'
    265                                                                 elif self.formatPmbColumns[destTable][index]=='int':
    266                                                                         tmp=int(tmp)
    267 
    268                                                 if chkFormat:
    269                                                         try:
    270                                                                 int(tmp)
    271                                                         except:
    272                                                                 tmp=tmp.lstrip(' ')
    273                                                                 tmp=tmp.rstrip(' ')
    274                                                                 tmp='"'+tmp+'"'
    275                                                                 pass
    276                                         else:
    277                                                 if (destTable in self.defaultPmbValues):
    278                                                         if pmbColumn in self.defaultPmbValues[destTable]:
    279                                                                 tmp=self.defaultPmbValues[destTable][pmbColumn]
    280                                                         else:
    281                                                                 tmp='""'       
    282                                                 else:
    283                                                         tmp='""'
    284                                                
    285                                         strInsertValues=strInsertValues+tmp+','
    286                                         pmbColumn=pmbColumn+1
    287                                 strInsertValues=strInsertValues[:-1]
     244                                strInsertValues=self._processRow(destTable,line,transformDict)
    288245                                if destTable not in self.blacklist:
    289246                                        f.write("Insert into "+destTable+" values ("+strInsertValues+");\n")
     
    295252
    296253        #def _generateSql
     254
     255        ###
     256        #Process the rows from a given table and makes the desired changes on it
     257        #Input: pmb tableName
     258        #Input: orig row
     259        #Input: dict with the desired transformations
     260        #Output: transformed row
     261        ###
     262        def _processRow(self,destTable,line,transformDict):
     263                pmbColumn=0
     264                strInsertValues=''
     265                for index in self.pmb_tables[destTable]:
     266                        if index!='':
     267                                if transformDict:
     268                                        if index in transformDict.keys():
     269                                                strTransform=transformDict[index]
     270                                                self._debug("Transforming value "+str(line[index])+" index "+str(index)+" with "+strTransform)
     271                                                line[index]=eval(strTransform)
     272                                tmp=str(line[index]).strip("\n")
     273                                #Clean tmp field
     274                                tmp=tmp.replace('"',' ')
     275                                chkFormat=True
     276                                if (destTable in self.formatPmbColumns):
     277                                        if index in self.formatPmbColumns[destTable]:
     278                                                chkFormat=False
     279                                                if self.formatPmbColumns[destTable][index]=='string':
     280                                                        tmp=str(tmp)
     281                                                        tmp=tmp.lstrip(' ')
     282                                                        tmp=tmp.rstrip(' ')
     283                                                        tmp='"'+tmp+'"'
     284                                                elif self.formatPmbColumns[destTable][index]=='int':
     285                                                        tmp=int(tmp)
     286
     287                                if chkFormat:
     288                                        try:
     289                                                int(tmp)
     290                                        except:
     291                                                tmp=tmp.lstrip(' ')
     292                                                tmp=tmp.rstrip(' ')
     293                                                tmp='"'+tmp+'"'
     294                                                pass
     295                        else:
     296                                if (destTable in self.defaultPmbValues):
     297                                        if pmbColumn in self.defaultPmbValues[destTable]:
     298                                                tmp=self.defaultPmbValues[destTable][pmbColumn]
     299                                        else:
     300                                                tmp='""'       
     301                                else:
     302                                        tmp='""'
     303                               
     304                        strInsertValues=strInsertValues+tmp+','
     305                        pmbColumn=pmbColumn+1
     306                strInsertValues=strInsertValues[:-1]
     307                return(strInsertValues)
    297308
    298309        ###
     
    336347                                f.close()
    337348                                for line in lines:
     349                                        line=line.strip('\n')
    338350                                        array=line.split('|||')
    339351                                        data.append(array)
     
    426438                                elif line.startswith('value'):
    427439                                        transformDict[index]=self._transformValue(line,index)
     440                                elif line.startswith('indexValue'):
     441                                        transformDict[index]=self._transformIndexValue(line,index)
    428442                                elif line.startswith('concat'):
    429443                                        transformDict[index]=self._transformConcat(line,index)
     
    474488                return(returnValue)
    475489
     490        def _transformIndexValue(self,line,index):
     491                values=line.split(',')
     492                tmpStr=''
     493                elseValue=None
     494                for value in values:
     495                        relation=value.split('=')
     496                        destValue=relation[-1]
     497                        if not relation[0].startswith('else'):
     498                                sourceValue=relation[0].split(' ')[-1]
     499                                sourceIndex=relation[0].split(' ')[0].split('.')[-1]
     500                                tmpStr=tmpStr+str(destValue)+' if str(line['+str(sourceIndex)+'])=="'+str(sourceValue)+'" else '
     501                        else:
     502                                elseValue='str(int(line['+str(index)+']) '+str(destValue)+')'
     503                if not elseValue:
     504                        elseValue=destValue
     505                        try:
     506                                int(destValue)
     507                                returnValue='('+tmpStr+ '"'+str(elseValue)+'")'
     508                        except:
     509                                returnValue='('+tmpStr+ ''+str(elseValue)+')'
     510                else:
     511                        returnValue='('+tmpStr +str(elseValue)+')'
     512                return(returnValue)
     513
    476514        def _transformConcat(self,line,index):
    477515                concat=line.split(' ')[-1]
     
    581619                                if line.startswith('from'):
    582620                                        transformDict=self._transformTableJoin(tableName,index,line)
     621                                elif line.startswith('value'):
     622                                        transformDict=self._transformTableValue(tableName,index,line)
    583623                return transformDict
    584624        #def _checkTransformTamble
     
    625665                        transformDict.append(row)
    626666                return transformDict
     667
     668        def _transformTableValue(self,tableName,index,line):
     669                self._debug("Convert "+line+" on index "+str(index))
     670                transformDict=[]
     671                values=line.split(',')
     672                tmpStr=''
     673                elseValue=None
     674                for value in values:
     675                        relation=value.split('=')
     676                        destValue=relation[-1]
     677                        if not relation[0].startswith('else'):
     678                                sourceValue=relation[0].split(' ')[-1]
     679                                tmpStr=tmpStr+str(destValue)+' if row['+str(index)+']==\''+str(sourceValue)+'\' else '
     680                        else:
     681                                elseValue='str(int(row['+str(index)+']) '+str(destValue)+')'
     682                if not elseValue:
     683                        elseValue=destValue
     684                        try:
     685                                int(destValue)
     686                                convertValue='('+tmpStr+ '"'+str(elseValue)+'")'
     687                        except:
     688                                convertValue='('+tmpStr+ ''+str(elseValue)+')'
     689                else:
     690                        convertValue='('+tmpStr +str(elseValue)+')'
     691                for row in self.tableValuesDict[tableName]:
     692                        row[index]=eval(convertValue)
     693                        transformDict.append(row)
     694
     695                return(transformDict)
    627696        #Table transformation function helpers
    628697
Note: See TracChangeset for help on using the changeset viewer.