Beispiel #1
0
def prepareQuiz(user, quiz_list):
    for quiz in quiz_list:
        #quiz["titulo"] = str_limit(remove_html_tags(quiz["titulo"]), 200)
        #quiz["descricao"] = str_limit(remove_html_tags(quiz["descricao"]), 200)
        quiz["descricao"] = quiz["descricao"].replace("\n", "<br/>")

        # permissões para remover e alterar um quiz
        quiz["apagar"] = isAllowedToWriteObject(user, "quiz", quiz["registry_id"], quiz["_id"]) and not model.Quiz.quizIsAnswered(quiz["_id"])
        quiz["alterar"] = isAllowedToWriteObject(user, "quiz", quiz["registry_id"], quiz["_id"])
        
        # tipo do quiz em extenso
        quiz["tipo"] = TIPO_QUIZ[quiz["subtype"]]

        # datas formatadas
        quiz["data_fmt"] = short_datetime(quiz["data_cri"])
        if "data_alt" in quiz and quiz["data_alt"]:
            quiz["data_alt"] = short_datetime(quiz["data_alt"])

        # condição para permitir que o quiz seja respondido
        dentro_do_periodo = verificaIntervaloDMY(quiz["data_inicio"], quiz["data_fim"]) == 0    
        
        ja_respondeu = model.Quiz.getQuizAnswers(quiz["_id"], user)
        
        quiz["nao_pode_responder"] =  (ja_respondeu and ja_respondeu["finalizado"]=="S") or \
                                      not dentro_do_periodo or \
                                      not isAllowedToReadObject(user, "quiz", quiz["registry_id"])
                                            
    return sorted(quiz_list, key=itemgetter("data_cri"), reverse=True)
Beispiel #2
0
    def get (self, registry_id):
        user = self.get_current_user()
        folder = self.get_argument("folder","")
        if folder:
            folder_id = registry_id+"/"+folder
            self._pai = model.Wiki().retrieve(folder_id)
            parent_name = self._pai.nomepag
            
            if not isAllowedToWriteObject(user, "wiki", registry_id, folder):
                 self.write (dict(status=1, msg=u"Você não tem permissão para criar páginas nesta pasta."))
                 
                 return

        else:
            parent_name = registry_id+"/"
        self._wiki = model.Wiki(parent_folder=folder)
        
        form = dict(
                      action="",
                      nomepag=dict(type="@text",value=""),
                      tags=dict(type="@text",value=""),
                      parent_name=dict(type="@text",value=registry_id+"/"),
                      conteudo=dict(type="@textarea", value="")
        )
        self.write (dict(status=0, result=form))
Beispiel #3
0
    def searchBookmarksByUrl(self, user, page, page_size, url):
        bookmarks = []
        # Obtem uma página de resultados no BD
        # descending=true para listar os mais recentes primeiro
        # como a árvore é percorrida em sentido inverso, endkey é o documento inicial e startkey é o final.           
        for row in database.BOOKMARKS.view('bookmarks/by_url' ,startkey=[url, {}, {}], endkey=[url], descending="true", skip=(page-1)*page_size , limit=page_size):
            (url, data_alt, bookmark_id) = row.key
            bookmark_data = dict()
            bookmark_data["registry_id"] = row.value["registry_id"]
            bookmark_data["owner"] = row.value["owner"]
            bookmark_data["description"] = row.value["description"]
            bookmark_data["title"] = row.value["title"]
            bookmark_data["url"] = row.value["url"]
            bookmark_data["tags"] = row.value["tags"]
            bookmark_data["id"] = bookmark_id
            
            bookmark_data["alterar"] = isAllowedToWriteObject(user, "bookmarks", row.value["registry_id"])
            bookmark_data["apagar"] = bookmark_data["alterar"] and isAllowedToDeleteObject(user, row.value["owner"], row.value["registry_id"]+"/"+bookmark_id)

           
            bookmark_data["data_nofmt"] = row.value["data_alt"]
            bookmark_data["data_alt"] = short_datetime(row.value["data_alt"])
            bookmark_data["alterado_por"] = row.value["alterado_por"]
            bookmark_data["num_comments"] = _strListSize (len(row.value["comentarios"]), u"comentário")
            #bookmark_data["url_count"] = _strListSize (_urlCount(bookmark_data["url"]), u"referência", genero='F')
            #url_count = _urlCount(bookmark_data["url"])
            bookmark_data["url_count"] = ""
            #if url_count > 1: bookmark_data["url_count"] = u"%d usuários marcaram esta página" % url_count

            bookmarks.append(bookmark_data)
            
        bookmarks = sorted(bookmarks, key=itemgetter("data_nofmt"), reverse = True)
        return bookmarks
