예제 #1
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id, post_id):
        user = self.get_current_user()
        
        doc_id = '/'.join([registry_id, post_id])
        self._blog = model.Blog().retrieve(doc_id, include_removed=True)
        if self._blog:
            # salva variáveis para poder ter acesso a elas depois de remover do banco
            owner = self._blog.owner
            
            # se é uma página e está na lixeira, remove-a
            if self._blog.historico[-1]["conteudo"] == _CONTEUDO_REMOVIDO:
                self._blog.deletePost(user, permanently=True)
                
                # notifica o dono da página excluída
                email_msg = u"Post removido da lixeira: "+doc_id+"\n"+\
                            Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
                Notify.email_notify(owner, user, u"removeu um post seu da lixeira", \
                               message=email_msg, \
                               link="blog/"+registry_id)

                log.model.log(user, u'removeu da lixeira o post', objeto=doc_id, tipo="none")
                
            self.redirect("/blog/deleted/%s" % registry_id )
        else:
            raise HTTPError(404)
예제 #2
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id):
        user = self.get_current_user()
        
        bookmark_id = self.get_argument("id","")
        self._bookmark = model.Bookmarks().retrieve(bookmark_id)
        
        if self._bookmark != None:
            bookmark_owner = self._bookmark.owner
            if not isAllowedToDeleteObject(user, bookmark_owner, registry_id+"/"+bookmark_id):
                raise HTTPError(403)
                return

            url = self._bookmark.url
            self._bookmark.deleteBookmark()
            
            # notifica o dono do arquivo excluído
            email_msg = "Favorito removido: "+url+"\n"+\
                        Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
            Notify.email_notify(bookmark_owner, user, u"removeu um favorito criado por você", \
                           message=email_msg, \
                           link="bookmarks/"+registry_id)
                            
            log.model.log(user, u'removeu um link de favoritos de', objeto=registry_id, tipo="bookmarks")
            
            self.redirect("/bookmarks/%s" % registry_id)
            return
        else:
            raise HTTPError(404)
예제 #3
0
파일: control.py 프로젝트: labase/activnce
    def post(self, registry_id, post_id):
        user = self.get_current_user()
        doc_id = "/".join([registry_id, post_id])
        self._blog = model.Blog().retrieve(doc_id)
        
        if self._blog:
            if isAllowedToComment(user, doc_id, self._blog.owner):
                comment_data = self._blog.addComment(user, str(datetime.now()), self.get_argument("comment",""))
                if comment_data:
                    # notifica o dono do post comentado
                    email_msg = "Post: "+self._blog.titulo+"\n"+\
                                comment_data["comment"]+"\n"+\
                                Notify.assinatura(user, registry_id, comment_data["data_cri"])+"\n\n"
                    Notify.email_notify(self._blog.owner, user, "comentou seu post no Blog", \
                                   message=email_msg, \
                                   link="blog/"+doc_id)
                    
                    log.model.log(user, u'comentou no blog', objeto=doc_id, tipo="blog")
                    self.redirect("/blog/%s" % doc_id)
                
                else:
                    self.render("home.html", MSG=u"O comentário não pode ser vazio.", REGISTRY_ID=registry_id, NOMEPAG="blog")
            else:
                self.render("home.html", MSG=u"Somente amigos de um usuário ou membros de uma comunidade podem comentar.", REGISTRY_ID=registry_id, NOMEPAG="blog")

        else:
            raise HTTPError(404)
예제 #4
0
파일: rest.py 프로젝트: labase/activnce
 def get(self, registry_id, pagina):
     user = self.get_current_user()
     if pagina in ["home", "indice"]:
        self.write (dict(status=1, msg=u"Esta página não pode ser removida."))
     else:
         doc_id = '/'.join([registry_id, pagina])
         self._wiki = model.Wiki().retrieve(doc_id, include_removed=True)
         if self._wiki:
             # salva variáveis para poder ter acesso a elas depois de remover do banco
             owner = self._wiki.owner
             
             # se é uma página e está na lixeira, remove-a
             if self._wiki.is_folder!="S" and self._wiki.historico[-1]["conteudo"] == _CONTEUDO_REMOVIDO:
                 self._wiki.deleteWiki(user, permanently=True)
                 
                 # notifica o dono da página excluída
                 email_msg = u"Página removida da lixeira: "+doc_id+"\n"+\
                             Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
                 Notify.email_notify(owner, user, u"removeu uma página sua da lixeira", \
                                message=email_msg, \
                                link="wiki/"+registry_id)
 
                 log.model.log(user, u'removeu da lixeira a página', objeto=doc_id, tipo="none")
                 
             self.redirect("/wiki/deleted/%s" % registry_id )
         else:
             self.write (dict(status=1, msg=u"Página não encontrada."))
예제 #5
0
파일: rest.py 프로젝트: labase/activnce
    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:
            comentario = dict()
            comentario["comment"] = self.get_argument("comment","")
            comentario["owner"] = user
            comentario["data_cri"] = str(datetime.now())
            
            if comentario["comment"]:
                self._wiki.comentarios.append(comentario)
                self._wiki.save()
                
                # notifica o dono do post comentado
                email_msg = u"Página: "+self._wiki.nomepag+"\n"+\
                            comentario["comment"]+"\n"+\
                            Notify.assinatura(user, registry_id, comentario["data_cri"])+"\n\n"
                Notify.email_notify(self._wiki.owner, user, u"comentou sua página", \
                               message=email_msg, \
                               link="wiki/"+doc_id)
                
                log.model.log(user, u'comentou a página', objeto=doc_id, tipo="wiki")
                self.redirect("/wiki/%s" % doc_id)
                
            else:
                self.write (dict(status=1, msg=u"O comentário não pode ser vazio."))

        else:
            self.write (dict(status=1, msg=u"Página não encontrada."))
