Example #1
0
 def get (self, registry_id):
     user = self.get_current_user()
     folder = self.get_argument("folder","")
     items = self.request.arguments["items"]
     desc_list = []
     for item in items:
         doc_id = '/'.join([registry_id, item])
         self._wiki = model.Wiki().retrieve(doc_id)
         desc = self._wiki.getDescendentsList()
         if desc: 
             desc_list.extend(desc)
     select_folders = [ f for f in model.Wiki.listWikiFolders(registry_id) if f not in desc_list]
     
     if folder:
         doc_id = '/'.join([registry_id, folder])
         self._folder = model.Wiki().retrieve(doc_id)
         if self._folder: 
             
             self.write (dict(status=0, result=dict(path=self._folder.getPagePath(links=False),  
                                                    e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id), 
                                                    items=items, folder=folder, folders=select_folders)))
             
     else:
         self.write (dict(status=0, result=dict(path="/%s/"%registry_id,  
                                                    e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id), 
                                                    items=items, folder=folder, folders=select_folders)))
Example #2
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)
Example #3
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
Example #4
0
 def replyTo (user, user_to, user_from):
     reply_to = ""
     if isAUser(user_to):
         if isFriend(user, user_from):
             reply_to = user_from
     else:
         if isMember(user, user_to):
             reply_to = user_to
     return reply_to
Example #5
0
 def get (self, registry_id, pagina):
     user = self.get_current_user()
     doc_id = '/'.join([registry_id, pagina])
     self._wiki = model.Wiki().retrieve(doc_id)
     if self._wiki:
         
         self.write (dict(status=0, result=dict(path=self._wiki.getPagePath(links=False), pagina=pagina,   
                                                    e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id))))
     else:
         self.write (dict(status=1, msg=u"Documento não encontrado."))
Example #6
0
    def get(self, registry_id, image):
        msg = ""
        user = self.get_current_user()

        if not (isAUser(registry_id) and registry_id == user):
            msg = u"Você não tem permissão para editar este desenho."
            self.render("home.html", MSG=msg,NOMEPAG='desenhos', REGISTRY_ID=registry_id)
            return
        
        self.render("modules/paint/svg-editor.html", REGISTRY_ID=registry_id,
                    NOMEPAG='agenda',NEW_PICTURE=image, EDIT_PICTURE ="")
Example #7
0
    def post(self, registry_id, pagina):
        user = self.get_current_user()
        doc_id = '/'.join([registry_id, pagina])
        self._wiki = model.Wiki().retrieve(doc_id)
        if self._wiki: 
            old_name = self._wiki.nomepag
            new_name = self.get_argument("nomepag_novo","")
            if new_name:
                if model.Wiki.nomepagExists(registry_id, new_name):
                    msg = u"Já existe uma página ou pasta com este nome<br/>"
                    self.write (dict(status=1, result=dict(path=self._wiki.getPagePath(links=False), pagina=pagina, newname=new_name, msg=msg,    
                                                       e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id))))
        
                else:
                    # atualiza nome da pasta
                    self._wiki.nomepag = new_name
                    self._wiki.data_alt = str(datetime.now())
                    self._wiki.alterado_por = user
                    self._wiki.save()
                    
                    # notifica o dono da página movida
                    email_msg = u"Pasta renomeada: "+doc_id+"\n"+\
                                u"De: " + old_name + " Para: " + new_name + "\n" +\
                                Notify.assinatura(user, registry_id, self._wiki.data_alt)+"\n\n"
                    Notify.email_notify(self._wiki.owner, user, u"renomeou uma pasta criada por você", \
                                   message=email_msg, \
                                   link="/wiki/%s?folder=%s"%(registry_id, pagina))
                    
                    log.model.log(user, u'renomeou a pasta', objeto=registry_id+"/"+self._wiki.nomepag, link="/wiki/%s?folder=%s"%(registry_id, pagina), tipo="wiki")
                    self.write (dict(status=0, msg=u"Pasta renomeada com sucesso."))
                    
            else:
                msg = u"Nome da pasta não preenchido."
                self.write (dict(status=1, result=dict(path=self._wiki.getPagePath(links=False), pagina=pagina, newname=new_name, msg=msg,    
                                                       e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id))))

                
        else:
            self.write (dict(status=0, msg=u"Documento não encontrado: provavelmente o mesmo foi removido enquanto você editava-o."))
