Пример #1
0
    def _getEstabelecimento(self, id_conteudo):
        """
       Retorna os dados de um estabelecimento
        """
        
        for estabelecimento in self.execSql("select_conteudo",
                                            id_conteudo=int(id_conteudo)):
            soup = BeautifulSoup(estabelecimento["descricao"],
                                 fromEncoding=settings.GLOBAL_ENCODING)
            for a in soup.findAll("a"):
                href = unquote(a.get("href", "")).strip()
                if href.find("#h2href:") >= 0:
                    dados = href.split("#h2href:", 1)[-1]
                    href = self._renderLink(dados=dados)

                    if href.find("javascript") >= 0:
                        href = href.replace("[target=blank]", "")
                    elif href.find("target=blank") >= 0:
                        href = href.replace("[target=blank]", "")
                        a["target"] = "blank"

                    a["href"] = href

            estabelecimento["descricao"] = unquote( unicode(soup) )
            return estabelecimento
Пример #2
0
    def _getEstabelecimentoPublicado(self, id_conteudo=None):
        """Retorna os dados de uma determinado estabelecimento
        """
        estabelecimento = None
        portal = Portal(id_site=self.id_site,
                        request=self.request)
        try:
            if not id_conteudo:
                for estabelecimento in self.execSql("select_estabelecimento_publicado",
                                                    limit=1,
                                                    offset=0):
                    estabelecimento["categorias"]=[]
                    for j in self.execSql("select_categoria_estabelecimento", 
                                          id_conteudo=int(estabelecimento["id_conteudo"])):
                        categoria = {"id_categoria":j["id_categoria"],
                                     "nome":j["nome"]}
                        estabelecimento["categorias"].append(categoria)    

            else:
                for estabelecimento in self.execSql("select_estabelecimento_publicado_unico",
                                       id_conteudo=int(id_conteudo)):
                    estabelecimento["categorias"]=[]
                    for j in self.execSql("select_categoria_estabelecimento", id_conteudo=int(estabelecimento["id_conteudo"])):
                        categoria = {"id_categoria":j["id_categoria"],
                                     "nome":j["nome"]}
                        estabelecimento["categorias"].append(categoria) 
                    
                    soup = BeautifulSoup(estabelecimento["descricao"],
                                 fromEncoding=settings.GLOBAL_ENCODING)
                    for a in soup.findAll("a"):
                        href = unquote(a.get("href", "")).strip()
                        if href.find("#h2href:") >= 0:
                            dados = href.split("#h2href:", 1)[-1]
                            href = self._renderLink(dados=dados)
                        if href.find("javascript") >= 0:
                            href = href.replace("[target=blank]", "")
                        elif href.find("target=blank") >= 0:
                            href = href.replace("[target=blank]", "")
                            a["target"] = "blank"

                        a["href"] = href
                    estabelecimento["descricao"] = unquote( unicode(soup) )


        except StopIteration:
            pass

        return {"estabelecimento":estabelecimento}
Пример #3
0
    def _getConteudoPublicado(self, id_conteudo=None, mkl=None):
        """
            returns the data from a news content

            @mkl: overwrites de default render method of links

            >>> self._getConteudoPublicado(id_filme=1)
            {'id_conteudo':, 'titulo':, 'cartola':, 'descricao':, 'editor':,
             'regulamento':, 'imagem_topo_list':, 'imagem_rodape':, 'cor':, 'cadastro_unico':,
             'publicado_em':, 'publicado':, 'atualizado_em':, "
             'id_destaque':, 'titulo_destaque':, 'descricao_destaque':,
             'imagem_destaque':, 'titulo_tree':, 'breadcrump':}
        """
        conteudo = None
        for conteudo in self.execSql("select_dados",
                                    id_conteudo=int(id_conteudo)):
            break

        if conteudo:
            soup = BeautifulSoup(conteudo["calendario"],
                                 fromEncoding=settings.GLOBAL_ENCODING)
            for a in soup.findAll("a"):
                href = unquote(a.get("href", "")).strip()
                if href.startswith("#h2href:"):
                    kingkong, dados = href.split("#h2href:", 1)
                    if mkl:
                        href, attrs = mkl(dados=decode(dados))
                        for i in attrs.keys():
                            a[i] = attrs[i]
                    else:
                        href = self._renderLink(dados=dados)

                    if href.find("javascript") >= 0:
                        href = href.replace("[target=blank]", "")
                    elif href.find("target=blank") >= 0:
                        href = href.replace("[target=blank]", "")
                        a["target"] = "blank"

                    a["href"] = href
            conteudo["calendario"] = unquote( unicode(soup) )
        return conteudo