예제 #6
0
파일: control.py 프로젝트: labase/activnce
    def incluirParticipantes(self, users):
        msg = ""
        users = users[0].split("\r\n")
        for u in users:
            user_id = u.strip(" ")
            if user_id:
                _member = core.model.Member().retrieve(user_id)
                if _member and _member.isAUser():
                    
                    if user_id not in self._comu.participantes:
                        self._comu.participantes.append(user_id)

                    if self._comu.id not in _member.comunidades:
                        _member.comunidades.append(self._comu.id)
                        _member.save()
                        
                        # notifica o usuário incluído na comunidade
                        email_msg = "Comunidade: "+self._comu.description+" ("+self._comu.id+")\n"+\
                                    u"Clique no botão abaixo para visitá-la.\n\n"+\
                                    Notify.assinatura(self._user, self._comu.id, str(datetime.now()))+"\n\n"
                        Notify.email_notify(user_id, self._user, u"incluiu você como participante de uma comunidade", \
                                       message=email_msg, \
                                       link="community/"+self._comu.id)

                else:
                    msg += user_id + " "

        return "Usuário(s) não encontrado(s): " + msg if msg else "Todos os usuários foram incluídos."
예제 #7
0
파일: control.py 프로젝트: labase/activnce
 def post(self, registry_id, filename):
     user = self.get_current_user()
     comentario = self.get_argument("comment","")
     file_id = "/".join([registry_id, unquote(filename)])
     
     self._file = model.Studio().retrieve(file_id)
     if self._file:
         if isAllowedToComment(user, file_id, self._file.owner):
             if comentario:
                 self._file.newFileComment(user, comentario)
                 
                 # notifica o dono do post comentado
                 email_msg = "Arquivo: "+file_id+"\n"+\
                             self._file.comentarios[-1]["comment"]+"\n"+\
                             Notify.assinatura(user, registry_id, self._file.comentarios[-1]["data_cri"])+"\n\n"
                 Notify.email_notify(self._file.owner, user, "comentou a imagem no studio de games", \
                                message=email_msg, \
                                link="studio/info/"+file_id)
                 
                 log.model.log(user, u'comentou a imagem no studio de games', objeto=file_id, tipo="studio")
                 self.redirect("/studio/info/%s" % file_id)
                 
             else:
                 self.render("home.html", MSG=u"O comentário não pode ser vazio.", REGISTRY_ID=registry_id, NOMEPAG=u'Estúdio')
         else:
             self.render("home.html", MSG=u"Você não tem permissão para comentar este arquivo.", REGISTRY_ID=registry_id, NOMEPAG=u'Estúdio')
     else:
         self.render("home.html", MSG=u"Arquivo não encontrado.", REGISTRY_ID=registry_id, NOMEPAG=u'Estúdio')
예제 #8
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id, name_id):
        user = self.get_current_user()
        
        _va = model.Videoaula.retrieve_by_name_id(registry_id, name_id)
        if _va:
            va_owner = _va.owner
            if not isAllowedToDeleteObject(user, va_owner, registry_id+"/"+name_id):
                raise HTTPError(403)
                return

            va_name = str_limit(remove_html_tags(_va.titulo), 200) 
            _va.delete()
            
            # notifica o dono da videoaula excluída
            email_msg = "Videoaula removida: "+va_name+"\n"+\
                        Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
            Notify.email_notify(va_owner, user, u"removeu uma videoaula criada por você", \
                           message=email_msg, \
                           link="videoaula/"+registry_id)
                            
            log.model.log(user, u'removeu uma videoaula de', objeto=registry_id, tipo="videoaula")
            
            self.redirect("/videoaula/%s" % registry_id)
       
        else:
            raise HTTPError(404)
예제 #9
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id):
        user = self.get_current_user()
        
        glossary_item_id = self.get_argument("item_id","")
        glossary_id = registry_id+"/"+glossary_item_id
        self._glossary = model.Glossary().retrieve(glossary_id)
        
        if self._glossary != None:
            glossary_owner = self._glossary.owner
            if not isAllowedToDeleteObject(user, glossary_owner, glossary_id):
                self.render("home.html", MSG=u"Você não tem permissão para remover este termo deste glossário.", \
                            NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=registry_id)
                return

            term = self._glossary.term
            self._glossary.deleteGlossaryItem()
            
            # notifica o dono do arquivo excluído
            email_msg = u"Item de glossário removido: "+term+"\n"+\
                        Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
            Notify.email_notify(glossary_owner, user, u"removeu um termo de glossário criado por você", \
                           message=email_msg, \
                           link="glossary/"+registry_id)
                            
            log.model.log(user, u'removeu um termo do glossário de', objeto=registry_id, tipo="glossary")
            
            self.redirect("/glossary/%s" % registry_id)

        else:
            raise HTTPError(404)