Beispiel #4
0
    def get(self, registry_id):
        user = self.get_current_user()
        page = int(self.get_argument("page","1"))
        letra = self.get_argument("letra","")

        glossary = model.Glossary.listGlossary(user, registry_id, page, NUM_MAX_ITENS_GLOSSARIO)
        glossary_count = model.Glossary.countGlossaryByRegistryId(registry_id)
        tags_list = model.Glossary.listAllTags(registry_id)
        links = []
        if isAllowedToWriteObject(user, "glossary", registry_id):
            links.append((u"Criar novo termo", "/static/imagens/icones/new32.png", "/glossary/new/"+registry_id))
        if isUserOrOwner(user, registry_id):
            links.append((u"Alterar permissões deste Glossário", "/static/imagens/icones/permissions32.png", "/permission/glossary/"+registry_id, "", "", True))

        log.model.log(user, u'acessou o glossário de', objeto=registry_id, tipo="glossary", news=False)
                
        self.render("modules/glossary/glossary-list.html", NOMEPAG=NOME_PAG_CLOSSARIO, \
                    REGISTRY_ID=registry_id, CRIAR=isUserOrMember(user,registry_id), \
                    TAG=None, LINKS=links, \
                    FOTO=False, \
                    GLOSSARY=glossary, GLOSSARY_COUNT=glossary_count, \
                    TAGS_LIST = tags_list , \
                    PAGE=page, PAGESIZE=NUM_MAX_ITENS_GLOSSARIO, \
                    TITLE=u"Glossário de %s"%registry_id, \
                    MSG="")
Beispiel #5
0
    def searchGlossaryByItemId(self, user, item_id, page, page_size):
        glossary = []
        for row in database.GLOSSARY.view('glossary/by_item_id', startkey=[item_id], endkey=[item_id, {}], skip=(page-1)*page_size , limit=page_size):
            (item_id, registry_id) = row.key
            glossary_data = dict()
            glossary_data["id"] = glossary_id = registry_id+"/"+item_id
            glossary_data["registry_id"] = registry_id
            glossary_data["owner"] = row.value["owner"]
            glossary_data["item_id"] = item_id
            glossary_data["term"] = row.value["term"]
            glossary_data["definition"] = row.value["definition"]
            glossary_data["tags"] = row.value["tags"]
            
            glossary_data["alterar"] = isAllowedToWriteObject(user, "glossary", registry_id)
            glossary_data["apagar"] = glossary_data["alterar"] and isAllowedToDeleteObject(user, row.value["owner"], glossary_id)
            
            glossary_data["data_nofmt"] = row.value["data_alt"]
            glossary_data["data_alt"] = short_datetime(row.value["data_alt"])
            glossary_data["alterado_por"] = row.value["alterado_por"]

            #term_count = _itemIdCount(glossary_data["item_id"])
            glossary_data["term_count"] = ""
            #if term_count > 1: glossary_data["term_count"] = u"%d usuários definiram este termo" % term_count
            
            glossary.append(glossary_data)
            
        glossary = sorted(glossary, key=itemgetter("data_nofmt"), reverse = True)
        return glossary
Beispiel #6
0
    def post(self, registry_id):
        user = self.get_current_user()
        glossary_item_id = self.get_argument("item_id","")
        glossary_id = registry_id+"/"+glossary_item_id
        glossary_definition = self.get_argument("definition","")

        self._glossary = model.Glossary().retrieve(glossary_id)
        if self._glossary != None:
            #if isAllowedToEditObject(user, self._glossary.owner, glossary_id):
            if isAllowedToWriteObject(user, "glossary", registry_id):
                if not glossary_definition:
                    MSG = u"A definição do termo não pode estar vazia."
                    self.render("modules/glossary/glossary_item-edit.html", \
                                NOMEPAG=NOME_PAG_CLOSSARIO, GLOSSARY=self._glossary,
                                REGISTRY_ID=registry_id, MSG=MSG)
                    return
                else:  # glossary_definition != ""
                    self._glossary.editGlossaryItem(user, glossary_definition, splitTags(self.get_argument("tags","")))
                    log.model.log(user, u'alterou um termo do glossário de', objeto=registry_id, tipo="glossary")
                    self.redirect("/glossary/%s" % registry_id)
            else:
                self.render("home.html", MSG=u"Você não tem permissão para alterar este termo deste glossário.", \
                           NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=user)
        else:
            self.render("home.html", MSG=u"Erro: termo inexistente no glossário!", \
                        NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=registry_id)
