Beispiel #1
0
 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")
Beispiel #2
0
    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")
Beispiel #3
0
 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)
Beispiel #4
0
 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)
Beispiel #5
0
    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)
Beispiel #6
0
 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
Beispiel #7
0
    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')                              
Beispiel #8
0
    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)                    
Beispiel #9
0
    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)                    
Beispiel #10
0
    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')