예제 #10
0
파일: control.py 프로젝트: labase/activnce
 def post(self, registry_id):
     user = self.get_current_user()
     bookmark_id = self.get_argument("id","")
     comentario = self.get_argument("comment","")
     
     self._bookmark = model.Bookmarks().retrieve(bookmark_id)
     if self._bookmark:
         if isAllowedToComment(user, registry_id+"/"+bookmark_id, self._bookmark.owner):
         
             if comentario:
                 self._bookmark.addBookmarkComment(user, comentario)
                
                
                 # notifica o dono do favorito comentado
                 email_msg = "Favorito: "+self._bookmark.url+"\n"+\
                             self._bookmark.comentarios[-1]["comment"]+"\n"+\
                             Notify.assinatura(user, registry_id, self._bookmark.comentarios[-1]["data_cri"])+"\n\n"
                 Notify.email_notify(self._bookmark.owner, user, "comentou seu favorito", \
                                message=email_msg, \
                                link="bookmarks/comment/%s?id=%s"%(registry_id, self._bookmark.id))
                 
                 log.model.log(user, u'comentou um link favorito de', objeto=registry_id, tipo="bookmarks")
                 self.redirect("/bookmarks/comment/%s?id=%s" % (registry_id, self._bookmark.id))
                 
             else:
                 self.render("home.html", MSG=u"O comentário não pode ser vazio.", REGISTRY_ID=registry_id, NOMEPAG='favoritos')
         else:
             raise HTTPError(403)
     else:
         raise HTTPError(404)
예제 #11
0
파일: control.py 프로젝트: labase/activnce
    def get(self, id_community):
        user = self.get_current_user()
        member = self.get_argument('member', "")

        msg = ''
        _comu = core.model.Community().retrieve(id_community)            
        
        if _comu:
            if not _comu.isOwner(user) or not _comu.isMedianteConvite():
                raise HTTPError(403)
                return

            elif not member:
                msg = u'Usuário não especificado!'
             
            else:   
                _member = core.model.Member().retrieve(member)   
                #print [item for item in _member]
                
                if _member:
                    if member in _comu.participantes_pendentes:
                        msg = u'Usuário já convidado! Aguardando resposta...'

                    elif member in _comu.participantes:
                        msg = u'Usuário já está nesta comunidade!'

                    else:
                        _comu.participantes_pendentes.append(member)
                        _comu.save()
                                        
                        _member.comunidades_pendentes.append(id_community)
                        _member.save()
                        
                        # notifica o usuário convidado
                        email_msg = u"Comunidade: "+_comu.description+" ("+id_community+")\n"+\
                                    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.assinatura(user, id_community, str(datetime.now()))+"\n\n"
                        Notify.email_notify(member, user, u"convidou você para participar de uma comunidade", \
                                       message=email_msg, \
                                       link="invites")
    
                        log.model.log(user, u'convidou um participante para a comunidade', objeto=id_community, tipo="community", news=False)
                        
                        msg = u'Convite para usuário enviado com sucesso!'
                        
                else:
                    msg = u'Usuário inexistente!'

        else:
            raise HTTPError(404)
            return
            
        #self.redirect("/profile/%s?msg=%d" % (id_community,err))
        self.render("modules/community/invite-form.html", NOMEPAG='participantes', REGISTRY_ID=id_community, MSG=msg,\
                    TABS=self.setTabs(_comu))
예제 #12
0
파일: control.py 프로젝트: labase/activnce
    def post(self, registry_id, name_id):
        
        user = self.get_current_user()
        msg = ""
        
        _reply = model.Reply()
        _reply.titulo = self.get_argument("titulo","")
        _reply.conteudo = self.get_argument("conteudo","")
        if _reply.conteudo == "":
            msg += u"O conteúdo do tópico não pode ser vazio.<br/>"
        
            self.render("modules/forum/reply-form.html", NOMEPAG="forum", REGISTRY_ID=registry_id, REPLY=_reply, MSG=msg)
            return
                
        else:
            _reply.data_cri = str(datetime.now())
            _reply.data_alt = _reply.data_cri
            _reply.service = "forum"
            _reply.type = "reply"

            doc_id = uuid4().hex

            _reply.registry_id = registry_id
            _reply.owner = user
            _reply.alterado_por = user
            
            _topic = model.Topic().retrieve_by_name_id(registry_id, name_id)
            
            _reply.group_id = _topic.id             # inclui a referênca ao tópico no reply
            _reply.save(id=doc_id)
            
        
            _topic.ultimo_reply = _reply.data_cri   # atualiza data do último reply no tópico
            try:
                _topic.save(id=_topic.id)
            except ResourceConflict:
                # ignora se houve conflito ao salvar o tópico
                pass

            if _topic.receber_email=="S":
                # Notifica o dono do tópico respondido
                assunto = u"respondeu um tópico que você criou no Fórum da comunidade %s" % registry_id
                email_msg = u"Comunidade: "+registry_id+"\n" + \
                            u"Tópico: "+_topic.titulo+"\n\n" + \
                              _reply.titulo+"\n"+ \
                              _reply.conteudo+"\n\n"+ \
                              Notify.assinatura(_reply.owner,registry_id,_reply.data_cri)+"\n\n"
                Notify.email_notify(_topic.owner, _reply.owner, assunto, \
                               message=email_msg, \
                               link="forum/"+registry_id)
            log.model.log(user, u'respondeu um tópico do forum', objeto=registry_id, tipo="forum")
    
            self.redirect("/forum/%s/%s" % (registry_id, name_id))