Beispiel #7
0
    def get(self, registry_id):
        user = self.get_current_user()
        page = int(self.get_argument("page","1"))

        bookm_count = model.Bookmarks.countBookmarksByRegistryId(registry_id)
        # Se forem todas as tags da página mostrada
        #(bookmarks, tags_list) = model.Bookmarks.listBookmarks(user, registry_id, page, NUM_MAX_FAVORITOS, all_tags=False)
        # Se forem todas as tags
        bookmarks = model.Bookmarks.listBookmarks(user, registry_id, page, NUM_MAX_FAVORITOS)

        tags_list = model.Bookmarks.listAllTags(registry_id)
        links = []
        if isAllowedToWriteObject(user, "bookmarks", registry_id):
            links.append((u"Criar novo favorito", "/static/imagens/icones/new32.png", "/bookmarks/new/"+registry_id))
        if isUserOrOwner(user, registry_id):
            links.append((u"Alterar permissões dos Favoritos", "/static/imagens/icones/permissions32.png", "/permission/bookmarks/"+registry_id, "", "", True))

        log.model.log(user, u'acessou os favoritos de', objeto=registry_id, tipo="bookmarks", news=False)
        
        self.render("modules/bookmarks/bookmarks-list.html", NOMEPAG='favoritos', \
                    REGISTRY_ID=registry_id, CRIAR=isUserOrMember(user,registry_id), \
                    TAG=None, LINKS=links, \
                    FOTO=False, \
                    BOOKMARKS=bookmarks, BOOKM_COUNT=bookm_count, \
                    TAGS = tags_list, \
                    PAGE=page, PAGESIZE=NUM_MAX_FAVORITOS, \
                    TITLE="Favoritos de %s"%registry_id, \
                    MSG="")
Beispiel #8
0
    def get (self, registry_id):
        user = self.get_current_user()
        page = int(self.get_argument("page","1"))
        ordem = self.get_argument("ordem","0")
        tag = self.get_argument("tag","")
        
        if tag:
            topics_count = model.Topic.countObjectsByRegistryIdTags(registry_id, tag)
            topics_list = prepareTopicos(user, model.Topic.listForumTopics(registry_id, page, NUM_MAX_TOPICOS, ordem, tag))            
        else:
            topics_count = model.Topic.countObjectsByRegistryId(registry_id)
            topics_list = prepareTopicos(user, model.Topic.listForumTopics(registry_id, page, NUM_MAX_TOPICOS, ordem))
        
        tags_list = model.Topic.listAllTags(registry_id)

        links = []
        if isAllowedToWriteObject(user, 'forum', registry_id):
            links.append((u"Novo tópico", "/static/imagens/icones/new32.png", "/forum/newtopic/"+registry_id))
        if isUserOrOwner(user, registry_id):
            links.append((u"Alterar permissões deste forum", "/static/imagens/icones/permissions32.png", "/permission/forum/"+registry_id, "", "", True))   
        if ordem == "1":
            links.append(("Exibir mais recentes primeiro", "/static/imagens/icones/descending32.png", "/forum/"+registry_id+"?ordem=0"))
        else:
            links.append(("Exibir mais antigos primeiro", "/static/imagens/icones/ascending32.png", "/forum/"+registry_id+"?ordem=1"))

        log.model.log(user, u'acessou o forum', objeto=registry_id, tipo="forum", news=False)
            
        self.render("modules/forum/forum-list.html", NOMEPAG='forum', \
                                  REGISTRY_ID=registry_id, \
                                  TOPICOS=topics_list, TOPICOS_COUNT=topics_count, \
                                  PAGE=page, PAGESIZE=NUM_MAX_TOPICOS, \
                                  ORDEM=ordem, \
                                  TITULO=u"Forum de %s" % registry_id if not tag else u"Forum de %s com a tag %s" % (registry_id, tag), \
                                  TAGS = tags_list, \
                                  LINKS=links)       