Пример #4
0
    def _getNoticiaPublicada(self, id_noticia=None, mkl=None):
        """ Retorna os dados de uma noticia
        """
        noticia = None
        portal = Portal(id_site=self.id_site,
                        request=self.request)

        if not noticia:
            for noticia in self.execSql("select_noticia_publicada_ultima"):
                break

        for noticia in self.execSql("select_noticia_publicada",
                                    id_conteudo=int(id_noticia)):
            break

        if noticia:
            soup = BeautifulSoup(noticia["corpo"],
                                 fromEncoding=settings.GLOBAL_ENCODING)
            for a in soup.findAll("a"):
                href = unquote(a.get("href", "")).strip()
                if href.startswith("#h2href:"):
                    kingkong, dados = href.split("#h2href:", 1)
                    if mkl:
                        href, attrs = mkl(dados=decode(dados))
                        for i in attrs.keys():
                            a[i] = attrs[i]
                    else:
                        href = portal.mklink(dados=dados)

                    if href.find("javascript") >= 0:
                        href = href.replace("[target=blank]", "")
                    elif href.find("target=blank") >= 0:
                        href = href.replace("[target=blank]", "")
                        a["target"] = "blank"

                    a["href"] = href

            noticia["corpo"] = unquote( unicode(soup) )

        return noticia
Пример #5
0
    def _action(self, id_treeapp, schema, id_conteudo, link,
                      add=None, edit=None, delete=None, dados={}):
        """
        """
        if not link:
            return
        portal = Portal(id_site=self.id_site,
                        request=self.request)
        link = "/".join( link.split("/")[:-1] )
        
        src = portal._readFile(path="htmls/%s/index.xml" % link)
        if src:
            
            fd = open("%s%s,%s,%s.xml" % (self.dados["path"],
                                         schema,
                                         self.id_site,
                                         id_conteudo), "w")
            
            soup = BeautifulSoup(src,
                                 fromEncoding=settings.GLOBAL_ENCODING)

            for item in soup.findAll("rdf:description"):
                if add:
                    site = getDadosSite(id_site=self.id_site,
                            request=self.request)
                    base = site["base_html"]
                    tit = portal._getConteudoSite(env_site=self.id_site,
                                                  id_conteudo=id_conteudo, 
                                                  schema=schema)['url']
                    item.__setitem__("rdf:about", base+tit)
                ## push para alertar usuário de uma notícia importante
                ## Neste metodo sempre envia false
                tag = Tag(soup, "dc:push", [])
                tag['rdf:enviar'] = 'false'
                item.insert(0, tag)


                if add:
                    status = "added"
                elif edit:
                    status = "edited"
                elif delete:
                    status = "deleted"
                else:
                    status = "added"
                tag = Tag(soup, "dc:status", [])
                tag.insert(0, status)
                item.insert(0, tag)


                dadosite = getDadosSite(self.id_site)

                veiculo = dadosite["titulo"]
                tag = Tag(soup, "dc:veiculo", [])
                tag.insert(0, veiculo)
                item.insert(0, tag)

                base_img = dadosite["base_app"]
                tag = Tag(soup, "dc:base_img", [])
                tag.insert(0, base_img)
                item.insert(0, tag)

                src = unicode(soup)
                src = src.replace("<?xml version='1.0' encoding='utf-8'?>",
                                  "<?xml version='1.0' encoding='latin1'?>")

            fd.write(src.encode(settings.GLOBAL_ENCODING))
            fd.close()