예제 #13
0
파일: rest.py 프로젝트: labase/activnce
    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: 
            msg = ""
            conteudo_db = ''
            tags_db = []
            if self._wiki.rev != self.get_argument("revision",""):
                # Document Update Conflict.
                msg += u"Conflito ao salvar o documento. Enquanto você editava-o, ele foi alterado por outro usuário.<br/>"
                msg += u"Compare as duas versões abaixo e refaça as alterações que ainda achar pertinentes.<br/>"
                msg += u"Ao final envie novamente o formulário.<br/>"
                
                # preserva os dados alterados pelo outro usuário
                conteudo_db = self._wiki.historico[-1]["conteudo"]
                tags_db = self._wiki.tags
                
            if self.get_argument("conteudo","") != "" :
                conteudo = self.get_argument("conteudo")
            else:
                msg += u"Conteúdo não preenchido<br/>"
                conteudo = " "
            
            old_tags = self._wiki.tags # preserva tags anteriores
            self._wiki.tags = splitTags(self.get_argument("tags",""))     # suas tags
            
            if msg:
                self.write (dict(status=1, msg=msg))
                
            else:
                # registro da atualização
                self._wiki.historico.append(dict(
                                conteudo=conteudo,
                                data_alt = str(datetime.now()),
                                alterado_por = user
                                ))
                
                # salva o documento alterado
                self._wiki.saveWiki(old_tags=old_tags)

                # notifica o dono da página alterada
                email_msg = u"Página alterada: "+doc_id+"\n"+\
                            Notify.assinatura(user, registry_id, self._wiki.historico[-1]["data_alt"])+"\n\n"
                Notify.email_notify(self._wiki.owner, user, u"alterou uma página criada por você", \
                               message=email_msg, \
                               link="wiki/"+doc_id)
                
                log.model.log(user, u'alterou a página', objeto=doc_id, tipo="wiki")
                self.redirect("/wiki/%s" % doc_id)
        else:
            self.write (dict(status=1, msg=u"Documento não encontrado: provavelmente o mesmo foi removido enquanto você editava-o."))
예제 #14
0
파일: control.py 프로젝트: labase/activnce
    def post(self, registry_id):
        user = self.get_current_user()
        id = self.get_argument("id","")
        
        _reply = model.Reply().retrieve(id)
        
        if not _reply or registry_id != _reply.registry_id:
            # chamada inválida (id não existe ou reply não corresponde a um forum do registry_id)
            raise HTTPError(404)
            return
        
        if user != _reply.owner:
            # sem permissão
            raise HTTPError(403)
            return   
           
        _reply.titulo = self.get_argument("titulo","")
        _reply.conteudo = self.get_argument("conteudo","")
        if _reply.conteudo == "":
            msg = u"O conteúdo do tópico não pode ser vazio.<br/>"
            self.render("modules/forum/reply-form.html", NOMEPAG="forum", REGISTRY_ID=registry_id, REPLY=_reply, MSG=msg)
            return
                
        _reply.data_alt = str(datetime.now())
        _reply.alterado_por = user
        _reply.save()
        
        _topic = model.Topic().retrieve(_reply.group_id)
        _topic.ultimo_reply = _reply.data_alt   # atualiza data do último reply no tópico
        try:
            _topic.save()
        except ResourceConflict:
            # ignora se houve conflito ao salvar o tópico
            pass

        if _topic.receber_email=="S":
            # Notifica o dono do tópico respondido
            assunto = u"alterou uma resposta de um tópico que você criou no Fórum da comunidade %s" % registry_id
            email_msg = u"Comunidade: "+registry_id+"\n" + \
                        u"Tópico: "+_topic.titulo+"\n\n" + \
                          _reply.titulo+"\n"+ \
                          _reply.conteudo+"\n\n"+ \
                          Notify.assinatura(_reply.owner,registry_id,_reply.data_alt)+"\n\n"
            Notify.email_notify(_topic.owner, _reply.owner, assunto, \
                           message=email_msg, \
                           link="forum/"+registry_id)
        log.model.log(user, u'alterou uma resposta de um tópico do forum', objeto=registry_id, tipo="forum")

        self.redirect("/forum/%s/%s" % (registry_id, _topic.name_id))
예제 #15
0
파일: model.py 프로젝트: labase/activnce
def batch_notify():
    num = 0
    data_inicio = str(datetime.now())
    for user in database.NOTIFICATION_CHAT:
        if "_design/" in user or user in ['_id', '_rev']:
            continue
        
        # usuário a ser avisado
        assunto = u"Mensagens de chat para você"
        msg = ""
        _notification = NotificationChat().retrieve(user)
        email = _notification.email
        nome_destinatario = _notification.name
        for reg in _notification.registros:
            msg = msg + reg + "\n" + \
                  "----------------------------------------\n\n"
            
        if Notify.enviaEmail (email, assunto, nome_destinatario, msg, "chat/"+user+"/messages"):
            # print "Email enviado com sucesso para " + email
            _notification.delete()
            num = num + 1

        #else:
        #print "Erro no envio do email para " + email

    if LOG_THREADS:
        # se estiver rodando em localhost e ENVIAR_EMAIL_DE_LOCALHOST for False 
        # não envia o email apesar da mensagem do log dizer que enviou
        text_file = open(DIR_RAIZ_ACTIV+LOG_THREADS_FILE, "a+")
        text_file.write(u"[%s - %s] ChatNotifier: %d emails enviados.\n" % (data_inicio, str(datetime.now()), num))
        text_file.close()
        
예제 #16
0
파일: notify.py 프로젝트: labase/activnce
def notify():

    for user in NOTIFICATION:
        if user not in ['_id', '_rev']:
            # usuário a ser avisado
            to_user_data = REGISTRY[user]
            email = to_user_data["email"]
            nome_destinatario = to_user_data["name"]
            assunto = u"Veja o que aconteceu recentemente por aqui"
            msg = ""
            for registro in NOTIFICATION[user]["registros"]:
    
                msg = msg + registro["subject"] + "\n" +\
                            registro["message"] + "\n" +\
                            "\n----------------------------------------\n\n"
                
            if Notify.enviaEmail (email, assunto, nome_destinatario, msg, "user/"+user):
                print "Email enviado com sucesso para " + email
                
                try:
                    del NOTIFICATION[user]
                except:
                    print "Erro na exclusão de registro: " + user
                

            else:
                print "Erro no envio do email para " + email