Beispiel #9
0
    def get (self, registry_id):
        user = self.get_current_user()
        mes = self.get_argument("mes","") 
        ano = self.get_argument("ano","")
        
        events_data = {}
        if registry_id in database.AGENDA:
            if mes:
                if not ano:
                    ano = date.today().year
                ano_mes = "%04d%02d" % (int(ano), int(mes))
                if ano_mes in database.AGENDA[registry_id]["events"]:
                    events_data[ano_mes] = database.AGENDA[registry_id]["events"][ano_mes]
            else:
                if ano:
                    for item in database.AGENDA[registry_id]["events"]:
                       if item[0:4] == ano:
                           events_data[item] = database.AGENDA[registry_id]["events"][item]
                else:
                    events_data = database.AGENDA[registry_id]["events"]

        links = []
        if core.model.isUserOrOwner(user, registry_id):
            links.append((u"Alterar permissões desta agenda", "/static/imagens/icones/permissions32.png", "/permission/agenda/"+registry_id, "", "", True))   
 
        log.model.log(user, u'acessou a agenda de', objeto=registry_id, tipo="agenda", news=False)
        self.render("modules/agenda/events.html", REGISTRY_ID=registry_id, EVENTS=events_data, MSG="", NOMEPAG='agenda', \
                            LINKS=links, \
                            ALTERAR=isAllowedToWriteObject(user, "agenda", registry_id))
Beispiel #10
0
    def get (self, registry_id):
        #hora_inicio = datetime.now()
        #print "inicio=", hora_inicio

        user = self.get_current_user()
        _atividades = prepareActivities(user, model.Activity().listActivities(registry_id))
        #print "prepareActivities=", datetime.now()
        
        groupIsfilled = model.Group().GroupIsFilled(registry_id)
        #print "GroupIsFilled=", datetime.now()

        links = []            
        if isUserOrOwner(user, registry_id):
            links.append((u"Alterar permissões", "/static/imagens/icones/permissions32.png", "/permission/activity/"+registry_id, "", "", True))   
        if user == registry_id:
            links.append((u"Atividades pendentes de "+registry_id, "/static/imagens/icones/pendent_activity32.png", "/activity/pendent/"+registry_id, "", "", False))
            
        log.model.log(user, u'acessou as atividades de', objeto=registry_id, tipo="activity", link="/activity/%s"%registry_id, news=False)

        #print "links=", datetime.now()
        self.render("modules/activity/activity-list.html",  NOMEPAG=u"atividades", \
                                     GROUPISFILLED = groupIsfilled, \
                                     ADMIN = isAllowedToWriteObject(user, "activity", registry_id) , \
                                     LINKS=links, \
                                     ATIVIDADES=_atividades, REGISTRY_ID=registry_id, MSG="")
Beispiel #11
0
    def get (self, registry_id, topic_id):
        user = self.get_current_user()
        doc_id = '/'.join([registry_id, topic_id])
        
        _topic = model.Topic.retrieve_by_name_id(registry_id, topic_id)
        
        if _topic == None:
            raise HTTPError(404)
            return
                        
        lista = prepareReplies(user, model.Topic.listObjectByGroup(registry_id, _topic.id))
        
        links=[]
        reg = core.model.Registry().retrieve(user)
        if reg and "bookmarks"  in reg.getServices:                              
            links.append(bookmarks.model.Bookmarks.createBookmarkLink(user, "http://"+PLATAFORMA_URL+self.request.path))        
        #links.append((u"Retornar aos tópicos", "/static/imagens/icones/back32.png", "/forum/"+registry_id))
        if isAllowedToWriteObject(user, 'forum', registry_id):
            links.append(("Responder", "/static/imagens/icones/reply32.png", "/forum/reply/"+doc_id))

        log.model.log(user, u'acessou um tópico do forum', objeto=doc_id, tipo="forum", news=False)

        self.render("modules/forum/topic.html", NOMEPAG='forum', \
                    REGISTRY_ID=registry_id, USER=user, \
                    LINKS=links, \
                    LISTA=lista, TOPIC_ID=topic_id)
Beispiel #12
0
def prepareActivities(user, activities):
    for a in activities:
        a["value"]["titulo"] = str_limit(remove_html_tags(a["value"]["titulo"]), 120)
        
        # somente o dono do tópico ou o dono/admins da comunidade podem apagar um tópico
        a["value"]["apagar"] = isAllowedToDeleteObject(user, a["value"]["owner"], a["value"]["registry_id"]+"/"+a["value"]["_id"])
        
        # somente o dono do objeto pode alterar
        a["value"]["alterar"] = isAllowedToWriteObject(user, "activity", a["value"]["registry_id"])

    return activities