Example #8
0
 def get (self, registry_id):
     user = self.get_current_user()
     page = int(self.get_argument("page","1"))
     
     (sel_multipla, pags) = prepareFolderPages(user, model.Wiki.listFolderPages(user, registry_id, "", page, NUM_MAX_WIKIPAGES, True), getType(registry_id)[0])
     pag_count = model.Wiki.countRemovedPages(registry_id)
     
     links = []
     if isUserOrOwner(user, registry_id):
         links.append((u"Listar páginas", "/static/imagens/icones/wiki32.png", "/wiki/"+registry_id))
 
     self.write (dict(status=0, result=dict(pag_count=pag_count, paginas=pags, page=page, pagesize=NUM_MAX_WIKIPAGES, 
                                            e_usuario=isAUser(registry_id) )))
Example #9
0
 def get(self, registry_id):
     msg = ""
     user = self.get_current_user()
     permissao = False
     if (isAUser(registry_id) and registry_id == user):
         permissao = True
     desenho_data = _EMPTYDESENHO()
     desenhos = []
     if registry_id in model.DESENHO:
         desenho_data.update(model.DESENHO[registry_id])
         desenhos = desenho_data['desenhos'].items()
     self.render("modules/paint/desenhos.html", NOMEPAG='desenhos', \
             REGISTRY_ID=registry_id, DESENHOS = desenhos, MSG="", PERMISSAO = permissao)
Example #10
0
def usersAllowedToRead(servico, registry_id, nomeobj=""):
    """ retorna lista de usuário autorizados a ler um serviço/objeto dentre os amigos/participantes de registry_id,
        mesmo que a permissão seja acesso_activ ou acesso_externo.
    """ 
    usuarios = []
    if isAUser(registry_id):
         for u in core.database.REGISTRY[registry_id]["amigos"]:
            if isAllowedToReadObject(u, servico, registry_id, nomeobj):
                usuarios.append(u)       
    else:
        for u in core.database.REGISTRY[registry_id]["participantes"]:
            if isAllowedToReadObject(u, servico, registry_id, nomeobj):
                usuarios.append(u)
    return usuarios
Example #11
0
    def get(self, registry_id, pagina):
        user = self.get_current_user()
        versao = self.get_argument("versao","-1")

        doc_id = '/'.join([registry_id, pagina])
        self._wiki = model.Wiki().retrieve(doc_id, include_removed=True)
        if self._wiki and self._wiki.is_folder!="S": 
            wiki_data = prepareWikiPage(user, self._wiki.getWikiPage(user, versao=int(versao)))

            links = []
            if user:
                links.append(("Ver perfil de "+registry_id, "/static/imagens/icones/profile32.png", "/profile/"+registry_id))
                
                if isFriend(user, registry_id):
                    #links.append(("Enviar recado", "/static/imagens/icones/scrap32.png", "/scrap/"+registry_id))
                    if isOnline(registry_id):
                        links.append((u"Iniciar Chat com "+registry_id, "/static/imagens/icones/talk32.png", "/chat/"+registry_id))
                    else:
                        links.append((registry_id+u" não está online. Deixe uma mensagem.", "/static/imagens/icones/nottalk32.png", "/chat/"+registry_id))
                elif isAUser(registry_id) and user != registry_id:
                    self._reg = core.model.Member().retrieve(registry_id)

                    if user in self._reg.amigos_pendentes:
                        links.append((u"Já convidado. Aguardando resposta.", "/static/imagens/icones/invited_friend32.png", ""))
                    elif user in self._reg.amigos_convidados:
                        links.append(("Aceite convite de "+registry_id, "/static/imagens/icones/add_friend32.png", "/invites"))
                    else:
                        links.append(("Adicionar amigo", "/static/imagens/icones/add_friend32.png", "/newfriend?friend="+registry_id))
                                    
                self._reg_user = core.model.Registry().retrieve(user)
                if self._reg_user and "bookmarks"  in self._reg_user.getServices:                              
                    links.append(bookmarks.model.Bookmarks.createBookmarkLink(user, "http://"+PLATAFORMA_URL+self.request.path))
                if isUserOrOwner(user, registry_id):
                    links.append((u"Ver histórico de versões", "/static/imagens/icones/versions32.png", "/wiki/history/"+doc_id))
                if isAllowedToWriteObject(user, "wiki", registry_id, pagina):
                    links.append((u"Alterar esta página", "/static/imagens/icones/edit32.png", "/wiki/edit/"+doc_id))
                if isAllowedToDeleteObject(user, wiki_data["owner"],doc_id, wiki="S"):
                    links.append((u"Alterar permissões desta página", "/static/imagens/icones/permissions32.png", "/permission/wiki/"+doc_id))
                    links.append((u"Apagar esta página", "/static/imagens/icones/delete32.png", "/wiki/delete/"+doc_id,\
                                  "return confirm('Deseja realmente apagar esta página?');"))

            indice_links = []
            if wiki_data["alterar"]:
                indice_links.append((u"Editar índice", "/static/imagens/icones/edit16.png", "/wiki/edit/"+registry_id+"/indice"))
            
            self.write (dict(status=0, result=dict(path=self._wiki.getPagePath(), pagina=pagina,  
                                               wikidata=wiki_data )))
            
        else:
            self.write (dict(status=1, msg=u"Página não encontrada."))