예제 #17
0
파일: control.py 프로젝트: labase/activnce
    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)
예제 #18
0
파일: rest.py 프로젝트: labase/activnce
    def post(self, registry_id):
        user = self.get_current_user()
        old_parent = self.get_argument("folder","")
        items = self.request.arguments["items"]
        new_parent = self.get_argument("destino","")
            
        if new_parent!="":
            parent_id = '/'.join([registry_id,new_parent])
            test_parent_folder = model.Wiki().retrieve(parent_id)
            if not test_parent_folder:
                msg = u"Impossível mover objetos para pasta inexistente (%s)<br/>" % test_parent_folder.nomepag
                self.write (dict(status=1, msg=msg))
                return

            elif not isAllowedToWriteObject(user, "wiki", registry_id, new_parent):
                msg = u"Você não tem permissão para mover objetos para esta pasta."
                self.write (dict(status=1, msg=msg))
                return
        
        for item in items:
            doc_id = registry_id+"/"+item
            self._wiki = model.Wiki().retrieve(doc_id)
            
            old_path = self._wiki.getPagePath(links=False, includefolder=False)
            self._wiki.moveWiki (registry_id, user, old_parent, new_parent)
            new_path = self._wiki.getPagePath(links=False, includefolder=False)
            
            legenda = "pasta" if self._wiki.is_folder=="S" else u"página"
            # notifica o dono da página movida
            email_msg = legenda+u" movida: "+self._wiki.nomepag+"\n"+\
                        u"De: " + old_path + " Para: " + new_path + "\n" +\
                        Notify.assinatura(user, registry_id, self._wiki.data_alt if self._wiki.is_folder=="S" else self._wiki.historico[-1]["data_alt"])+"\n\n"
            Notify.email_notify(self._wiki.owner, user, u"moveu uma "+legenda+u" criada por você", \
                           message=email_msg, \
                           link="/wiki/%s?folder=%s"%(registry_id, item) if legenda=="pasta" else "wiki/"+doc_id)
            
            
            #log.model.log(user, u'moveu a '+legenda, objeto=doc_id, tipo="wiki")
            if self._wiki.is_folder=="S":
                log.model.log(user, u'moveu a pasta', objeto=registry_id+"/"+self._wiki.nomepag, link="/wiki/%s?folder=%s"%(registry_id, item), tipo="wiki")
            else:
                log.model.log(user, u'moveu a página', objeto=doc_id, tipo="wiki")
            
        self.write (dict(status=0, msg=u"Páginas/Pastas movidas com sucesso."))    
예제 #19
0
파일: rest.py 프로젝트: labase/activnce
    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": 
            self._wiki.restoreVersion(int(versao))
            
            # notifica o dono da página restaurada
            email_msg = u"Página restaurada: "+doc_id+"\n"+\
                        u"Versão: " + versao + "\n" +\
                        Notify.assinatura(user, registry_id, self._wiki.historico[-1]["data_alt"])+"\n\n"
            Notify.email_notify(self._wiki.owner, user, u"restaurou uma versão de uma página criada por você", \
                           message=email_msg, \
                           link="/wiki/%s/%s"%(registry_id, pagina))
            
            log.model.log(user, u'restaurou a página', objeto=doc_id, tipo="wiki")
            
        self.redirect("/wiki/history/%s/%s"%(registry_id,pagina))
예제 #20
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id, post_id):
        user = self.get_current_user()
        versao = self.get_argument("versao","-1")

        doc_id = '/'.join([registry_id, post_id])
        self._blog = model.Blog().retrieve(doc_id, include_removed=True)
        if self._blog: 
            self._blog.restoreVersion(int(versao))
            
            # notifica o dono da página restaurada
            email_msg = u"Post restaurado: "+doc_id+"\n"+\
                        u"Versão: " + versao + "\n" +\
                        Notify.assinatura(user, registry_id, self._blog.historico[-1]["data_alt"])+"\n\n"
            Notify.email_notify(self._blog.owner, user, u"restaurou uma versão de um post criado por você", \
                           message=email_msg, \
                           link="/blog/%s/%s"%(registry_id, post_id))
            
            log.model.log(user, u'restaurou o post', objeto=doc_id, tipo="blog")
            
        self.redirect("/blog/history/%s/%s"%(registry_id,post_id))
