Example #1
0
class Kendo:

    def __init__(self):
        self.util = Util()

    def get_combobox_from_listaempresa(self, lista_empresa):
        lista_items = []
        for empresa in lista_empresa:
            lista_items.append(ItemCombo('IdEmpresa', empresa.company_id, 'NomeEmpresa', empresa.company_name))
        return Combo(lista_items)

    def get_combobox_from_listaprojetos(self, lista_projetos):
        lista_items = []
        for projeto in lista_projetos:
            lista_items.append(ItemCombo('IdProjeto', projeto.projectid, 'NomeProjeto', projeto.projectid + " - " + projeto.projectname))
        return Combo(lista_items)

    def get_combobox_from_listatarefas(self, lista_tarefas):
        lista_items = []
        for tarefa in lista_tarefas:
            lista_items.append(ItemCombo('IdTarefa', tarefa.id_tarefa, 'NomeTarefa', tarefa.id_tarefa + " - " + tarefa.nome_tarefa))
        return Combo(lista_items)

    def get_json_kendoui(self, request, combobox):
        if combobox != None and len(combobox.list_items) > 0:
            list_items = []
            if '$filter' in request.GET:
                filter = request.GET['$filter']
                filterfunction = re.search(r"(\w*)", filter).group(1).encode("utf-8")
                stringfilter = re.search(r"'(.*)'", filter).group(1).encode("utf-8")
                combobox_filtrado = self.filtra_combo(request, filterfunction, combobox, stringfilter)
                if combobox_filtrado != None:
                    combobox = combobox_filtrado
            for item in combobox.list_items:
                dict = {}
                dict[item.label_value] = item.value
                dict[item.label_text] = item.text
                list_items.append(dict)
            data = simplejson.dumps({'d':{'results':list_items, '__count' : str(len(list_items))}})
        else:
            data = simplejson.dumps({'d':{'results':[], '__count' : '0'}})
        return HttpResponse(request.GET['$callback'] + '(' + data + ')',mimetype='text/javascript;charset=utf-8')

    def filtra_combo(self, request, funcao, combobox, stringfiltro):
        if funcao == 'substringof':
            lista_filtrada = []
            for item in combobox.list_items:
                if self.util.is_string_equals_ignorecase(item.text, stringfiltro):
                    lista_filtrada.append(item)
            return Combo(lista_filtrada)
Example #2
0
 def __init__(self):
     self.util = Util()
Example #3
0
class Pmo:

    def __init__(self):
        self.util = Util()

    def login(self, usuario_pmo=None, senha_pmo=None, request=None, type='complete'):
        if usuario_pmo == None:
            usuario_pmo = request.session['usuario_pmo']
            senha_pmo = request.session['senha_pmo']
        post_login = {'login':'******', 'username':usuario_pmo, 'password':senha_pmo, 'login.x':'13', 'login.y':'12'}
        r = requests.post('http://www.dscon.com.br/pmo/index.php', post_login)
        if type == 'complete':
            pagina = requests.get('http://dscon.com.br/pmo/index.php?m=projects&tab=1', cookies=r.cookies)
            if pagina.content.find('Usuário e/ou senha inválidos.') != -1:
                raise RuntimeError('Usuario ou Senha Invalidos')
            return LoginInfo(r.cookies, pagina)
        else:
            return r.cookies

    def extrairColaboradorFromPagina(self, pagina):
        pagina = self.util.retirar_acento(pagina.content)
        nome_colaborador = re.search(r'Bem-vindo (.*)</td>', pagina).group(1)
        nomes_bem_vindo = nome_colaborador.split(' ')
        colaboradores = re.findall(r"<OPTION VALUE='\d*'>[\w()\s,-\.]*", pagina)
        id_colaborador = ''
        for colaborador in colaboradores:
            colaborador = colaborador.replace(',','').strip()
            colaborador = re.sub(r'\(.*\)', '', colaborador)
            colaborador = colaborador.strip()
            nomes_colaborador = re.search(r'<OPTION VALUE=.\d*.>(.*)', colaborador).group(1)
            nomes_colaborador = nomes_colaborador.split(' ')
            intersecao = set(nomes_bem_vindo).intersection(set(nomes_colaborador))
            if len(intersecao) == len(nomes_bem_vindo) == len(nomes_colaborador):
                id_colaborador = re.search(r'<OPTION VALUE=.(\d*).>', colaborador).group(1)
        return Colaborador(id_colaborador, nome_colaborador)

    def extrairEmpresasFromPagina(self, pagina):
        lista_empresas = []
        empresas = re.findall(r'<option value=.company..*</option>', pagina)
        for i,empresa in enumerate(empresas):
            nome_empresa = re.search(r"bold...(.*)</option>", empresa).group(1)
            lista_empresas.append(Empresa(i, nome_empresa))
        return lista_empresas

    def extrairProjetosFromPagina(self, pagina):
        lista_projetos = []
        projetos = re.findall(r"<td width=.30%.>\n.*\n</td>.*\n.*\n.*", pagina)
        for projeto in projetos:
            nome_empresa = re.search(r"<td width..30..>\n\t(.*)\n</td>", projeto).group(1)
            id_projeto = re.search(r"project_id.(\d*)..onmou", projeto).group(1)
            nome_projeto = re.search(r"eout=.nd.....(.*)</a>", projeto).group(1)
            lista_projetos.append(Projeto(company_id=self.getEmpresa_id_from_nome(nome_empresa, self.lista_empresas), projectid=id_projeto, projectname=nome_projeto))
        return lista_projetos

    def extrairTarefasFromIdProjeto(self, request, idProjeto):
        lista_tarefas = []
        cookie = self.login(request=request, type='cookie')
        pagina = requests.get('http://dscon.com.br/pmo/index.php?m=projects&a=view&project_id=' + str(idProjeto), cookies=cookie).content
        acabou = False
        while acabou == False:
            tarefas = re.findall(r"&project_id=\d*&open_task_id=\d*\"><img", pagina)
            if len(tarefas) > 0:
                tarefa = tarefas.pop()
                id_projeto = re.search(r"&project_id=(\d*)&op", tarefa).group(1)
                open_task_id = re.search(r"&open_task_id=(\d*)\"><img", tarefa).group(1)
                pagina = requests.get('http://dscon.com.br/pmo/index.php?m=projects&a=view&project_id=' + id_projeto + '&open_task_id=' + open_task_id, cookies=cookie).content
            else:
                acabou = True
        tarefas = re.findall(r"\">&nbsp;<a href=../index.php.m=tasks&a=view&task_id=.*", pagina)
        for tarefa in tarefas:
            id_tarefa = re.search(r"task_id.(\d*).log", tarefa).group(1)
            nome_tarefa = re.search(r"#log\"  >([^<]*)", tarefa).group(1)
            lista_tarefas.append(Tarefa(id_tarefa, nome_tarefa))
        tarefas = re.findall(r"expand.gif\" border=\"0\" /></a>&nbsp;<a href=../index.php.m=tasks&a=view&task_id=.*", pagina)
        for tarefa in tarefas:
            id_tarefa = re.search(r"task_id.(\d*).log", tarefa).group(1)
            nome_tarefa = re.search(r"<b><i>(.*)</i></b>", tarefa).group(1)
            lista_tarefas.append(Tarefa(id_tarefa, nome_tarefa))
        return lista_tarefas

    def obter_projetos(self,request):
        cookie = self.login(request=request, type='cookie')
        post_projetos = {'department':'company_0'}
        r = requests.post('http://dscon.com.br/pmo/index.php?m=projects', post_projetos, cookies=cookie)
        pagina = r.content
        self.lista_empresas = self.extrairEmpresasFromPagina(pagina)
        self.lista_projetos = self.extrairProjetosFromPagina(pagina)

    def getEmpresa_id_from_nome(self, nome_empresa, lista_empresas):
        for empresa in lista_empresas:
            if self.util.is_string_equals_ignorecase(empresa.company_name, nome_empresa):
                return empresa.company_id
        return None