Example #12
0
 def get (self, registry_id, pagina):
     user = self.get_current_user()
     doc_id = '/'.join([registry_id, pagina])
     self._wiki = model.Wiki().retrieve(doc_id)
     if self._wiki: 
         if isAllowedToWriteObject(user, "wiki", registry_id, pagina):
             folders = [f for f in model.Wiki.listWikiFolders(registry_id) if f not in self._wiki.getDescendentsList()]
             
             self.write (dict(status=0, result=dict(pagina=pagina, path=self._wiki.getPagePath(links=False),  
                                                    e_usuario=isAUser(registry_id), e_owner=isOwner(user, registry_id),folders=folders)))
             
         else:
              self.write (dict(status=1, msg=u"Você não tem permissão para alterar esta página."))
     else:
         self.write (dict(status=1, msg=u"Documento não encontrado."))
Example #13
0
    def post(self, registry_id):
        user = self.get_current_user()

        if not (isAUser(registry_id) and registry_id == user):
            msg = u"Você não tem permissão para editar este desenho."
            self.render("home.html", MSG=msg,NOMEPAG='desenhos', REGISTRY_ID=registry_id)
            return
        
        imagem = "nenhum"    
        
        if 'templates' in self.request.arguments:        
            for value in self.request.arguments['templates']:
                imagem = value 
        
        url = "/paint/new/" + registry_id + "/" + imagem
        self.redirect(url)
Example #14
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)
Example #15
0
    def get(self, registry_id):
        user = self.get_current_user()
        if isAUser(registry_id):
            page = int(self.get_argument("page","1"))
            group = self.get_argument("group","")

            self._user = core.model.Member().retrieve(registry_id)
            
            # Se o grupo não existe, mostra todos os amigos do usuário.
            # Este caso acontece qdo o grupo acabou de ser removido.
            # Impede a visualização de um grupo de outra pessoa.
            if group not in self._user.groups or user!=registry_id:
                group = ""
                
            (friends_count, amigos) = self._user.getFriendsList(group, page, NUM_MAX_FRIENDS, user=user)

            links=[]
            if group:
                links.append(("Remover este grupo", "/static/imagens/icones/delete32.png", "/groups/delete/"+registry_id+"?group="+group, "return confirm('Deseja realmente remover este grupo? Os participantes não sairão da sua lista de amigos.','');"))
                links.append(("Gerenciar participantes deste grupo", "/static/imagens/icones/group32.png", "/groups/"+registry_id+"?group="+group, "", "", True))
            if user==registry_id:
                links.append(("Procurar amigos", "/static/imagens/icones/search32.png", "/friends/search"))
                links.append(("Responder convites", "/static/imagens/icones/invite32.png", "/invites"))
            elif user not in self._user.amigos:
                links.append(("Adicionar "+registry_id+" como amigo", "/static/imagens/icones/add_friend32.png", "/newfriend?friend="+registry_id))

            if group:
                msg = u"Este grupo ainda não possui nenhum amigo."
            else:
                msg = u"Este usuário ainda não possui nenhum amigo."

            log.model.log(user, u'acessou a lista de amigos de', objeto=registry_id, tipo="user", news=False)   
                                
            self.render("modules/friends/friend-list.html", NOMEPAG='amigos', \
                        REGISTRY_ID=registry_id, \
                        FRIENDS=amigos, \
                        FRIENDS_COUNT=friends_count, \
                        PAGE=page, PAGESIZE=NUM_MAX_FRIENDS, \
                        THIS_GROUP=group, GROUPS=self._user.groups.keys(), \
                        MSG=msg, \
                        LINKS=links)
        else:
            # se o registry_id for de uma comunidade
            raise HTTPError(404)    