예제 #21
0
파일: control.py 프로젝트: labase/activnce
    def incluirParticipantes(self, users):
        msg = ""
        users = users[0].split("\r\n")
        for user1 in users:
            user_id = user1.strip(" ")
            if user_id:
                _member = core.model.Registry().retrieve(user_id)
                if _member and _member.isAUser():
                    if user_id not in self._comu.participantes:
                        self._comu.participantes.append(user_id)

                    if self._comu.id not in _member.comunidades:
                        _member.comunidades.append(self._comu.id)
                        _member.save()
                        
                        # notifica o usuário incluído na comunidade
                        email_msg = "Comunidade: "+self._comu.description+" ("+self._comu.id+")\n"+\
                                    u"Clique no botão abaixo para visitá-la.\n\n"+\
                                    Notify.assinatura(self._user, self._comu.id, str(datetime.now()))+"\n\n"
                        Notify.email_notify(user_id, self._user, u"incluiu você como participante de uma comunidade", \
                                       message=email_msg, \
                                       link="community/"+self._comu.id)

                else:
                    msg += user_id + " "
        
        self._comu.save()

        if msg:
            msg = "Usuários não encontrados: " + msg
        else:
            msg = "Todos os usuários foram incluídos."
        # o dono da comunidade não vai na lista pois ele não pode ser removido
        # o usuário logado também não pode ser removido
        participantes = [x for x in self._comu.participantes if x != self._comu.owner and x != self._user]

        self.render("modules/community/admin.html", REGISTRY_ID=self._comu.id, \
                    NOMEPAG='comunidades', \
                    PARTICIPANTES=participantes, \
                    PENDENTES=self._comu.participantes_pendentes, \
                    MSG=msg)
예제 #22
0
파일: control.py 프로젝트: labase/activnce
 def _send_email(self, quem_convidou, convidado, comunidade):
     assunto = "Convite para participar da comunidade %s na plataforma %s" % (comunidade, PLATAFORMA)
 
     msg_txt = (u"Você foi convidado por %s para participar da comunidade %s no %s e seu email %s não consta entre os usuários cadastrados na plataforma.\n\n" + \
                u"Caso você já seja usuário do %s e esteja cadastrado com outro email, avise %s para que ele possa lhe reenviar o convite para o email correto.\n\n" + \
                u"Para se cadastrar no %s, acesse a intranet da UFRJ e clique em 'ActivUFRJ' na tela principal. \n\n") % \
                (quem_convidou, comunidade, PLATAFORMA, convidado, PLATAFORMA, quem_convidou, PLATAFORMA)
                 
     if Notify.enviaEmail (convidado, assunto, convidado, msg_txt, ""):
        return u"E-mail enviado com sucesso.<br/>"
     else:
        return u"Erro no envio do E-mail.<br/>"    
예제 #23
0
파일: control.py 프로젝트: labase/activnce
def enviaConvite(self, user, convidado, key):
    
    assunto = "Convite para a plataforma %s" % PLATAFORMA
    msgTxt = (u"Você foi convidado por %s para a plataforma educacional %s.\n\n" + \
              u"Clique no botão abaixo ou copie e cole o endereço " + \
              u"http://%s/new/user?mkey=%s\n\n no seu navegador para se cadastrar. \n\n") % \
                  (user, PLATAFORMA, PLATAFORMA_URL, key)

    if Notify.enviaEmail (convidado, assunto, convidado, msgTxt, "new/user?mkey=%s" % key):
       return u"Convite enviado com sucesso.<br/>"
    else:
       return u"Erro no envio do E-mail. Clique em reenviar para tentar novamente.<br/>"    
예제 #24
0
파일: rest.py 프로젝트: labase/activnce
    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."))
예제 #25
0
파일: rest.py 프로젝트: labase/activnce
    def get(self, registry_id, pagina):
        user = self.get_current_user()
        if pagina in ["home", "indice"]:
           self.write (dict(status=1, msg=u"Esta página não pode ser removida."))
        else:
            doc_id = '/'.join([registry_id, pagina])
            self._wiki = model.Wiki().retrieve(doc_id)
            if self._wiki:
                # salva variáveis para poder ter acesso a elas depois de remover do banco
                nomepag = self._wiki.nomepag
                owner = self._wiki.owner
                is_folder = self._wiki.is_folder
                
                legenda = "pasta" if self._wiki.is_folder=="S" else u"página"
                if isAllowedToDeleteObject(user, self._wiki.owner, doc_id, wiki="S"):
                    if self._wiki.is_folder=="S" and self._wiki.folder_items!=[]:
                        self.write (dict(status=1, msg=u"Você não pode apagar uma pasta que não esteja vazia."))
                        return
                    parent_folder = self._wiki.parent_folder 
                    self._wiki.deleteWiki(user)
                    
                    # notifica o dono da página excluída
                    email_msg = legenda + u" removida: "+doc_id+"\n"+\
                                Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
                    Notify.email_notify(owner, user, u"removeu uma %s criada por você"%legenda, \
                                   message=email_msg, \
                                   link="wiki/"+registry_id)

                    if is_folder=="S":
                        log.model.log(user, u'removeu a pasta', objeto=registry_id+"/"+nomepag, tipo="none")
                    else:
                        log.model.log(user, u'removeu a página', objeto=doc_id, tipo="none")
                        
                    self.redirect("/wiki/%s?folder=%s" % (registry_id, parent_folder) )
                else:
                   self.write (dict(status=1, msg=u"Você não tem permissão para remover esta %s."%legenda))
            else:
                self.write (dict(status=1, msg=u"Pasta/página não encontrada."))