Beispiel #13
0
    def post(self, registry_id):
        msg = ""
        user = self.get_current_user()

        nomepag = self.get_argument("nomepag","")
        if nomepag=="":
            msg += u"* Nome de pasta não preenchido<br/>"
        elif model.Wiki.nomepagExists(registry_id, nomepag):
            msg += u"* Já existe uma página ou pasta com este nome<br/>"

        self._wiki = model.Wiki(nomepag=nomepag)
        self._wiki.is_folder = "S"
        parent_folder = self.get_argument("parent_folder","")
        if parent_folder!="":
            parent_id = '/'.join([registry_id,parent_folder])
            test_parent_folder = model.Wiki().retrieve(parent_id)
            if not test_parent_folder:
                msg += u"* Impossível criar pasta em baixo de uma pasta inexistente (%s)<br/>" % parent_id
            elif not isAllowedToWriteObject(user, "wiki", registry_id, parent_folder):
                msg += u"* Você não tem permissão para criar páginas nesta pasta."

        self._wiki.parent_folder = parent_folder
        #self._wiki.tags = splitTags(self.get_argument("tags",""))
        
        if msg:
            if parent_folder:
                self._pai = model.Wiki().retrieve(registry_id+"/"+parent_folder)
                parent_name = self._pai.nomepag
            else:
                parent_name = registry_id+"/"
            
            self.write (dict(status=1, msg=msg))

        else:
            nomepag_id = uuid4().hex
            doc_id = '/'.join([registry_id,nomepag_id])
            self._wiki.nomepag = nomepag
            self._wiki.nomepag_id = nomepag_id
            self._wiki.user = user
            self._wiki.owner = user
            self._wiki.registry_id = registry_id
            self._wiki.data_cri = str(datetime.now())
            self._wiki.alterado_por = user
            self._wiki.data_alt = self._wiki.data_cri
            
            self._wiki.saveWiki(id=doc_id)

            # inclui a pasta recem criada na lista de filhos do pai
            if parent_folder:
                parent = model.Wiki().retrieve(registry_id+"/"+parent_folder)
                parent.addItemToParent(user, self._wiki.nomepag_id)
            
            log.model.log(user, u'criou a pasta', objeto=registry_id+"/"+self._wiki.nomepag, link="/wiki/%s?folder=%s"%(registry_id,nomepag_id), tipo="wiki")
            self.redirect("/wiki/%s?folder=%s" % (registry_id, parent_folder))
Beispiel #14
0
def prepareFolderPages(user, paginas, registry_type, privacidade):
    # chamadas:
    # only_removed = False
    # /wiki/%s -> lista pastas e páginas não removidas do registry_id
    # only_removed = True
    # /wiki/deleted/%s -> lista todas as páginas removidas
    
    sel_multipla = False
    for pagina in paginas:
        pagina["data_nofmt"] = pagina["data_alt"]
        pagina["data_alt"]   = short_datetime(pagina["data_nofmt"], include_year=True)

        pagina["apagar"]     = isAllowedToDeleteObject(user, pagina["owner"], pagina["doc_id"], wiki="S")
        pagina["alterar"]    = isAllowedToWriteObject(user, "wiki", pagina["registry_id"], nomeobj=pagina["nomepag_id"])
        pagina["ler"]        = isAllowedToReadObject(user, "wiki", pagina["registry_id"], nomeobj=pagina["nomepag_id"])

        parent_id = pagina["registry_id"]+"/"+pagina["parent_folder"]
        parent = model.Wiki().retrieve(parent_id)
        # Vc só pode mover um item para uma pasta se:
        #    vc pode apagar o item e o dono da pasta permite que vc crie items nela.
        pagina["mover"] = pagina["apagar"]
        if parent:
            pagina["mover"] = pagina["mover"] and isAllowedToWriteObject(user, "wiki", pagina["registry_id"], pagina["parent_folder"])
          
        # se houver pelo menos um checkbox, ativa seleção múltipla
        if  pagina["alterar"] and pagina["mover"] and pagina["nomepag_id"] not in ["home", "indice"]:
            sel_multipla = True

        # obtem permissões da página
        _perm = permission.model.Permission().retrieve("wiki/"+pagina["doc_id"])
        if _perm:
            pagina["escrita"] = _perm.escrita
            pagina["leitura"] = _perm.leitura
        else:
            pagina["escrita"] = permission.model.default_permission("W", "wiki", registry_type, privacidade)
            pagina["leitura"] = permission.model.default_permission("R", "wiki", registry_type, privacidade)   
   
                                                      
    #paginas = sorted(paginas, key=itemgetter("data_nofmt"), reverse = True)
    return (sel_multipla, paginas)