Example #16
0
    def listPosts(self, user, registry_id, page, page_size, myself=False, myposts=0):
        # Lista os posts de registry_id. Se user = registry_id, myself=True
        lista_posts = []
        if myself and myposts!=1:
            # Estou vendo meu próprio mblog: vejo mensagens que me interessam.
            
            for row in database.MBLOG.view('mblog/by_followers',startkey=[registry_id, {}],endkey=[registry_id], \
                                           descending="true", skip=(page-1)*page_size , limit=page_size):
                mblog_data = dict()
                mblog_data.update(row.value)
                mblog_data["apagar"] = (row.value["owner"] == user)
                mblog_data["data_nofmt"] = row.value["data_cri"]
                mblog_data["data_cri"] = human_date(row.value["data_cri"])
                if "data_original" in row.value:
                    mblog_data["data_original"] = human_date(row.value["data_original"])
                lista_posts.append(mblog_data)
                
        else:
            # Estou vendo o mblog de outra pessoa ou de uma comunidade: 
            # só vejo mensagens postadas por ela.
          
            for row in database.MBLOG.view('mblog/by_owners',startkey=[registry_id, {}],endkey=[registry_id], \
                                           descending="true", skip=(page-1)*page_size , limit=page_size):
                mblog_data = dict()
                mblog_data.update(row.value)
                mblog_data["apagar"] = (row.value["owner"] == user)
                mblog_data["data_nofmt"] = row.value["data_cri"]
                mblog_data["data_cri"] = human_date(row.value["data_cri"])
                if "data_original" in row.value:
                    mblog_data["data_original"] = human_date(row.value["data_original"])

                if isAUser(registry_id):
                    community_id = ""
                    if registry_id != mblog_data["registry_id"]:
                        community_id = mblog_data["registry_id"]
                    
                    if (not community_id) or \
                       (community_id in core.database.REGISTRY and \
                       core.database.REGISTRY[community_id]["privacidade"]!="Privada"):
                        lista_posts.append(mblog_data)
                else:
                    lista_posts.append(mblog_data)

        return lista_posts
Example #17
0
 def get (self, registry_id, pagina):
     user = self.get_current_user()
     doc_id = '/'.join([registry_id, pagina])
     self._wiki = model.Wiki().retrieve(doc_id)
     if self._wiki: 
             _revision = self._wiki.rev
             
             form = dict(
                           action="",
                           nomepag=dict(type="@hidden",value=self._wiki.nomepag),
                           revision=dict(type="@hidden",value=self._wiki.rev),
                           tags=dict(type="@text",value=self._wiki.tags),
                           e_usuario=dict(type="@text",value=isAUser(registry_id)),
                           e_owner=dict(type="@text",value=isOwner(user, registry_id)),
                           conteudo=dict(type="@textarea", value=self._wiki.historico[-1]["conteudo"])
             )
             self.write (dict(status=0, result=form))
     else:
         self.write (dict(status=1, msg=u"Documento não encontrado."))