예제 #26
0
파일: rest.py 프로젝트: labase/activnce
    def post(self, registry_id):
        user = self.get_current_user()
        items = self.request.arguments["items"] # items é uma lista
        folder = self.get_argument("folder", "")
        
        for item in items:
        
            if item in ["home", "indice"]:
                continue
            doc_id = '/'.join([registry_id, item])
            self._wiki = model.Wiki().retrieve(doc_id)
            if self._wiki:
                # salva variáveis para poder ter acesso a elas depois de remover do banco
                nomepag = self._wiki.nomepag
                owner = self._wiki.owner
                is_folder = self._wiki.is_folder
                
                legenda = "pasta" if self._wiki.is_folder=="S" else u"página"
                if isAllowedToDeleteObject(user, self._wiki.owner, doc_id, wiki="S"):
                    if self._wiki.is_folder=="S" and self._wiki.folder_items!=[]:
                        # Você não pode apagar uma pasta que não esteja vazia.
                        continue
                    parent_folder = self._wiki.parent_folder 
                    self._wiki.deleteWiki(user)
                    
                    # notifica o dono da página excluída
                    email_msg = legenda + u" removida: "+doc_id+"\n"+\
                                Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
                    Notify.email_notify(owner, user, u"removeu uma %s criada por você"%legenda, \
                                   message=email_msg, \
                                   link="wiki/"+registry_id)

                    #log.model.log(user, u'removeu a '+legenda, objeto=doc_id, tipo="none")
                    if is_folder=="S":
                        log.model.log(user, u'removeu a pasta', objeto=registry_id+"/"+nomepag, tipo="none")
                    else:
                        log.model.log(user, u'removeu a página', objeto=doc_id, tipo="none")
        self.redirect("/wiki/%s?folder=%s" % (registry_id, folder) )
예제 #27
0
파일: control.py 프로젝트: labase/activnce
    def get(self, registry_id, filename):
        user = self.get_current_user()
        
        file_id = '/'.join([registry_id,unquote(filename)])
        self._file = model.Studio().retrieve(file_id)
        
        if self._file != None:
            if registry_id in core.database.REGISTRY:
                file_owner = self._file.owner
                if not isAllowedToDeleteObject(user, file_owner, file_id):
                    self.render("home.html", MSG=u"Você não tem permissão para remover este arquivo.", \
                                NOMEPAG=u'Estúdio', REGISTRY_ID=registry_id)
                    return

                (error, detail) = self._file.deleteFile()
                if error:
                    self.render("home.html", MSG=u"Erro: %s" % detail, \
                                NOMEPAG=u'Estúdio', REGISTRY_ID=registry_id)
                    return

                # notifica o dono do arquivo excluído
                email_msg = "Arquivo removido: "+file_id+"\n"+\
                            Notify.assinatura(user, registry_id, str(datetime.now()))+"\n\n"
                Notify.email_notify(file_owner, user, u"removeu uma imagem na studio de games", \
                               message=email_msg, \
                               link="studio/"+registry_id)
                                
                log.model.log(user, u'removeu a imagem no studio de games', objeto=file_id, tipo="none")
                
                self.redirect("/studio/%s" % registry_id)
                return
            else:
               msg = u"Usuário ou comunidade inexistentes."
               self.render("home.html", MSG=msg, \
                           NOMEPAG=u'Estúdio', REGISTRY_ID=user)         
        else:
            self.render("home.html", MSG=u"Arquivo não encontrado.", \
                        NOMEPAG=u'Estúdio', REGISTRY_ID=registry_id)
예제 #28
0
파일: control.py 프로젝트: labase/activnce
 def post(self):
     user = self.get_current_user()
     friend = self.get_argument('friend', "")
     scrap = self.get_argument('scrap', "")
     
     # trata injeção de tags html e acrescenta links nas urls
     scrap = replace(scrap,"<","&lt;")
     scrap = replace(scrap,">","&gt;")
     scrap = processa_url(scrap)
     
     if isFriendOrMember(user, friend):
         msg = ''
         if friend and getType(friend)[0] in ["member" , "community"]:
             if scrap:
                 
                 # saveScrap -----------------------------------------
                 self._scrap = model.Scrapbook().retrieve(friend)
                 if not self._scrap: self._scrap = model.Scrapbook(user_to=friend)
                 
                 self._scrap.saveScrap(user_from=user, scrap=scrap)
                 # ---------------------------------------------------
                 
                 # notifica quem recebeu o recado
                 email_msg = scrap+"\n"+\
                             Notify.assinatura (user, friend, self._scrap.recados[0].data)+"\n\n"
                 Notify.email_notify(friend, user, u"enviou um recado para %s" % friend, \
                                        message=email_msg, link="scrap/"+friend)
                 log.model.log(user, u'enviou recado para', objeto=friend, tipo="user", news=False)
                 self.redirect ("/scrap/%s" % friend)
             
             else:
                 self.render("home.html", MSG=u'Você não escreveu o seu recado.',\
                             NOMEPAG='recados', REGISTRY_ID=friend)
         else:
             raise HTTPError(404)
     else:
         raise HTTPError(403)
