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)
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
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
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
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
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
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
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
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"))
def get_resumo(self): if self.resumo == "": return str_limit(self.texto, 200) else: return self.resumo
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)
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))
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 ]