def get(self, friend): user = self.get_current_user() user_data = _EMPTYMEMBER() user_data.update(database.REGISTRY[user]) if friend in user_data['amigos_pendentes']: user_data['amigos'].append(friend) user_data['amigos_pendentes'].remove(friend) friend_data = _EMPTYMEMBER() friend_data.update(database.REGISTRY[friend]) friend_data['amigos'].append(user) if user in friend_data['amigos_convidados']: friend_data['amigos_convidados'].remove(user) try: database.REGISTRY[user] = user_data database.REGISTRY[friend] = friend_data log.model.log(user, u'começou uma amizade com', objeto=friend, tipo="user") self.redirect("/invites") except Exception as detail: self.render("home.html", MSG=u"Erro: %s" % detail, REGISTRY_ID=user, \ NOMEPAG="amigos") else: self.render("home.html", MSG=u"Convite não encontrado.", REGISTRY_ID=user, \ NOMEPAG="amigos")
def post(self): user = self.get_current_user() tipo_busca = self.get_argument("tipo_busca","") editar = True users_dict = dict() msg = "" if tipo_busca=="simples": login = self.get_argument("login","") if not login: msg = u"Campo login não preenchido." else: user_data = _EMPTYMEMBER() if login in core.database.REGISTRY: user_data.update(core.database.REGISTRY[login]) fullname = user_data["name"]+ " " + user_data["lastname"] #strPapeis = ' ' + ' '.join(user_data["papeis"]) + ' ' #users_dict[login] = [fullname, user_data["email"], strPapeis] users_dict[login] = [fullname, user_data["email"]] if tipo_busca=="avancada": email = self.get_argument("email","") nome = self.get_argument("nome","") if (not email) and (not nome): msg = "Campos nome e email não preenchidos." else: map_fun = """ function(doc) { var fullname = doc.name+' '+doc.lastname; var achou; if (doc.passwd){ // Busca pelo email if ('%s'!="") achou = (doc.email=='%s') else achou = true if (!achou) return; // Busca pelo nome if ('%s'!="") achou = fullname.toLowerCase().indexOf('%s'.toLowerCase())>=0; else achou = true if (!achou) return; import skills.model emit(doc.user, [fullname, doc.email]); } }""" % (email, email, nome, nome) resultado = core.database.REGISTRY.query(map_funmedia_niveis_habilidades = "oi") for row in resultado: users_dict[row.key] = row.value self.render("modules/admin/list-user.html", REGISTRY_ID=PRIV_SUPORTE_ACTIV, USERS=users_dict, \ EDITAR=editar, MSG=msg,\ NOMEPAG="cadastro")
def _send_invites(self, email, user, comunidades): #Cria nova chave que sera utilizada pelo usuario convidado magic_data = _EMPTYKEYS() magic_data['user'] = user newKey = GenMagicKey() magic_data['magic'] = newKey magic_data['email'] = email magic_data['comunidades'] = comunidades magic_data['data_convite'] = str(datetime.now()) model.MAGKEYS[newKey] = magic_data # Atualiza a lista de chaves emitidas pelo usuário que fez o convite user_data = _EMPTYMEMBER() user_data.update(core.database.REGISTRY[user]) user_data["mykeys"].append(newKey) core.database.REGISTRY[user] = user_data # Guarda log com o convite enviado invite_data = _EMPTYINVITES() if user in model.INVITES: invite_data.update(model.INVITES[user]) invite_data["convites_enviados"].append ( { "email": email, "data_cri": magic_data['data_convite'] } ) model.INVITES[user] = invite_data # envia e-mail com convite msg = enviaConvite(self, user, email, newKey)
def email_notify(cls, user, sujeito, assunto, message="", link="", sendToMyself=False): # user -> quem deve ser avisado # sujeito -> quem realizou a ação # sendToMyself=True indica que a mensagem deve ser enviada para mim, mesmo que eu tenha realizado a ação. Ex: troca de senha. if (sendToMyself or user!=sujeito) and isAUser(sujeito): if isAUser(user): # usuário a ser avisado to_user_data = model._EMPTYMEMBER() to_user_data.update(database.REGISTRY[user]) email = to_user_data["email"] notify = to_user_data["notify"] nome_destinatario = to_user_data["name"] # usuário que realizou a ação from_user_data = database.REGISTRY[sujeito] nome_completo = from_user_data["name"] + " " + from_user_data["lastname"] assunto = sendToMyself and assunto or nome_completo + " " + assunto if notify == "2": # envia e-mail imediatamente if not Notify.enviaEmail (email, assunto, nome_destinatario, message, link): # erro no envio do e-mail: guarda mensagem em NOTIFICATIONERROR notify_data = _EMPTYNOTIFICATIONERROR() if user in log.database.NOTIFICATIONERROR: notify_data.update(log.database.NOTIFICATIONERROR[user]) reg = dict( sujeito= sujeito, subject= assunto, message= message, data_inclusao= str(datetime.now()) ) notify_data["registros"].append(reg) log.database.NOTIFICATIONERROR[user] = notify_data #print "Erro no envio do email. Msg salva em NOTIFICATIONERROR" else: #print "Email enviado com sucesso para "+email pass elif notify == "1": # guarda mensagem no banco para depois enviar resumo semanal notify_data = _EMPTYNOTIFICATION() if user in log.database.NOTIFICATION: notify_data.update(log.database.NOTIFICATION[user]) reg = dict( sujeito= sujeito, subject= assunto, message= message, data_inclusao= str(datetime.now()) ) notify_data["registros"].append(reg) log.database.NOTIFICATION[user] = notify_data #print "Email salvo em NOTIFICATION" else: #print "Usuário não deseja ser notificado" pass elif isACommunity(user): for participante in database.REGISTRY[user]["participantes"]: Notify.email_notify(participante, sujeito, assunto, message, link)
def get(self): user = self.get_current_user() user_data = _EMPTYMEMBER() user_data.update(database.REGISTRY[user]) msg = '' friend = self.get_argument('friend', "") if friend == user: msg = u'Você não pode convidar a si mesmo como amigo.' elif isAUser(friend): if friend in user_data['amigos_convidados']: msg = u'Você já convidou %s anteriormente. Aguardando resposta.' % friend elif friend in user_data['amigos_pendentes']: msg = u'%s já te convidou anteriormente. Aguardando sua resposta.' % friend elif friend in user_data['amigos']: msg = u'Você já é amigo de %s.' % friend else: user_data['amigos_convidados'].append(friend) try: database.REGISTRY[user] = user_data except ResourceConflict as detail: # se o registry está sendo usado ao mesmo tempo pela thread dá erro 503 raise HTTPError(503) friend_data = _EMPTYMEMBER() friend_data.update(database.REGISTRY[friend]) friend_data['amigos_pendentes'].append(user) database.REGISTRY[friend] = friend_data msg = u'Convite para %s enviado com sucesso.' % friend # notifica o usuário convidado email_msg = u"Para aceitar esta solicitação clique no botão abaixo ou acesse o seu Painel de Controle e clique em Convites.\n\n" Notify.email_notify(friend, user, u"convidou você para amigo", \ message=email_msg, \ link="invites") log.model.log(user, u'convidou um usuário para amigo', tipo="user", news=False) else: msg = u'Usuário não encontrado.' self.render("modules/friends/friend-form.html", NOMEPAG="amigos", REGISTRY_ID=user, MSG=msg)
def email_notify_old(cls, user, sujeito, assunto, message="", link=""): if user!=sujeito and isAUser(user) and isAUser(sujeito): # usuário a ser avisado to_user_data = model._EMPTYMEMBER() to_user_data.update(database.REGISTRY[user]) email = to_user_data["email"] notify = to_user_data["notify"] nome_destinatario = to_user_data["name"] # usuário que realizou a ação from_user_data = database.REGISTRY[sujeito] nome_completo = from_user_data["name"] + " " + from_user_data["lastname"] assunto = nome_completo + " " + assunto if notify == "2": # envia e-mail imediatamente if not Notify.enviaEmail (email, assunto, nome_destinatario, message, link): # erro no envio do e-mail: guarda mensagem em NOTIFICATIONERROR notify_data = _EMPTYNOTIFICATIONERROR() if user in log.database.NOTIFICATIONERROR: notify_data.update(log.database.NOTIFICATIONERROR[user]) reg = dict( sujeito= sujeito, subject= assunto, message= message, data_inclusao= str(datetime.now()) ) notify_data["registros"].append(reg) log.database.NOTIFICATIONERROR[user] = notify_data #print "Erro no envio do email. Msg salva em NOTIFICATIONERROR" else: #print "Email enviado com sucesso para "+email pass elif notify == "1": # guarda mensagem no banco para depois enviar resumo semanal notify_data = _EMPTYNOTIFICATION() if user in log.database.NOTIFICATION: notify_data.update(log.database.NOTIFICATION[user]) reg = dict( sujeito= sujeito, subject= assunto, message= message, data_inclusao= str(datetime.now()) ) notify_data["registros"].append(reg) log.database.NOTIFICATION[user] = notify_data #print "Email salvo em NOTIFICATION" else: #print "Usuário não deseja ser notificado" pass
def get(self, registry_id): user = self.get_current_user() if isACommunity(registry_id): if isUserOrOwner(user, registry_id): part = self.get_argument("part","") group = self.get_argument("group","") user_data = _EMPTYCOMMUNITY() user_data.update(core.database.REGISTRY[registry_id]) if part: groups = [(group, part in user_data["groups"][group]) for group in user_data["groups"].keys()] self.render("modules/community/update-groups.html", NOMEPAG='comunidades', \ PART=part, GROUPS=groups, \ REGISTRY_ID=registry_id, MSG="") elif group: parts = [(part, part in user_data["groups"][group]) for part in user_data["participantes"] if isAUser(part)] self.render("modules/community/update-parts.html", NOMEPAG='comunidades', \ PARTS=parts, GROUP=group, \ REGISTRY_ID=registry_id, MSG="") else: self.render("home.html", MSG=u"Chamada inválida.", NOMEPAG='comunidades') else: self.render("home.html", MSG=u"Somente administradores da comunidade podem agrupar participantes.", NOMEPAG='comunidades') else: if isUserOrOwner(user, registry_id): part = self.get_argument("part","") group = self.get_argument("group","") user_data = _EMPTYMEMBER() user_data.update(core.database.REGISTRY[registry_id]) if part: groups = [(group, part in user_data["groups"][group]) for group in user_data["groups"].keys()] self.render("modules/community/update-groups.html", NOMEPAG='amigos', \ PART=part, GROUPS=groups, \ REGISTRY_ID=registry_id, MSG="") elif group: parts = [(part, part in user_data["groups"][group]) for part in user_data["amigos"]] self.render("modules/community/update-parts.html", NOMEPAG='amigos', \ PARTS=parts, GROUP=group, \ REGISTRY_ID=registry_id, MSG="") else: self.render("home.html", MSG=u"Chamada inválida.", NOMEPAG='amigos') else: self.render("home.html", MSG=u"Somente o próprio usuário pode agrupar seus amigos.", NOMEPAG='amigos')
def post(self, registry_id): user = self.get_current_user() if isUserOrOwner(user, registry_id): part = self.get_argument("part","") group = self.get_argument("group","") if isACommunity(registry_id): user_data = _EMPTYCOMMUNITY() else: user_data = _EMPTYMEMBER() user_data.update(core.database.REGISTRY[registry_id]) if part: for group in user_data["groups"].keys(): checkbox_value = self.get_argument(group,"") if checkbox_value=="S" and part not in user_data["groups"][group]: user_data["groups"][group].append(part) elif checkbox_value<>"S" and part in user_data["groups"][group]: while part in user_data["groups"][group]: user_data["groups"][group].remove(part) core.database.REGISTRY[registry_id] = user_data self.render("popup_msg.html", MSG=u"Grupos alterados com sucesso.", REGISTRY_ID=registry_id) elif group: pessoas = user_data["participantes"] if isACommunity(registry_id) else user_data["amigos"] for part in pessoas: checkbox_value = self.get_argument(part,"") if checkbox_value=="S" and part not in user_data["groups"][group]: user_data["groups"][group].append(part) elif checkbox_value<>"S" and part in user_data["groups"][group]: while part in user_data["groups"][group]: user_data["groups"][group].remove(part) core.database.REGISTRY[registry_id] = user_data self.render("popup_msg.html", MSG=u"Participantes alterados com sucesso.", REGISTRY_ID=registry_id) else: self.render("popup_msg.html", MSG=u"Chamada inválida.") else: if isACommunity(registry_id): self.render("popup_msg.html", MSG=u"Somente administradores da comunidade podem agrupar participantes.", REGISTRY_ID=registry_id) else: self.render("popup_msg.html", MSG=u"Somente o próprio usuário pode agrupar seus amigos.", REGISTRY_ID=registry_id)
def post(self, registry_id): user = self.get_current_user() if user == registry_id: part = self.get_argument("part","") group = self.get_argument("group","") user_data = _EMPTYMEMBER() user_data.update(core.database.REGISTRY[registry_id]) if part: for group in user_data["community_groups"].keys(): checkbox_value = self.get_argument(group,"") if checkbox_value=="S" and part not in user_data["community_groups"][group]: user_data["community_groups"][group].append(part) elif checkbox_value<>"S" and part in user_data["community_groups"][group]: while part in user_data["community_groups"][group]: user_data["community_groups"][group].remove(part) core.database.REGISTRY[registry_id] = user_data self.render("popup_msg.html", MSG=u"Grupos alterados com sucesso.", REGISTRY_ID=registry_id) elif group: for part in user_data["comunidades"]: checkbox_value = self.get_argument(part,"") if checkbox_value=="S" and part not in user_data["community_groups"][group]: user_data["community_groups"][group].append(part) elif checkbox_value<>"S" and part in user_data["community_groups"][group]: while part in user_data["community_groups"][group]: user_data["community_groups"][group].remove(part) core.database.REGISTRY[registry_id] = user_data self.render("popup_msg.html", MSG=u"Grupo alterado com sucesso.", REGISTRY_ID=registry_id) else: self.render("popup_msg.html", MSG=u"Chamada inválida.") else: self.render("popup_msg.html", MSG=u"Somente o próprio usuário pode agrupar suas comunidades.", REGISTRY_ID=registry_id)
def get(self, registry_id): user = self.get_current_user() if user == registry_id: part = self.get_argument("part","") group = self.get_argument("group","") user_data = _EMPTYMEMBER() user_data.update(core.database.REGISTRY[registry_id]) if part: groups = [(group, part in user_data["community_groups"][group]) for group in user_data["community_groups"].keys()] self.render("modules/community/update-groups.html", NOMEPAG='comunidades', \ PART=part, GROUPS=groups, \ REGISTRY_ID=registry_id, MSG="") elif group: parts = [(part, part in user_data["community_groups"][group]) for part in user_data["comunidades"]] self.render("modules/community/update-parts.html", NOMEPAG='comunidades', \ PARTS=parts, GROUP=group, \ REGISTRY_ID=registry_id, MSG="") else: self.render("home.html", MSG=u"Chamada inválida.", NOMEPAG='comunidades') else: self.render("home.html", MSG=u"Somente o próprio usuário pode agrupar suas comunidades.", NOMEPAG='comunidades')