Beispiel #15
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."))
Beispiel #16
0
def prepareBlogPosts(user, posts, include_removed=False):
    for post in posts:
        # permissões para remover e alterar um post
        post["alterar"] = isAllowedToWriteObject(user, "blog", post["registry_id"])
        post["apagar"] = post["alterar"] and isAllowedToDeleteObject(user, post["owner"], post["_id"])
        
        # datas formatadas
        post["data_fmt"] = short_datetime(post["data_cri"])
        if "data_alt" in post and post["data_alt"]:
            post["data_alt"] = short_datetime(post["data_alt"])
        
        post["num_comments"] =  model.Blog().retrieve(post["_id"], include_removed).getNumComments()

    return sorted(posts, key=itemgetter("data_cri"), reverse=True)
Beispiel #17
0
def prepareWikiPage(user, pagina):
    # acrescenta permissões para o usuário user e datas formatadas
    pagina["apagar"]       = isAllowedToDeleteObject(user, pagina["owner"], pagina["pag"], wiki="S")
    pagina["alterar"]      = isAllowedToWriteObject(user, "wiki", pagina["registry_id"], nomeobj=pagina["nomepag_id"])
    pagina["ler"]          = isAllowedToReadObject(user, "wiki", pagina["registry_id"], nomeobj=pagina["nomepag_id"])
    pagina["data_cri_fmt"] = short_datetime(pagina["data_cri"])
    pagina["data_alt_fmt"] = short_datetime(pagina["data_alt"])
    pagina["comentar"]     = isAllowedToComment(user, pagina["pag"], pagina["owner"])
    
    for comentario in pagina["comentarios"]:
        comentario["comment"] = comentario["comment"].replace("\r\n", "<br/>")
        comentario["apagar"]   = isAllowedToDeleteComment(user, pagina["registry_id"], comentario["owner"])
        comentario["data_fmt"] = short_datetime(comentario["data_cri"])
    return pagina
Beispiel #18
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."))
Beispiel #19
0
def prepareVideoaulas(user, videoaulas):
    for va in videoaulas:
        va["titulo"] = str_limit(remove_html_tags(va["titulo"]), 200)
        
        # permissões para remover e alterar uma videoaula
        va["alterar"] = isAllowedToWriteObject(user, "videoaula", va["registry_id"], va["name_id"])
        va["apagar"] = isAllowedToDeleteObject(user, va["owner"], va["registry_id"]+"/"+va["name_id"])
        
        # datas formatadas
        va["data_fmt"] = short_datetime(va["data_cri"])
        if "data_alt" in va and va["data_alt"]:
            va["data_alt"] = short_datetime(va["data_alt"])
        
    #return sorted(videoaulas, key=itemgetter("data_cri"), reverse=True)
    return videoaulas
Beispiel #20
0
    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:
            #if isAllowedToEditObject(user, self._bookmark.owner, registry_id+"/"+bookmark_id):
            if isAllowedToWriteObject(user, "bookmarks", registry_id):
                self.render("modules/bookmarks/bookmark-edit.html", \
                            NOMEPAG='favoritos', REGISTRY_ID=registry_id, \
                            BOOKMARK=self._bookmark, MSG="")
            else:
                raise HTTPError(403)

        else:
            raise HTTPError(404)
Beispiel #21
0
    def get (self, registry_id):
      
        user = self.get_current_user()
        _atividades = prepareActivities(user, model.Activity().listfinalizedByRegistry_id(registry_id))
        groupIsfilled = model.Group().GroupIsFilled(registry_id, True)
        
        if _atividades:
            log.model.log(user, u'acessou as atividades finalizadas de', objeto=registry_id, tipo="activity", link="/activity/%s"%registry_id, news=False)

            self.render("modules/activity/activity-finalized.html",  NOMEPAG=u"atividades", \
                                     ADMIN = isAllowedToWriteObject(user, "activity", registry_id) , \
                                     GROUPISFILLED = groupIsfilled, \
                                     ATIVIDADES=_atividades, REGISTRY_ID=registry_id, MSG="")
        else:
            
            raise HTTPError(404)
