Пример #1
0
    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)
Пример #2
0
 def listBlogPosts(self, registry_id, page, page_size, control_panel=False, only_removed=False):
     lista_posts = []
     
     if only_removed:
         for row in database.BLOG.view('blog/removed_data',startkey=[registry_id, {}],endkey=[registry_id], \
                                       descending="true", skip=(page-1)*page_size , limit=page_size):
               (registry_id, data_alt, doc_id) = row.key
               blog_data = dict()
               blog_data.update(row.value)
               blog_data["registry_id"]  = registry_id
               blog_data["doc_id"]       = doc_id
               lista_posts.append(blog_data)
     else:
         for row in database.BLOG.view('blog/all_data',startkey=[registry_id, {}], endkey=[registry_id], descending="true", skip=(page-1)*page_size , limit=page_size):
             # (registry_id, post_id) = row.key
             blog_data = dict()
             blog_data.update(row.value)
             
             if control_panel:
                 blog_data["conteudo"]  = remove_html_tags(blog_data["conteudo"])
                 if len(blog_data["conteudo"]) > 100:
                     blog_data["conteudo"] = str_limit(blog_data["conteudo"], 100)
                 blog_data["data_fmt"] = short_datetime(blog_data["data_cri"])                                
             lista_posts.append(blog_data)
         
     return lista_posts
Пример #3
0
def prepareTopicos(user, topicos):
    prepared_topics = []
    for t in topicos:
        tmp = dict()
        tmp["titulo"] = str_limit(remove_html_tags(t["titulo"]), 120)
        tmp["owner"] = t["owner"]
        tmp["name_id"] = t["name_id"]
        
        # somente o dono do tópico ou o dono/admins da comunidade podem apagar um tópico
        tmp["apagar"] = isAllowedToDeleteObject(user, t["owner"], t["registry_id"]+"/"+t["_id"])
        
        # somente o dono do objeto pode alterar
        tmp["alterar"] = (user == t["owner"])

        # map/reduce para contar o número de replies do tópico
        tmp["num_replies"] = model.Topic.countObjectsByGroup(t["_id"])

        # datas formatadas
        tmp["data_cri"] = t["data_cri"]
        tmp["data_cri_fmt"] = short_datetime(t["data_cri"])
        
        tmp["ultimo_reply"] = t["ultimo_reply"]
        tmp["ultimo_reply_fmt"] = short_datetime(tmp["ultimo_reply"]) if tmp["ultimo_reply"] else "-"
        
        prepared_topics.append(tmp)
      
    return prepared_topics
Пример #4
0
 def listWikiFolders(self, registry_id):
     folders = [("", "/")]
     for row in database.WIKI.view("wiki/partial_data",startkey=[registry_id],endkey=[registry_id, {}]):
           (registry_id, doc_id) = row.key
           if row.value["is_folder"]=="S":
               folders.append((row.value["nomepag_id"], str_limit(row.value["nomepag"], 50)))
                       
     #folders = sorted(folders, key=itemgetter("data_nofmt"), reverse = True)
     return folders
Пример #5
0
 def listFolders(self, user, registry_id, view_name):
     folders = [("", "/")]
     for row in database.FILES.view(view_name,startkey=[registry_id],endkey=[registry_id, {}]):
           (registry_id, doc_id) = row.key
           if row.value["is_folder"]=="S":
               folders.append((doc_id.split("/")[1], str_limit(row.value["filename"], 50)))
     
     #folders = sorted(folders, key=itemgetter("data_nofmt"), reverse = True)
     return folders
Пример #6
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
Пример #7
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
Пример #8
0
 def get_blog_archive(self, registry_id):
     archive = dict()
     for row in database.BLOG.view('blog/archive',startkey=[registry_id,{}],endkey=[registry_id], descending="true"):
         ano = row.key[1]
         mes = row.key[2]
         data_cri = row.key[3]
         post_id = row.key[4]
         titulo = str_limit(row.value, 30)
         
         if ano not in archive:
             archive[ano] = {mes: [(post_id, titulo)]}
         elif mes not in archive[ano]:
             archive[ano][mes] = [(post_id, titulo)]
         else:
             archive[ano][mes].append ((post_id, titulo))
     return archive