Example #18
0
    def post(self, registry_id, image):
        msg = ""
        user = self.get_current_user()

        if not (isAUser(registry_id) and registry_id == user):
            msg = u"Você não tem permissão para editar este desenho."
            self.render("home.html", MSG=msg,NOMEPAG='desenhos', REGISTRY_ID=registry_id)
            return
        
        nomeDesenho = self.get_argument("nomeDesenho", "").replace(" ", "_")
        desenho = self.get_argument("desenho", "")
        desenho_data = _EMPTYDESENHO()
        if registry_id in model.DESENHO:
            desenho_data.update(model.DESENHO[registry_id])
        desenho_data['desenhos'][nomeDesenho] = desenho
        try:
            model.DESENHO[registry_id] = desenho_data
        except:
            self.render("home.html", MSG=u"Erro: %s" % detail, NOMEPAG='desenhos')
            return
Example #19
0
 def get (self, registry_id):
     user = self.get_current_user()
     parent_folder = self.get_argument("folder","")
     if parent_folder:
         parent_id = registry_id+"/"+parent_folder
         self._pai = model.Wiki().retrieve(parent_id)
         parent_name = self._pai.nomepag
         
         if not isAllowedToWriteObject(user, "wiki", registry_id, parent_folder):
              self.write (dict(status=1, msg=u"Você não tem permissão para criar pastas nesta pasta."))
              return
     else:
         parent_name = registry_id+"/"
     
     self._wiki = model.Wiki(nomepag="Nova Pasta", nomepag_id="NovaPasta", parent_folder=parent_folder)
     
     form = dict(
                   action="",
                   nomepag=dict(type="@text",value=""),
                   parent_name=dict(type="@text",value=parent_name),
                   e_ususario=dict(type="@text", value=isAUser(registry_id))
     )
     self.write (dict(status=0, result=form))
Example #20
0
    def post(self):
        user = self.get_current_user()
        tipo = self.get_argument("tipo","")
        str_busca = self.get_argument("str_busca","")
        
        if str_busca:
            if tipo == "T": # busca por tags
                tags = remove_diacritics(str_busca.lower())
                if tags:
                    resultados_busca = {}
                    for tag in list(set(tags.split(","))):
                        temp_busca = findTag(tag.strip())
                        for item in temp_busca:
                            for tupla in temp_busca[item]:
                                registry_id = tupla[2]
                                # se este item ainda não foi encontrado e ele
                                # não faz parte de uma comunidade privada...
                                #if self.isAllowedToAccess(user, registry_id, display_error=False) and \
                                if core.model.isAllowedToAccess(user, registry_id)==0:
                                    if item not in resultados_busca:
                                        resultados_busca[item] = [tupla]
                                    elif tupla not in resultados_busca[item]:
                                        resultados_busca[item].append(tupla)
        
                    for item in resultados_busca:
                        # ordena pela data não formatada
                        resultados_busca[item].sort(key=itemgetter(4), reverse=True)
                        # limita o número de itens exibidos
                        resultados_busca[item] = resultados_busca[item][:_MAX_RESULTADOS_POR_ITEM]
        
                    totais = [len(resultados_busca[key]) for key in resultados_busca]
                    
                    self.render("modules/search/search-results.html", REGISTRY_ID=user, \
                                           NOMEPAG='busca', \
                                           RESULTADOS=resultados_busca, LEGENDA=URL_TO_PAGETITLE, \
                                           NUM_RESULT=sum(totais), \
                                           TAGS_PROCURADAS=str_busca)
                    return
                
            elif tipo == "P": # busca por usuários
                #registry_id = self.get_argument("registry_id","")
                registry_id = str_busca.split(":")[0]
                
                if isAUser(registry_id):
                    self.redirect ("/user/%s"%registry_id)
                    return
                else:
                    #msg = u'Usuário não encontrado.'   
                    msg = 121
                       
            elif tipo == "C": # busca por comunidades
                #registry_id = self.get_argument("registry_id","")
                registry_id = str_busca.split(":")[0]
                
                if isACommunity(registry_id):
                    self.redirect ("/community/%s"%registry_id)
                    return
                else:
                    #msg = u'Comunidade não encontrada.'    
                    msg = 122                   
            else:
                #msg = u'Tipo de busca incorreto.'
                msg = 123

        else:
            #msg = u'Termos de busca não preenchidos.'
            msg = 124
 
        #self.render("popup_msg.html", MSG=msg)
        self.redirect ("/profile/%s?msg=%s" % (user,msg))