Example #4
0
class Kendo:
    def __init__(self):
        self.util = Util()

    def get_combobox_from_listaempresa(self, lista_empresa):
        lista_items = []
        for empresa in lista_empresa:
            lista_items.append(
                ItemCombo('IdEmpresa', empresa.company_id, 'NomeEmpresa',
                          empresa.company_name))
        return Combo(lista_items)

    def get_combobox_from_listaprojetos(self, lista_projetos):
        lista_items = []
        for projeto in lista_projetos:
            lista_items.append(
                ItemCombo('IdProjeto', projeto.projectid, 'NomeProjeto',
                          projeto.projectid + " - " + projeto.projectname))
        return Combo(lista_items)

    def get_combobox_from_listatarefas(self, lista_tarefas):
        lista_items = []
        for tarefa in lista_tarefas:
            lista_items.append(
                ItemCombo('IdTarefa', tarefa.id_tarefa, 'NomeTarefa',
                          tarefa.id_tarefa + " - " + tarefa.nome_tarefa))
        return Combo(lista_items)

    def get_json_kendoui(self, request, combobox):
        if combobox != None and len(combobox.list_items) > 0:
            list_items = []
            if '$filter' in request.GET:
                filter = request.GET['$filter']
                filterfunction = re.search(r"(\w*)",
                                           filter).group(1).encode("utf-8")
                stringfilter = re.search(r"'(.*)'",
                                         filter).group(1).encode("utf-8")
                combobox_filtrado = self.filtra_combo(request, filterfunction,
                                                      combobox, stringfilter)
                if combobox_filtrado != None:
                    combobox = combobox_filtrado
            for item in combobox.list_items:
                dict = {}
                dict[item.label_value] = item.value
                dict[item.label_text] = item.text
                list_items.append(dict)
            data = simplejson.dumps({
                'd': {
                    'results': list_items,
                    '__count': str(len(list_items))
                }
            })
        else:
            data = simplejson.dumps({'d': {'results': [], '__count': '0'}})
        return HttpResponse(request.GET['$callback'] + '(' + data + ')',
                            mimetype='text/javascript;charset=utf-8')

    def filtra_combo(self, request, funcao, combobox, stringfiltro):
        if funcao == 'substringof':
            lista_filtrada = []
            for item in combobox.list_items:
                if self.util.is_string_equals_ignorecase(
                        item.text, stringfiltro):
                    lista_filtrada.append(item)
            return Combo(lista_filtrada)