def removerProjeto(self, ID_PROJETO): """ Dada uma entrada na tabela PROJETOS, a função busca e remove essa entrada após buscar e remover o DOCUMENTO relacionado, os partifipantes deste projeto, seu orgão e classificação :param ID_PROJETO: Identificador único de uma entrada na tabela PROJETOS """ projeto = self.getProjeto(ID_PROJETO) SIEParticipantesProjs().removerParticipantesFromProjeto( projeto['ID_PROJETO']) SIEOrgaosProjetos().removerOrgaosProjetosDeProjeto( projeto['ID_PROJETO']) SIEClassifProjetos().removerClassifProjetosDeProjeto( projeto['ID_PROJETO']) if projeto["ID_DOCUMENTO"]: # Se existe documento relacionado a este documento. documento = SIEDocumentoDAO().obter_documento( projeto['ID_DOCUMENTO']) SIEDocumentoDAO().remover_documento(documento) else: #print "Nenhum documento relacionado ao projeto %d" % ID_PROJETO # TODO Colocar logging? pass self.api.delete(self.path, {"ID_PROJETO": ID_PROJETO})
def registrar_projeto(self, id_projeto): """ Cria o documento e tramita para DPQ. Muda status do projeto tb. :param id_projeto: :return: :rtype: bool """ #verificar se tem classificações classificacoes_projeto = SIEClassifProjetos().get_classificacoes_cnpq(id_projeto) grupos_projeto = SIEClassifProjetos().get_grupos_cnpq(id_projeto) camara_pesquisa = SIEClassifProjetos().get_camara_pesquisa(id_projeto) if not camara_pesquisa or not classificacoes_projeto or not grupos_projeto: raise SIEException("Projeto não cadastrado. Favor informar as classificações na aba anterior.") documento_projeto = self.documento_inicial_padrao() documentoDAO = SIEDocumentoDAO() documento = documentoDAO.criar_documento(documento_projeto) # PASSO 1 # marcando a maneira de lidar com o fluxo caso o destino esteja em uma query (IND_QUERY='S') # resolvedor_destino = lambda fluxo: self.resolve_destino_tramitacao(fluxo, id_projeto) # Era usado anteriormente. Deixando aqui pois pode server para depois. # faz a primeira tramitação fluxo = documentoDAO.obter_fluxo_inicial(documento) documentoDAO.tramitar_documento(documento, fluxo) projeto = { "ID_PROJETO": id_projeto, "ID_DOCUMENTO": documento['ID_DOCUMENTO'], "NUM_PROCESSO": documento['NUM_PROCESSO'] } return self.atualizar_projeto(projeto)
def is_avaliacao_com_professor(self,avaliacao): """ Método retorna se a avaliação passada como parâmetro está com o professor ( e o mesmo pode reenviar relatório) ou não. :param avaliacao: avaliação contendo ID_DOCUMENTO obrigatoriamente. :type avaliacao: dict """ id_documento_avaliacao = avaliacao["ID_DOCUMENTO"] documento_avaliacao = SIEDocumentoDAO().obter_documento(id_documento_avaliacao) return int(documento_avaliacao['SITUACAO_ATUAL']) == self.COD_SITUACAO_COM_COORDENADOR
def salvarProjeto(self, projeto, funcionario, edicao): """ EVENTO_TAB => Tipos de Eventos EVENTO_ITEM = 1 => Não se aplica TIPO_PUBLICO_TAB => Público alvo TIPO_PUBLICO_ITEM = 8 => 3o grau AVALIACAO_TAB => Avaliação dos projetos da Instituição AVALIACAO_ITEM = 2 => Pendente de avaliacao :type projeto: dict :param projeto: Um projeto a ser inserido no banco :type funcionario: dict :param funcionario: Dicionário de IDS de um funcionário :type edicao: gluon.storage.Storage :param edicao: Uma entrada da tabela `edicao` :return: Um dicionário contendo a entrada uma nova entrada da tabela PROJETOS """ novoDocumento = SIEDocumentoDAO().criar_documento(215, funcionario) projeto.update({ "ID_DOCUMENTO": novoDocumento["ID_DOCUMENTO"], "ID_UNIDADE": SIECursosDisciplinas().getIdUnidade(projeto['ID_CURSO']), "NUM_PROCESSO": novoDocumento["NUM_PROCESSO"], "EVENTO_TAB": 6028, "EVENTO_ITEM": 1, "TIPO_PUBLICO_TAB": 6002, "TIPO_PUBLICO_ITEM": 8, "ACESSO_PARTICIP": "S", "PAGA_BOLSA": "S", "DT_INICIAL": edicao.dt_inicial_projeto, "DT_REGISTRO": date.today(), "AVALIACAO_TAB": 6010, "AVALIACAO_ITEM": 2 }) novoProjeto = self.api.post(self.path, projeto) projeto.update({"ID_PROJETO": novoProjeto.insertId}) return projeto
def setUp(self): from sie.SIEDocumento import SIEDocumentoDAO self.dao = SIEDocumentoDAO()
def enviar_relatorio_docente(self, relatorio, params_projeto): documento_dao = SIEDocumentoDAO() avaliacao = SIEAvaliacaoProjsPesquisaDAO().get_avaliacao(params_projeto['ANO_REF_AVAL'],relatorio.id_projeto,params_projeto["PERIODO_REF_TAB"],params_projeto["PERIODO_REF_ITEM"]) if avaliacao: avaliacao_com_professor = SIEAvaliacaoProjsPesquisaDAO().is_avaliacao_com_professor(avaliacao) if not avaliacao_com_professor: raise SIEException("Já há avaliação cadastrada para este projeto neste período de avaliação. Caso queira enviar outra avaliação, entre em contato com a DPq.") else: #Salva relatorio arquivo_salvo = SIEArquivosProj().salvar_arquivo(nome_arquivo=relatorio.filename, arquivo=relatorio.arquivo, id_projeto=relatorio.id_projeto, tipo_arquivo=SIEArquivosProj.ITEM_TIPO_ARQUIVO_RELATORIO_DOCENTE) # atualizar ref tabela de arquivos com id da avaliacao SIEArquivosProj().atualizar_arquivo(arquivo_salvo["ID_ARQUIVO_PROJ"], {"ID_AVALIACAO_PROJ": avaliacao["ID_AVALIACAO_PROJ"]}) #obtem estado atual documento = documento_dao.obter_documento(avaliacao["ID_DOCUMENTO"]) tramitacao_atual = documento_dao.obter_tramitacao_atual(documento) #recebe documento se necessario if tramitacao_atual["SITUACAO_TRAMIT"]==SIEDocumentoDAO.TRAMITACAO_SITUACAO_ENTREGUE: documento_dao.receber_documento(documento) elif tramitacao_atual["SITUACAO_TRAMIT"]==SIEDocumentoDAO.TRAMITACAO_SITUACAO_AGUARDANDO: #Só tramitar pass else: #Shouldn't fall here. raise NotImplementedError # tramita para DPq de novo. fluxo = documento_dao.obter_fluxo_inicial(documento) #TODO É o fluxo inicial? Me parece ser! Senão seria o último. documento_dao.tramitar_documento(documento, fluxo) else: #Salva relatorio arquivo_salvo = SIEArquivosProj().salvar_arquivo(nome_arquivo=relatorio.filename, arquivo=relatorio.arquivo, id_projeto=relatorio.id_projeto, tipo_arquivo=SIEArquivosProj.ITEM_TIPO_ARQUIVO_RELATORIO_DOCENTE) #cria documento avaliacao documento_avaliacao = SIEAvaliacaoProjsPesquisaDAO().documento_inicial_padrao() projeto = self.get_projeto(relatorio.id_projeto) documento_avaliacao.update({ "RESUMO_ASSUNTO": "Projeto n"+u"\u00BA " + projeto['NUM_PROCESSO'].strip() # Parece ser. }) documento = documento_dao.criar_documento(documento_avaliacao) # PASSO 1 # cria avaliacao para o arquivo avaliacao = SIEAvaliacaoProjsPesquisaDAO().criar_avaliacao(projeto,documento,params_projeto,data_prorrogacao=relatorio.nova_data_conclusao,obs=relatorio.obs) # atualizar ref tabela de arquivos com id da avaliacao SIEArquivosProj().atualizar_arquivo(arquivo_salvo["ID_ARQUIVO_PROJ"], {"ID_AVALIACAO_PROJ": avaliacao["ID_AVALIACAO_PROJ"]}) # tramita para a câmara fluxo = documento_dao.obter_fluxo_inicial(documento) documento_dao.tramitar_documento(documento, fluxo) #atualizar projeto com avaliacao_item pendente. self.atualizar_projeto({ "ID_PROJETO":relatorio.id_projeto, "AVALIACAO_ITEM": SIEProjetosPesquisa.ITEM_AVALIACAO_PROJETOS_INSTITUICAO_PENDENTE_AVALIACAO })