Beispiel #22
0
    def listBookmarks(self, user, registry_id, page, page_size, tag=None):
        bookmarks = []
        if tag:
            view_name = 'bookmarks/by_registry_id_and_tag'
            start_key = [registry_id, tag]
            end_key = [registry_id, tag, {}, {}]
        else:
            view_name = 'bookmarks/by_registry_id'
            start_key = [registry_id]
            end_key = [registry_id, {}, {}]

        # Obtem uma página de resultados no BD
        # descending=true para listar os mais recentes primeiro
        # como a árvore é percorrida em sentido inverso, endkey é o documento inicial e startkey é o final.     
        for row in database.BOOKMARKS.view(view_name, startkey=end_key,endkey=start_key, descending="true", skip=(page-1)*page_size , limit=page_size):
            if tag:
                (registry_id, tag_found, data_alt, bookmark_id) = row.key
            else:
                (registry_id, data_alt, bookmark_id) = row.key

            bookmark_data = dict()
            bookmark_data["registry_id"] = registry_id
            bookmark_data["owner"] = row.value["owner"]
            bookmark_data["description"] = row.value["description"]
            bookmark_data["title"] = row.value["title"]
            bookmark_data["url"] = row.value["url"]
            bookmark_data["tags"] = row.value["tags"]
            bookmark_data["id"] = bookmark_id
            
            # _file = Files().retrieve(file_id)
            bookmark_data["alterar"] = isAllowedToWriteObject(user, "bookmarks", registry_id)
            bookmark_data["apagar"] = bookmark_data["alterar"] and isAllowedToDeleteObject(user, row.value["owner"], registry_id+"/"+bookmark_id)
            
            
            bookmark_data["data_nofmt"] = row.value["data_alt"]
            bookmark_data["data_alt"] = short_datetime(row.value["data_alt"])
            bookmark_data["alterado_por"] = row.value["alterado_por"]
            bookmark_data["num_comments"] = _strListSize (len(row.value["comentarios"]), u"comentário")
            #bookmark_data["url_count"] = _strListSize (url_count, u"referência", genero='F')
            url_count = _urlCount(bookmark_data["url"])
            bookmark_data["url_count"] = ""
            if url_count > 1: bookmark_data["url_count"] = u"%d usuários marcaram esta página" % url_count
            
            bookmarks.append(bookmark_data)
        return bookmarks
Beispiel #23
0
 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:
         #if isAllowedToEditObject(user, self._glossary.owner, glossary_id):
         if isAllowedToWriteObject(user, "glossary", registry_id):
             self.render("modules/glossary/glossary_item-edit.html", \
                         NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=registry_id, \
                         GLOSSARY=self._glossary, MSG="")
         else:
             self.render("home.html", MSG=u"Você não tem permissão para alterar este termo deste glossário.", \
                        NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=user)
     else:
         self.render("home.html", MSG=u"Erro: termo inexistente no glossário!", \
                     NOMEPAG=NOME_PAG_CLOSSARIO, REGISTRY_ID=registry_id)
Beispiel #24
0
    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."))    
Beispiel #25
0
 def listGlossary(self, user, registry_id, page, page_size, tag=None):
     glossary = []
     if tag:
         view_name = 'glossary/by_registry_id_and_tag'
         start_key = [registry_id, tag]
         end_key = [registry_id, tag, {}]
     else:
         view_name = 'glossary/by_registry_id'
         start_key = [registry_id]
         end_key = [registry_id, {}]
         
     # Obtem uma página de resultados no BD
     for row in database.GLOSSARY.view(view_name, startkey=start_key, endkey=end_key, skip=(page-1)*page_size , limit=page_size):
         if tag:
             (registry_id, tag_found, glossary_item_id) = row.key
         else:
             (registry_id, glossary_item_id) = row.key
             
         glossary_data = dict()
         glossary_data["id"] = glossary_id = registry_id+"/"+glossary_item_id
         glossary_data["registry_id"] = registry_id
         glossary_data["owner"] = row.value["owner"]
         glossary_data["item_id"] = glossary_item_id
         glossary_term = glossary_data["term"] = row.value["term"]
         glossary_data["key_to_compare"] = remove_diacritics(" ".join(glossary_term.lower().split()))
         glossary_data["definition"] = row.value["definition"]
         glossary_data["tags"] = row.value["tags"]
         
         # _file = Files().retrieve(file_id)
         glossary_data["alterar"] = isAllowedToWriteObject(user, "glossary", registry_id)
         glossary_data["apagar"] = glossary_data["alterar"] and isAllowedToDeleteObject(user, row.value["owner"], glossary_id)
         
         glossary_data["data_nofmt"] = row.value["data_alt"]
         glossary_data["data_alt"] = short_datetime(row.value["data_alt"])
         glossary_data["alterado_por"] = row.value["alterado_por"]
         #glossary_data["term_count"] = _strListSize (term_count, u"referência", genero='F')
         term_count = _itemIdCount(glossary_data["item_id"])
         glossary_data["term_count"] = ""
         if term_count > 1: glossary_data["term_count"] = u"%d usuários definiram este termo" % term_count
         
         glossary.append(glossary_data)
         
     glossary = sorted(glossary, key=itemgetter("key_to_compare"), reverse = False)
     return glossary
