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