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