예제 #1
0
 def handle(self, *args, **options):
     if len(args)<1:
         raise CommandError('Informe o nome do arquivo a importar.')
     
     nome_arq = args[0]
     if len(args) == 2:
         encoding = args[1]
     else:
         encoding = 'utf-8'
     with io.open(nome_arq, 'rt', encoding=encoding) as arq_ent:
         qt_registros = 0
         try: # evita aparecer um erro muito grande no terminal
             #linhas = arq_ent.readlines()
             for linha in arq_ent:
                 linha = linha.rstrip()
                 if not linha: # tratamento para linhas vazias
                     continue
                 partes = linha.split('\t')
                 id_padrao = None
                 autores = ''
                 if len(partes) >= 3: # para o caso de nao ter os campos completos
                     id_padrao,num_paginas,titulo = partes[:3]
                 if len(partes) == 4:
                     autores = partes[3]                    
                 if id_padrao is None:
                     raise CommandError(repr(partes))
                 num_paginas = int(num_paginas)
                 pub = Publicacao(id_padrao=id_padrao, 
                                     num_paginas=num_paginas,
                                     titulo = titulo)
                 pub.save()
                 for autor in autores.split('/'):
                     autor = autor.strip()
                     if not autor:
                         continue
                     cred = Credito(nome=autor, publicacao=pub)
                     cred.save()
                     self.stdout.write('.') # mostra um ponto para cada import. serve como progresso
                 qt_registros += 1
                 
         except UnicodeDecodeError as exc:
             #import pdb; pdb.set_trace() # quando acontece o erro, joga no prompt do python para depuracao, pdb (python debugger)
             msg = u'Encoding incorreto: "{0.reason}" posicao:{0.start}'
             raise CommandError(msg.format(exc))
     
     self.stdout.write('Importando: %s registros\n' % qt_registros)
예제 #2
0
    def handle(self, *args, **options):
        if len(args) < 1:
            raise CommandError('Informe o nome do arquivo a importar.')
        nome_arq = args[0]
        if len(args) == 2:
            encoding = args[1]
        else:
            encoding = 'utf-8'
        #with io.open(nome_arq, 'rt', encoding='cp1252') as arq_ent:
        with io.open(nome_arq, 'rt', encoding=encoding) as arq_ent:
            qt_registros = 0
            try:
                #linhas = arq_ent.readlines()
                for linha in arq_ent:
                    linha = linha.rstrip()
                    if not linha:
                        continue
                    partes = linha.split('\t')
                    id_padrao = None
                    autores = ''
                    if len(partes) >= 3:
                        id_padrao, num_paginas , titulo = partes[:3]
                    if len(partes) == 4:                        
                        autores = partes[3]
                    if id_padrao is None:
                        raise CommandError(repr(partes))
                    num_paginas = int(num_paginas)
                    pub = Publicacao(id_padrao=id_padrao,
                                    titulo=titulo,
                                    num_paginas=num_paginas)
                    pub.save()
                    #self.stdout.write('.')
                    for autor in autores.split('/'):
                        autor = autor.strip()
                        if not autor:
                            continue
                        cred = Credito(nome=autor, publicacao=pub)
                        cred.save()                            
                    qt_registros += 1 

            except UnicodeDecodeError as exc:
                msg = u'Encoding incorreto: "{0.reason}" posicao: {0.start}'
                #import pdb; pdb.set_trace()  <<< permite entrar no debug do python
                raise CommandError(msg.format(exc))
        self.stdout.write('Importando > %s registros\n' % qt_registros)
예제 #3
0
    def handle(self, *args, **options):
        if len(args) < 1:
            raise CommandError('Please enter with the file name to import')
        file_name = args[0]
        if len(args) == 2:
            encoding = args[1]
        else:
            encoding = 'utf-8'
        with io.open(file_name,'r', encoding=encoding) as enter_file:
            qty_registers = 0
            try:
                for line in enter_file:
                    line = line.rstrip()

                    if not line:
                        continue
                    parts = line.split('\t')
                    id_padrao = None
                    autores = ''
                    if len(parts) >= 3:
                        id_padrao, num_paginas, titulo = parts[:3]
                    if len(parts) == 4:
                        autores = parts[3]
                    if id_padrao is None:
                        raise CommandError(repr(parts))
                    num_paginas = int(num_paginas)
                    pub = Publicacao(id_padrao = id_padrao, 
                                    titulo = titulo,
                                    num_paginas = num_paginas)
                    pub.save()
                    
                    for autor in autores.split('/'):
                        autor = autor.strip()
                        if not autor:
                            continue
                        cre = Credito(nome = autor, publicacao = pub)
                        cre.save()
                    qty_registers += 1
                    
            except UnicodeDecodeError as exc:
                msg = 'Incorrect encoding: "{0.reason}" position:{0.start}'
                raise CommandError(msg.format(exc))
        self.stdout.write('Importing %s registers\n' % qty_registers)