Beispiel #26
0
 def get (self, registry_id):
     user = self.get_current_user()
     page = int(self.get_argument("page","1"))
     quiz_count = model.Quiz.countObjectsByRegistryId(registry_id)
     lista_quiz = prepareQuiz(user, model.Quiz.listObjects(registry_id, page, NUM_MAX_QUIZ))
     
     links = []
     if isAllowedToReadObject(user, "question", registry_id):
         links.append((u"Banco de questões", "/static/imagens/icones/question32.png", "/question/"+registry_id))
     if isAllowedToWriteObject(user, "quiz", registry_id):
         links.append((u"Novo teste de múltipla escolha", "/static/imagens/icones/add_test32.png", "/quiz/new/%s?subtype=Teste"%registry_id))
         links.append ((u"Nova pesquisa de opinião", "/static/imagens/icones/add_survey32.png", "/quiz/new/%s?subtype=Survey"%registry_id))
      
     log.model.log(user, u'acessou a lista de quizes de', objeto=registry_id, tipo="quiz", news=False)
              
     self.render("modules/quiz/quiz-list.html", NOMEPAG="Quiz", REGISTRY_ID=registry_id, \
                                           IS_ADMIN=isUserOrOwner(user, registry_id), \
                                           QUIZ=lista_quiz, QUIZ_COUNT=quiz_count, \
                                           PAGE=page, PAGESIZE=NUM_MAX_QUIZ, \
                                           LINKS=links)
Beispiel #27
0
    def get (self, registry_id):
        user = self.get_current_user()
        page = int(self.get_argument("page","1"))
         
        posts_count = model.Blog.countPostsByRegistryId(registry_id)
        lista_posts = prepareBlogPosts(user, model.Blog.listBlogPosts(registry_id, page, NUM_MAX_POSTS))

        links = []            
        if isAllowedToWriteObject(user, "blog", registry_id):
            links.append(("Novo post", "/static/imagens/icones/new32.png", "/blog/new/"+registry_id))
        if isUserOrOwner(user, registry_id):
            links.append((u"Ver lixeira", "/static/imagens/icones/recycle32.png", "/blog/deleted/"+registry_id))
            links.append((u"Alterar permissões deste blog", "/static/imagens/icones/permissions32.png", "/permission/blog/"+registry_id, "", "", True))   
         
        log.model.log(user, u'acessou o blog de', objeto=registry_id, tipo="blog", news=False)
                 
        self.render("modules/blog/blog.html", NOMEPAG="blog", REGISTRY_ID=registry_id, \
                                              ARCHIVE=model.Blog.get_blog_archive(registry_id), \
                                              SORTEDKEYS=sortedKeys, MESES=_meses, \
                                              POSTS=lista_posts, POSTS_COUNT=posts_count, \
                                              PAGE=page, PAGESIZE=NUM_MAX_POSTS, \
                                              LINKS=links)
Beispiel #28
0
    def post(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:
            #if isAllowedToEditObject(user, self._bookmark.owner, registry_id+"/"+bookmark_id):
            if isAllowedToWriteObject(user, "bookmarks", registry_id):
                
                self._bookmark.editBookmark(user, self.get_argument("title",""), 
                                    self.get_argument("description",""), 
                                    splitTags(self.get_argument("tags","")))

                log.model.log(user, u'alterou um link de favoritos de', objeto=registry_id, tipo="bookmarks")
                self.redirect("/bookmarks/%s" % registry_id)
                
            else:
                raise HTTPError(403)

        else:
            raise HTTPError(404)
Beispiel #29
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))
Beispiel #30
0
    def get (self, registry_id, id):
        user = self.get_current_user()
        page = int(self.get_argument("page","1"))
        #id = self.get_argument("id","")
        
        links = []
        
        _quiz= model.Quiz().retrieve(id)
        
        if _quiz:
            _questions = _quiz.listQuestionsInQuiz()
               
            if isAllowedToWriteObject(user, "quiz", registry_id):
                links.append(("Alterar este quiz", "/static/imagens/icones/edit32.png", "/quiz/edit/%s/%s"%(registry_id,id)))

            self.render("modules/quiz/quiz-answerkey.html", NOMEPAG="Quiz",  \
                        REGISTRY_ID=registry_id, \
                        QUIZ=_quiz, TITLE=u"Quiz de %s" % registry_id, \
                        QUESTIONS=_questions, \
                        IMGLIST=["resp_a.gif", "resp_b.gif", "resp_c.gif", "resp_d.gif", "resp_e.gif"], \
                        LINKS=links)              
        else:                   
            raise HTTPError(404)