Example #21
0
    def get(self, registry_id):
        user = self.get_current_user()

        if user != registry_id:
            raise HTTPError(403)             

        else:
            self._user = core.model.Member().retrieve(user)
            tags = self._user.tags
            friends_list = self._user.getFriendsList()[1]
            friends = [ friend[0] for friend in friends_list ]
            
            tags_comuns = []
            paginas = []
            posts = []
            perfis = []
            comunidades = []
            
            if tags:
                for tag in tags:
                    resultado = findTag(remove_diacritics(tag.lower()))
                    tags_comuns.append((tag,resultado))
                
                for item in tags_comuns:
                    # Páginas encontradas
                    for pagina in item[1]['wiki']:
                        registry_id_found = pagina[2]
                        doc_id_found = pagina[3]
                        
                        if registry_id_found in database.REGISTRY and wiki.model.Wiki.nomepagExists(registry_id_found, doc_id_found.split("/")[1]):
                            if database.REGISTRY[registry_id_found]["privacidade"] == u"Pública":
                                if doc_id_found and registry_id_found != user:
                                    self.inclui (doc_id_found, item[0], paginas)
                            else:
                                if isAUser(registry_id_found):
                                    if doc_id_found and registry_id_found != user and \
                                        registry_id_found in database.REGISTRY[user]["amigos"]:
                                        self.inclui (doc_id_found, item[0], paginas)
                                else:
                                    if doc_id_found and registry_id_found in database.REGISTRY[user]["comunidades"]:
                                        self.inclui (doc_id_found, item[0], paginas)

                    # Blogs encontrados
                    for post in item[1]['blog']:
                        registry_id_found = post[2]
                        doc_id_found = post[3]
                        if registry_id_found in database.REGISTRY and doc_id_found in blog.database.BLOG:
                            if database.REGISTRY[registry_id_found]["privacidade"] == u"Pública":
                                if doc_id_found and registry_id_found != user:
                                    self.inclui (doc_id_found, item[0], posts)
                            else:
                                if core.model.isFriendOrMember(user, registry_id_found):
                                    self.inclui (doc_id_found, item[0], posts)
                                '''
                                if isAUser(post.split("/")[0]):
                                    if doc_id_found and registry_id_found != user and \
                                        post.split("/")[0] in database.REGISTRY[user]["amigos"]:
                                        self.inclui (doc_id_found, item[0], posts)
                                else:
                                    if doc_id_found and registry_id_found in database.REGISTRY[user]["comunidades"]:
                                        self.inclui (doc_id_found, item[0], posts)
                                '''
                    
                    # Usuários encontrados
                    for perfil in item[1]['user']:
                        registry_id_found = perfil[2]
                        if registry_id_found and \
                            registry_id_found in database.REGISTRY and \
                            registry_id_found not in friends and \
                            registry_id_found != user and \
                            registry_id_found not in database.REGISTRY[user]["amigos_convidados"] and \
                            registry_id_found not in database.REGISTRY[user]["amigos_pendentes"] and \
                            database.REGISTRY[registry_id_found]["privacidade"] == u"Pública":
                            self.inclui (registry_id_found, item[0], perfis)

                    # Comunidades encontradas
                    for comunidade in item[1]['community']:
                        registry_id_found = comunidade[2]
                        if registry_id_found  and \
                            registry_id_found in database.REGISTRY and \
                            registry_id_found not in database.REGISTRY[user]["comunidades"] and \
                            database.REGISTRY[registry_id_found]["privacidade"] == u"Pública" and \
                            user not in database.REGISTRY[registry_id_found]["participantes"] and \
                            user not in database.REGISTRY[registry_id_found]["participantes_pendentes"] :
                            self.inclui (registry_id_found, item[0], comunidades)

                    paginas.reverse()
                    posts.reverse()

            self.render("modules/friends/sugest-content.html", NOMEPAG="amigos", \
                        REGISTRY_ID=registry_id, PAGINAS=paginas[:20], POSTS=posts[:20], PERFIL=perfis, \
                        COMUNIDADES=comunidades)
Example #22
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')