Пример #9
0
 def get_resumo_sem_html(self):
     if self.resumo == "":
         tmpResumo = remove_html_tags(self.texto.replace("<br>", "\n"))
         return str_limit(tmpResumo, 200)
     else:
         return remove_html_tags(self.resumo.replace("<br>", "\n"))
Пример #10
0
 def get_resumo(self):
     if self.resumo == "":
         return str_limit(self.texto, 200)
     else:
         return self.resumo
Пример #11
0
    def post(self, registry_id, name_id):
        user = self.get_current_user()
        _va = model.Videoaula().retrieve_by_name_id(registry_id, name_id)
        if _va:
            old_tags = _va.tags
            _va.tags = splitTags(self.get_argument("tags",""))
         
            data_tag = str(datetime.now())
            for tag in _va.tags:
                if tag not in old_tags:
                    addTag(tag, registry_id, user, "videoaula", registry_id+"/"+name_id, str_limit(remove_html_tags(_va.titulo), 50), data_tag)

            for tag in old_tags:
                if tag not in _va.tags:
                    removeTag(remove_diacritics(tag.lower()), "videoaula", id)

            _va.data_alt = str(datetime.now())
            _va.alterado_por = user      
            _va.save()
            
            log.model.log(user, u'alterou uma videoaula de', objeto=registry_id, tipo="videoaula")    
            self.redirect(r"/videoaula/edit/%s/%s" % (registry_id, name_id))       
                         
        else:
            raise HTTPError(404)
Пример #12
0
    def post(self, registry_id):
        user = self.get_current_user()
        _va = model.Videoaula()
        msg = ""
        
        _va.titulo = self.get_argument("name","")
        if _va.titulo == "":
            msg += u"Nome da videoaula não preenchido.<br/>"
                
        _va.arqvideo = self.get_argument("arqvideo","")
        if _va.arqvideo == "":
            msg += u"Arquivo de vídeo não preenchido.<br/>"

        _va.tags = splitTags(self.get_argument("tags",""))

        _va.service = "videoaula"
        _va.type = "videoaula"
        _va.registry_id = registry_id
        _va.name_id = remove_special_chars(remove_diacritics(_va.titulo.replace(" ","_")))

        if model.Videoaula.exists(_va.registry_id, _va.name_id):
            msg += u"Já existe uma videoaula com este nome"

        if msg:
            self.render("modules/videoaula/videoaula-form.html",  NOMEPAG="videoaulas", VIDEODATA=_va, \
                        FOLDERS = files.model.Files.listFolders(user, registry_id, "files/all_data"), \
                        REGISTRY_ID=registry_id, MSG=msg)  
            return
                
        else:
            doc_id = uuid4().hex
            _va.owner = user
            #_va.alterado_por = user

            _va.data_cri = str(datetime.now())
            _va.data_alt = _va.data_cri
            _va.save(id=doc_id)
            
            # Adiciona tags da videoaula ao banco de tags.
            data_tag = str(datetime.now())
            for tag in _va.tags:
                addTag(tag, registry_id, user, "videoaula", registry_id+"/"+_va.name_id, str_limit(remove_html_tags(_va.titulo), 50), data_tag)
            
            log.model.log(user, u'criou videoaula em', objeto=registry_id, tipo="videoaula",link="/videoaula/%s/%s"%(registry_id,_va.name_id))
            self.redirect("/videoaula/edit/%s/%s" % (registry_id,_va.name_id))
Пример #13
0
 def prepareQuestionList(self, question_list):
     return [ { "_id": item["_id"], 
                "registry_id": item["registry_id"], 
                "enunciado": str_limit(remove_html_tags(item["enunciado"]), 200) }         
              for item in question_list ]