Untitled
unknown
python
3 years ago
12 kB
4
Indexable
# -*- coding: utf-8 -*- import os import sys import csv from rh.models import * from rh.gfp.models import * from datetime import datetime, date,timedelta from django.db.models import Q import csv, StringIO import calendar class UnicodeWriter(object): """ Like UnicodeDictWriter, but takes lists rather than dictionaries. Usage example: fp = open('my-file.csv', 'wb') writer = UnicodeWriter(fp) writer.writerows([ [u'Bob', 22, 7], [u'Sue', 28, 6], [u'Ben', 31, 8], # \xc3\x80 is LATIN CAPITAL LETTER A WITH MACRON ['\xc4\x80dam'.decode('utf8'), 11, 4], ]) fp.close() """ def __init__(self, f, dialect=csv.excel_tab, encoding="utf-16", **kwds): # Redirect output to a queue self.queue = StringIO.StringIO() self.writer = csv.writer(self.queue, dialect=dialect,delimiter=';',quotechar='|', quoting=csv.QUOTE_MINIMAL, **kwds) self.stream = f self.encoding = encoding def writerow(self, row): # Modified from original: now using unicode(s) to deal with e.g. ints self.writer.writerow([unicode(s).encode("utf-8") for s in row]) # Fetch UTF-8 output from the queue ... data = self.queue.getvalue() data = data.decode("utf-8") # ... and reencode it into the target encoding data = data.encode(self.encoding) # write to the target stream self.stream.write(data) # empty queue self.queue.truncate(0) def writerows(self, rows): for row in rows: self.writerow(row) class Gerador(object): colunas = [] registros = [] print_colunas= True NOMEARQUIVO = 'NOME_PADRAO' PASTA_ARQUIVO = '/pasta_padrao/' CAMINHO_PASTA = NOME_PASTA = settings.UPLOAD_STORE_DIR def __init__(self,**kwds): self.colunas = [] self.registros = [] self.print_colunas= True self.NOMEARQUIVO = 'NOME_PADRAO' self.NOME_PASTA = '/pasta_padrao/' def query(self): return None def set_colunas(self,colunas): self.colunas = colunas def get_file_name(self): return self.NOMEARQUIVO def set_registros(self,registros): self.registros = registros def get_registros(): return self.registros def gerar_arquivo(self): print self.CAMINHO_PASTA + self.NOME_PASTA if not os.path.exists(self.CAMINHO_PASTA + self.NOME_PASTA): os.makedirs(self.CAMINHO_PASTA + self.NOME_PASTA) with open(self.CAMINHO_PASTA + self.NOME_PASTA+self.get_file_name(), 'wb') as csvfile: print self.CAMINHO_PASTA + self.NOME_PASTA+self.get_file_name() writer = UnicodeWriter(csvfile) filewriter = csv.writer(csvfile, delimiter=';',quotechar='|', quoting=csv.QUOTE_MINIMAL) if self.print_colunas: writer.writerow(self.colunas) for registro in self.get_registros(): print registro writer.writerow(registro) def start(self): self.gerar_arquivo() class LotacaoAp(Gerador): def __init__(self,**kwds): self.colunas = [] self.registros = [] self.print_colunas= True self.NOMEARQUIVO = 'LOTACAO.csv' self.NOME_PASTA = '/pasta_padrao/' self.colunas = ['ID','DESCRICAO'] def get_registros(self): registro = [ '1', 'MPPI' ] registos = [] registos.append(registro) self.registros = registos return self.registros class CargoAp(Gerador): def __init__(self,**kwds): self.colunas = [] self.registros = [] self.print_colunas= True self.NOMEARQUIVO = 'CARGO.csv' self.NOME_PASTA = '/pasta_padrao/' self.colunas = ['ID','DESCRICAO'] def get_registros(self): registros = [] registros.append(['99999','SERVIDOR APOSENTADO']) registros.append(['999999','PROMOTOR DE JUSTIÇA APOSENTADO']) registros.append(['9999999','PROCURADOR DE JUSTIÇA APOSENTADO']) self.registros = registros return self.registros class DadosFuncionaisAP(Gerador): def __init__(self,**kwds): self.month = 2 self.year = 2022 self.colunas = [] self.registros = [] self.print_colunas= True self.NOMEARQUIVO = 'DADOS_FUNCIONAIS.csv' self.NOME_PASTA = '/pasta_padrao/' self.colunas = ['CPF','Dependente_Imp_Renda','Dependente_Sal_Renda','Data_admissao','Cargo_id','Lotacao_id','Orgao_id','Orgao_lotacao','Status_id','Plano','Plano_Grupo','Plano_Cargo','Plano_Classe','Cargo'] def get_aposentados(self): query = Servidor.objects.filter( entries__folha__periodo__ano=self.year, entries__folha__periodo__mes=self.month, entries__folha__tipo_folha__titulo='APOSENTADOS', ).exclude(matricula=17061).order_by('pessoa_fisica__nome').distinct() return query def get_cpf(self,servidor): if servidor.pessoa_fisica.cpf: return servidor.pessoa_fisica.cpf else: return u'' def get_dependente_Imp_Renda(self,servidor): return u'0' def Dependente_Sal_Renda(self,servidor): return u'0' def get_matriculas_aposentados(self): matriculas = [ 17060,17031,17083,16047,17116,17103,17087,17094,17058,17045, 17102,17067,17123,17124,17105,17118,17046,17080,17099,17095, 17044,16034,16013,17059,16019,17076,17086,15933,17089,17122, 16186,17054,17071,16081,17075,15953,17074,17085,17117,17013, 16035,17120,17106,17056,17110,17018,16080,17070,17069,17125, 16067,17082,17109,16407,16082,17068,17077,17101,17104,17100, 17064,17073,17072,16339,17048,17004,17026,17078,17121,17108, 17040,17141,17065,17139,17127,17144,17143,17142,17129,17111, 17134,17138,17135,17132,17133,17137,17145,17112,17131,17088, 17092,17128,17126,17136,17140,17130,17091] return matriculas def get_data_aposentadoria(self,servidor): data_aposentadoria = [u'23/01/1998',u'13/07/1989',u'13/03/2007',u'14/12/2021',u'28/09/2016',u'19/08/2011',u'06/11/2007',u'10/11/2009',u'15/02/1996',u'13/07/1992',u'29/07/2011',u'11/08/2000',u'20/12/2017',u'20/12/2017',u'28/06/2012',u'20/12/2017',u'10/08/1992',u'23/02/2006',u'31/03/2010',u'19/02/2015',u'08/07/1992',u'20/12/2021',u'14/12/2021',u'28/06/1996',u'08/12/2020',u'06/10/2003',u'17/07/2007',u'03/09/2014',u'22/09/2008',u'20/12/2017',u'01/12/2021',u'17/03/1995',u'02/07/2003',u'10/12/2021',u'15/12/2003',u'02/12/2021',u'11/12/2003',u'21/08/2007',u'05/10/2017',u'17/10/1985',u'17/11/2021',u'20/12/2017',u'20/08/2012',u'19/07/1995',u'09/08/2013',u'20/02/1984',u'18/11/2021',u'09/12/2002',u'14/01/2002',u'02/07/2019',u'07/12/2021',u'21/06/2006',u'19/04/2013',u'29/10/2021',u'10/01/2022',u'31/05/2001',u'26/08/2004',u'04/04/2011',u'11/06/2008',u'10/08/2010',u'18/06/1998',u'11/11/2003',u'31/10/2003',u'05/04/2021',u'09/12/1992',u'25/04/1989',u'22/02/1990',u'26/04/2005',u'20/12/2017',u'06/05/2003',u'13/08/1995',u'14/12/2021',u'28/08/1998',u'13/12/2021',u'13/11/2019',u'20/12/2021',u'14/12/2021',u'14/12/2021',u'07/12/2020',u'03/09/2014',u'01/12/2021',u'10/12/2021',u'01/12/2021',u'17/11/2021',u'18/11/2021',u'07/12/2021',u'10/01/2022',u'10/10/2014',u'29/10/2021',u'29/01/2008',u'26/04/2011',u'25/11/2019',u'13/11/2019',u'07/12/2021',u'13/12/2021',u'29/03/2021',u'20/03/2009'] index_aposentadoria = self.get_matriculas_aposentados().index(servidor.matricula) return data_aposentadoria[index_aposentadoria] def get_tipo_cargo_aposentado(self,servidor): tipo_aposentadoria = ['PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTORA DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','SERVIDOR APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROCURADOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','SERVIDOR APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','SERVIDOR APOSENTADO','PROMOTOR DE JUSTIÇA APOSENTADO','SERVIDOR APOSENTADO'] index_aposentadoria = self.get_matriculas_aposentados().index(servidor.matricula) return tipo_aposentadoria[index_aposentadoria] def get_admissao(self,servidor): return u'' def get_id_cargo(self,servidor): id_cargo = u'0' if servidor.tipo =='S': id_cargo = '99999' elif get_tipo_cargo_aposentado(servidor) == 'PROCURADOR DE JUSTIÇA APOSENTADO': id_cargo = '9999999' else: id_cargo = '999999' return id_cargo def get_lotacao_id(self,servidor): def get_registros(self): query = self.get_aposentados() registros = [] for s in query: registo = [ self.get_cpf(s), self.get_dependente_Imp_Renda(s), self.Dependente_Sal_Renda(s), self.get_admissao(s), self.get_id_cargo(servidor), ] registros.append(registo) self.registros = registros return self.registros
Editor is loading...