예제 #29
0
파일: control.py 프로젝트: labase/activnce
    def post(self, id_community):
        user = self.get_current_user()
        
        _comu = core.model.Community().retrieve(id_community)            
        if _comu:
            convidados = self.get_arguments("users")
            emails = self.get_argument("emails", "")
            
            for convidado in convidados:
                _member = core.model.Member().retrieve(convidado)   

                if _comu.isMedianteConvite():
                    
                    # convida usuário para a comunidade 
                    
                    if convidado not in _comu.participantes_pendentes and convidado not in _comu.participantes:
                        _comu.participantes_pendentes.append(convidado)
                        _comu.save()
                                        
                        _member.comunidades_pendentes.append(id_community)
                        _member.save()
                        
                        # notifica o usuário convidado
                        email_msg = u"Comunidade: "+_comu.description+" ("+id_community+")\n"+\
                                    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.assinatura(user, id_community, str(datetime.now()))+"\n\n"
                        Notify.email_notify(convidado, user, u"convidou você para participar de uma comunidade", \
                                       message=email_msg, \
                                       link="invites")

                elif _comu.isObrigatoria():   # obrigatória
                    
                    # inclui usuário na comunidade
                    
                    if convidado not in _comu.participantes:
                        _comu.participantes.append(convidado)
                        _comu.save()

                    if _comu.id not in _member.comunidades:
                        _member.comunidades.append(_comu.id)
                        _member.save()
                        
                        # notifica o usuário incluído na comunidade
                        email_msg = "Comunidade: "+_comu.description+" ("+_comu.id+")\n"+\
                                    u"Clique no botão abaixo para visitá-la.\n\n"+\
                                    Notify.assinatura(user, _comu.id, str(datetime.now()))+"\n\n"
                        Notify.email_notify(convidado, user, u"incluiu você como participante de uma comunidade", \
                                       message=email_msg, \
                                       link="community/"+_comu.id)                      

            # POST   /members/searchgroup/%s
            # gera novamente a tela com os usuários
            log.model.log(user, u'convidou um grupo de usuários para a comunidade', objeto=id_community, tipo="community", news=False)            
            self.render("modules/community/searchgroup-hidden-form.html", REGISTRY_ID=id_community, EMAILS=emails)
            
        else:
            raise HTTPError(404)            
예제 #30
0
파일: control.py 프로젝트: labase/activnce
    def post(self):
        user = self.get_current_user()
        mblog_id = self.get_argument("mblog_id","")
        registry_id = self.get_argument("registry_id","")

        self._registry = core.model.Registry().retrieve(registry_id)
        if not self._registry:
            raise HTTPError(404)
            return   
            
        if not self._registry.isUserOrMember(user):
            raise HTTPError(403)
            return   
        
        self._mblog = model.Mblog().retrieve(mblog_id)
        self._mblog_novo = model.Mblog()
              
        self._mblog_novo.conteudo = self.get_argument("conteudo","")

        if len (self._mblog_novo.conteudo) > MAX_CHR_MBLOG:
            self._mblog_novo.conteudo = self._mblog_novo.conteudo[:MAX_CHR_MBLOG]
            
        self._mblog_novo.registry_id = registry_id
        self._mblog_novo.owner = user
        self._mblog_novo.data_cri = str(datetime.now())
        
        if self._mblog.conteudo_original:
            # estou compartilhando uma msg já compartilhada
            self._mblog_novo.conteudo_original = self._mblog.conteudo_original
            self._mblog_novo.data_original = self._mblog.data_original
            self._mblog_novo.registry_id_original = self._mblog.registry_id_original
            self._mblog_novo.owner_original = self._mblog.owner_original
            self._mblog_novo.mblog_id_original = self._mblog.mblog_id_original
            
        else:
            # estou compartilhando uma msg que ainda não foi compartilhada
            self._mblog_novo.conteudo_original = self._mblog.conteudo
            self._mblog_novo.data_original = self._mblog.data_cri
            self._mblog_novo.registry_id_original = self._mblog.registry_id
            self._mblog_novo.owner_original = self._mblog.owner
            self._mblog_novo.mblog_id_original = mblog_id
            
        mblog_id_original = self._mblog_novo.mblog_id_original
        self._mblog_novo.tags = self._mblog.tags
        
        # preenche a lista de interessados
        self._mblog_novo.interessados = [registry_id]
        type = self._registry.getType()
        if type=="member":
            self._mblog_novo.interessados.extend(self._registry.amigos)
        elif type=="community":
            self._mblog_novo.interessados.extend(self._registry.participantes)

        # trata injeção de tags html e acrescenta links nas urls
        self._mblog_novo.conteudo = replace(self._mblog_novo.conteudo,"<","&lt;")
        self._mblog_novo.conteudo = replace(self._mblog_novo.conteudo,">","&gt;")
        self._mblog_novo.conteudo = processa_url(self._mblog_novo.conteudo)
        
        ret = processa_arroba(self._mblog_novo.conteudo)
        self._mblog.mencionados = ret["lista_original"]
        self._mblog_novo.interessados.extend(ret["lista_processada"])
        self._mblog_novo.interessados = list(set(self._mblog_novo.interessados))
        self._mblog_novo.conteudo = ret["conteudo"]
        
        mblog_id_novo = uuid4().hex

        try:
            self._mblog_novo.save(id=mblog_id_novo)
            self._mblog.save()
        except Exception as detail:
            self.render("home.html", MSG=u"Erro: %s" % detail, NOMEPAG="microblog")
            return
        
        # acrescenta esse post a lista de compartilhamentos da mensagem original
        self._mblog_original = model.Mblog().retrieve(mblog_id_original)        
        if self._mblog_original:
            self._mblog_original.share_list.append (mblog_id_novo)
            self._mblog_original.save()
        
        # se uma mensagem for compartilhada, notifica seu dono
        email_msg = ret["conteudo_email"]+"\n"+\
                    self._mblog_novo.owner+" em "+short_datetime(self._mblog_novo.data_cri)+"\n\n"+\
                    self._mblog_original.conteudo+"\n"+\
                    Notify.assinatura (self._mblog_original.owner, self._mblog_original.registry_id, self._mblog_original.data_cri)+"\n\n"
        Notify.email_notify(self._mblog_original.owner, \
                            user, u"compartilhou uma mensagem sua no Mblog", \
                            message=email_msg, \
                            link="mblog/"+self._mblog_original.owner)

        log.model.log(user, u'compartilhou um mblog de', objeto=self._mblog_novo.registry_id_original, tipo="mblog", link="/mblog/post?id="+mblog_id_novo)
        self.redirect("/mblog/%s" % registry_id)