def _sendRemove(self, method_name, to_mail, host, port, corpo, assunto, from_mail=None, user_mail=None, user_cpf=None): """ Send mail to get to remove comment """ site = getDadosSite(id_site=self.id_site, request=self.request) url = "{0}{1}{2},{3}/{4}?email={5}&cpf={6}".format(site['url_adm'], "da_vrumopiniao/", self.schema, self.id_site, method_name, user_email, user_cpf) if not from_mail: from_mail = to_mail email = Email() email.enviarEmail(subject=assunto, to=who_mail.encode("latin1"), fro=from_mail, text=corpo.encode("latin1"), returnpath=from_mail, host=host, port=port, type="text/plain") return {"ok": "Email com link de remoção enviado"}
def action(): request = FakeRequest() request.request["bases"] = getDadosSite(ID_SITE, request=request) app = App(id_site=ID_SITE, schema=SCHEMA, request=request) out = app._autoSort(mk=MAGIC_KEY) closeConnections() print out
def _getUltimasNoticiasComentadas(self, hash, limit=20, offset=0, d1=None, d2=None, qw=None, exportar=1, render=None): """ """ if type(hash) is not list: hash = [hash] portal = Portal(id_site=self.id_site, request=self.request) site = getDadosSite(id_site=self.id_site, request=self.request) base = site["base_html"] items = portal._listarConteudoApp(id_site=self.id_site, hash=hash, comentario=1, acesso=None, acesso24h=None, voto=None, keywords=qw, de=d1, ate=d2, limit=limit, offset=offset, rendeer=render) itens = [] idcs = [] idcsd = {} items_ = [i for i in items["itens"] if idcs.append(str(i["id_conteudo"])) or 1] if idcs: for i in self.execSql("select_svgs", id_conteudos=buffer(",".join(idcs))): idcsd[i["id_conteudo"]] = i for i in items_: if idcsd.get(i["id_conteudo"]): i["audio"] = idcsd.get(i["id_conteudo"])["audio"] i["video"] = idcsd.get(i["id_conteudo"])["video"] i["galeria"] = idcsd.get(i["id_conteudo"])["galeria"] else: i["audio"] = None i["video"] = None i["galeria"] = None itens.append(i) return {"res":itens, "qtde":items["qtde"]}
def makeXLS(self, id_relatorio, id_promocao=None): """ cria o arquivo xls a var index é utilizada para controlar em qual linha entrara o conteudo """ timename = str(util.dtnow('%d/%m/%Y %H:%M%S')).replace("/", "") timename = timename.replace(":", "") timename = "_" + timename.replace(" ", "") site = getDadosSite(id_site=self.id_site, request=self.request) base = site["base_app"] if not base.endswith("/"): base = base + "/" if int(id_relatorio) == 1: titulo = 'Relacao_usuario_participacao' elif int(id_relatorio) == 2: titulo = 'Relacao_participantes_contemplados' elif int(id_relatorio) == 4: titulo = 'Dados_usuarios_por_promocao' else: titulo = 'Relacao_participantes_promocao' saveplace = ("{0}/ns{1}/arquivos/tmp/" "{2}{3}.xls").format(str(settings.PATH_FILES), str(self.id_site), titulo, timename) saveurl = "{0}tmp/{1}{2}.xls".format( base, titulo, timename) book = Workbook() font = Font() font.bold = True style = XFStyle() style.font = font style0 = XFStyle() style0.font = font alignment = Alignment() alignment.horz = Alignment.HORZ_CENTER style0.alignment = alignment pattern = Pattern() pattern.pattern = Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 22 style0.pattern = pattern index = 0 sheet = book.add_sheet('promocoes') # sheet if int(id_relatorio) == 1 or int(id_relatorio) == 3: promocoes = self._getConteudo() if int(id_relatorio) == 1: campos_s1 = [{"nome": "Nome"}, {"email": "email"}, {"cpf": "CPF"}, {"quantidade de participacoes": u"Quantidade de participações"}, {"status":"status"}, {"bloqueio":"bloqueado"}] sheet.write_merge(0, 0, 0, 5, u"Relação usuário participação por promoção", style0) else: campos_s1 = [{"nome":"Nome"}, {"email":"email"}, {"cpf":"CPF"}, {"telefone":"Telefone"}, {"endereco":u"Endereço"}, {"data_hora":u"Hora participação"}] sheet.write_merge(0, 0, 0, 5, u"Dados de usuários por promoção", style0) total_geral = 0 count = 0 for i in promocoes: count_participacoes = self._getCountParticipacoes(i['id_conteudo']) count += count_participacoes index += 1 titulo = i['titulo'] sheet.write_merge(index, index, 0, 5, titulo.decode("latin1"), style0) index += 1 for j in range(len(campos_s1)): sheet.write(index, j, campos_s1[j].values()[0], style) sheet.col(j).width = 30 * 256 cont = 0 if int(id_relatorio) == 1: for y in self.execSql("select_usuarios_promocoes_all", id_conteudo=int(i['id_conteudo'])): sheet.write(index + 1, 0, self.dec(y['nome'])) sheet.write(index + 1, 1, self.dec(y['email'])) sheet.write(index + 1, 2, self.dec(y['cpf'])) sheet.write(index + 1, 3, self.dec(y['total'])) sheet.write(index + 1, 4, self.dec(y['status'])) if y['bloqueio']: bloqueio = 'Sim' else: bloqueio = 'Não' sheet.write(index + 1, 5, self.dec(bloqueio)) index += 1 cont += 1 if int(id_relatorio) == 3: for y in self.execSql("select_usuarios_promocoes_all2", id_conteudo=int(i['id_conteudo'])): endereco = "{0}, {1}, {2}, {3}, {4}". format(y['endereco'], y['numero'], y['bairro'], y['estado'], y['cep']) sheet.write(index + 1, 0, self.dec(y['nome'])) sheet.write(index + 1, 1, self.dec(y['email'])) sheet.write(index + 1, 2, self.dec(y['cpf'])) sheet.write(index + 1, 3, self.dec(y['telefone'])) sheet.write(index + 1, 4, self.dec(endereco)) sheet.write(index + 1, 5, y['dhora_participacao']) index += 1 cont += 1 if cont: index += 2 sheet.write(index, 0, 'Total', style) sheet.write(index, 1, cont) total_geral += cont index += 1 sheet.write(index, 0, u'Total Participações', style) sheet.write(index, 1, count_participacoes) else: index += 2 sheet.write(index, 0, 'Total', style) sheet.write(index, 1, cont) index += 2 index += 6 sheet.write_merge(index, index, 0, 1, "Total Geral", style0) index += 1 sheet.write(index, 0, "Total de Participantes", style) sheet.write(index, 1, self.dec(total_geral), style) index += 1 sheet.write(index, 0, u"Total de Participações Geral", style) sheet.write(index, 1, self.dec(count), style) else: if int(id_relatorio) == 4: cont = 0 titulo_promo = self._getConteudo(id_promocao)['titulo'] sheet.write_merge(0, 0, 0, 5, u"Relação de partcipantes da promoção " + titulo_promo.decode('latin1'), style0) campos_s1 = [{"nome":"Nome"}, {"email":"email"}, {"cpf":"CPF"}, {"telefone":"Telefone"}, {"endereco":u"Endereço"}, {"status":"Status"} ] saveplace = ("{0}/ns{1}/arquivos/tmp/{2}{3}.xls").format(str(settings.PATH_FILES), str(self.id_site), unicode(titulo + '_' + titulo_promo, errors='ignore'), timename) saveurl = "{0}tmp/{1}{2}.xls".format(base, unicode(titulo + '_' + titulo_promo, errors='ignore'), timename) index += 1 for j in range(len(campos_s1)): sheet.write(index, j, campos_s1[j].values()[0], style) sheet.col(j).width = 30 * 256 for i in self.execSql("select_usuarios_promocoes_all2", id_conteudo=int(id_promocao)): endereco = "{0}, {1}, {2}, {3}, {4}". format(i['endereco'], i['numero'], i['bairro'], i['estado'], i['cep']) sheet.write(index + 1, 0, self.dec(i['nome'])) sheet.write(index + 1, 1, self.dec(i['email'])) sheet.write(index + 1, 2, self.dec(i['cpf'])) sheet.write(index + 1, 3, self.dec(i['telefone'])) sheet.write(index + 1, 4, self.dec(endereco)) sheet.write(index + 1, 5, self.dec(i['status'])) index += 1 cont += 1 else: cont = 0 sheet.write_merge(0, 0, 0, 5, u"Relação de usuários contemplados", style0) campos_s1 = [{"nome":"Nome"}, {"email":"email"}, {"cpf":"CPF"}, {"telefone":"Telefone"}, {"endereco":u"Endereço"}, {"Contemplações":u"Contemplações"}] index += 1 for j in range(len(campos_s1)): sheet.write(index, j, campos_s1[j].values()[0], style) sheet.col(j).width = 30 * 256 for i in self.execSql("select_contemplados"): endereco = "{0}, {1}, {2}, {3}, {4}". format(i['endereco'], i['numero'], i['bairro'], i['estado'], i['cep']) sheet.write(index + 1, 0, self.dec(i['nome'])) sheet.write(index + 1, 1, self.dec(i['email'])) sheet.write(index + 1, 2, self.dec(i['cpf'])) sheet.write(index + 1, 3, self.dec(i['telefone'])) sheet.write(index + 1, 4, self.dec(endereco)) sheet.write(index + 1, 5, self.dec(i['total'])) index += 1 cont += 1 index += 6 sheet.write(index, 0, u"Total de usuários", style) sheet.write(index, 1, self.dec(cont), style) book.save(saveplace) return saveurl
def _getUltimasNoticias(self, hash, limit=20, offset=0, d1=None, d2=None, qw=None, exportar=None, render=None, tags=[], corpo=None): """ """ if type(hash) is not list: hash = [hash] portal = Portal(id_site=self.id_site, request=self.request) site = getDadosSite(id_site=self.id_site, request=self.request) base = site["base_html"] base_img = site["base_img"] items = portal._listarConteudoApp(id_site=self.id_site, hash=hash, comentario=False, acesso=False, acesso24h=None, voto=False, keywords=qw, de=d1, ate=d2, tags=tags, limit=limit, offset=offset, render=render) itens = [] idcs = [] idcsd = {} items_ = [i for i in items["itens"] if idcs.append(str(i["id_conteudo"])) or 1] if idcs: for i in self.execSql("select_svgs", id_conteudos=buffer(",".join(idcs))): idcsd[i["id_conteudo"]] = i for i in items_: if idcsd.get(i["id_conteudo"]): i["audio"] = idcsd.get(i["id_conteudo"])["audio"] i["video"] = idcsd.get(i["id_conteudo"])["video"] i["galeria"] = idcsd.get(i["id_conteudo"])["galeria"] else: i["audio"] = None i["video"] = None i["galeria"] = None if corpo: res = i["serialized"]() if res: corpo = self._formatarCorpo(corpo=res["dados"]["corpo"], fotos=res["dados"]["foto"], editor=res["dados"]["editor"], base_img=base_img) i["corpo"] = corpo i["titulo_categoria"] = res["dados"]["titulo_categoria"] i["autor_nome"] = None i["autor_email"] = None i["autor_grupo"] = None if res["dados"]["autor"]: for x in self.execSql("select_autor_noticia", id_conteudo=i["id_conteudo"]): i["autor_nome"] = x["nome"] i["autor_email"] = x["email"] i["autor_grupo"] = x["grupo"] break i["serialized"] = res itens.append(i) return {"res":itens, "qtde":items["qtde"]}
def cadastrar(self, e, nome, ultimo, apelido, sexo, nascimento, cpf_cnpj, senha, confirma, rua, numero, complemento, bairro, cidade, estado, cep, ddd, fone, captcha, timefutebol=None, ddi="", ramal="", codigo="", tipo_tel="1", tipo_end="1", rg="", pais="Brasil", master="", expiracao="", pessoa="F", id_servico=None): """ erros: 1 - ja existe o email 2 - dados incorretos 3 - erro nao definido 4 - codigo incorreto 5 - ja existe login sucesso: 1 - cadastro efetuado """ session = self._getAppSession() capt = captcha.lower() captcha = session.getCaptchaSession(captcha.upper()) validacao = self.vercad(e) if validacao: res = {"type":"error", "description":"email ja existente", "id":"1"} else: if captcha: errs = 0 try: numero = numero except: numero = None try: fone = fone.replace("-", "") except: fone = None try: ddd = ddd except: ddd = None try: cep = cep.replace("-", "") except: cep = None from publica.utils.cpf import CPF er = "" if e.find("@") < 0 or (len(e) > 64 or len(e) == 0): errs = 1 er+="email " elif len(nome) > 64 or len(nome) == 0: errs = 1 er+="nome " elif len(ultimo) > 64 or len(ultimo) == 0: errs = 1 er+="sobrenome " elif len(apelido) > 32 or len(apelido) == 0: errs = 1 er+="apelido " elif sexo not in ("F", "M"): errs = 1 er+=" sexo " elif nascimento == None: errs = 1 er+="nascimento " elif not CPF(cpf_cnpj).isValid(): errs = 1 er+="cpf " elif not (len(senha) >= 6 and len(senha) < 32) or (senha != confirma): errs = 1 er+="senha " elif len(rua) > 64 or len(rua) == 0: errs = 1 er+"rua " elif numero == None: errs = 1 er+="numero " elif len(complemento) > 32: errs = 1 er+="complemento " elif len(bairro) > 64 or len(bairro) == 0: errs = 1 er+="bairro " elif len(cidade) > 64 or len(cidade) == 0: errs = 1 er+="cidade " elif len(estado) > 32 or len(estado) == 0: errs = 1 er+="estado " elif cep == None: errs = 1 er+="cep " elif ddd == None: errs = 1 er+="ddd " elif fone == None: errs = 1 er+="fone " if errs: res = {"type":"error", "description":"dados incorretos "+er, "id":"2"} else: nome = nome + " " + ultimo nlogin = e.find('@') login = e[ :nlogin] verlogin = self.verLogin(login) if verlogin: res = {"type": "error", "description": "Login existe", "id":"5"} elif not verlogin: tempHash = session.cadastrarUser(login=login, master=master, email=e, nome=nome, apelido=apelido, sexo=sexo, dt_expiracao=expiracao, dt_nascimento=nascimento, cpfcnpj=cpf_cnpj, pessoa= pessoa, contato=fone, rg=rg, senha=senha, rua=rua, numero=numero, complemento=complemento, bairro=bairro, cidade=cidade, estado=estado, cep=cep, pais=pais, tipo_end=tipo_end, ddi=ddi, ddd=ddd, telefone=fone.replace('-',''), tipo_tel=tipo_tel, ramal=ramal, codigo_externo=codigo) site = getDadosSite(id_site=self.id_site, request=self.request) if not id_servico: link = ("%splug/da_centrallogin/%s,%s/validaCad?codigo=%s" % (site["base_dinamico"], self.id_plugin, self.id_site, tempHash)) else: link = ("%splug/da_centrallogin/%s,%s/validaCad?codigo=%s&serv=%s" % (site["base_dinamico"], self.id_plugin, self.id_site, tempHash, id_servico)) msg = msg3 % {"link":link, "title":self.dados["titulo"]} email = Email() email.enviarEmail(subject=msg12 % self.dados["titulo"], to=e, fro=self.dados["from_host"], text=msg, returnpath=self.dados["return_path"], host=self.dados["smtp_host"], port=self.dados["smtp_port"], type="text/html") res = {"type": "ok", "description": "cadastro efetuado com sucesso", "id":"1"} else: res = {"type":"error", "description":"erro nao definido", "id":"3"} else: res = {"type": "error", "description": "codigo incorreto", "id": "4"} return res
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()