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 editBookmark(self, user, newtitle, newdesc, newtags): # preserva tags anteriores old_tags = self.tags self.title = newtitle self.description = newdesc self.tags = newtags self.alterado_por = user self.data_alt = str(datetime.now()) self.save() # compara as tags anteriores com as modificadas, atualizando a lista de tags no BD data_tag = str(datetime.now()) if self.title: nome = self.title else: url = self.url url = remove_special_chars(remove_diacritics(url.replace(" ","_"))) nome = url for tag in self.tags: if tag not in old_tags: addTag(tag, self.registry_id, user, "bookmarks", self.id, nome, data_tag) for tag in old_tags: if tag not in self.tags: removeTag(remove_diacritics(tag.lower()), "bookmarks", self.id)
def saveGlossaryItem(self, id=None): self.save(id=id) # atualiza tabela de tags # vai para o tags.model data_tag = str(datetime.now()) for tag in self.tags: addTag(tag, self.registry_id, self.owner, "glossary", self.id, self.term, data_tag)
def processa_tags (id, mblog_data): tag_list = list(set(re.findall(r"#\w+", mblog_data["conteudo"], re.UNICODE))) data_tag = str(datetime.now()) for i in range(len(tag_list)): tag_list[i] = tag_list[i].lstrip('#') addTag(tag_list[i], mblog_data["registry_id"], mblog_data["owner"], "mblog", id, mblog_data["conteudo"], data_tag) return tag_list
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: msg = "" self._blog.titulo = self.get_argument("titulo","") if self._blog.titulo == "": msg += u"O título do Post não pode ser vazio.<br/>" old_tags = self._blog.tags self._blog.tags = splitTags(self.get_argument("tags","")) self._blog.conteudo = self.get_argument("conteudo","") if self._blog.conteudo == "": msg += u"O conteúdo do Post não pode ser vazio.<br/>" if msg: self.render("modules/blog/blog-form.html", NOMEPAG="blog", REGISTRY_ID=registry_id, BLOGDATA=self._blog, MSG=msg) return else: data_tag = str(datetime.now()) for tag in self._blog.tags: if tag not in old_tags: addTag(tag, registry_id, user, "blog", doc_id, self._blog.titulo, data_tag) for tag in old_tags: if tag not in self._blog.tags: removeTag(remove_diacritics(tag.lower()), "blog", doc_id) # registro da atualização self._blog.data_alt = str(datetime.now()) self._blog.alterado_por = user historico_inicial = dict() historico_inicial["data_alt"] = self._blog.data_alt historico_inicial["alterado_por"] = user historico_inicial["conteudo"] = self._blog.conteudo self._blog.historico.append(historico_inicial) # limita o número de versões no histórico em BLOG_HISTORY_SIZE history_len = len(self._blog.historico) if history_len > BLOG_HISTORY_SIZE: inicio = history_len - BLOG_HISTORY_SIZE self._blog.historico = self._blog.historico[inicio:history_len] self._blog.save() log.model.log(user, u'alterou o blog', objeto=doc_id, tipo="blog") self.redirect("/blog/%s" % doc_id) else: self.render("home.html", MSG=u"Post não encontrado: ele pode ter sido removido por outro usuário enquanto você editava-o", REGISTRY_ID=registry_id, NOMEPAG="blog") return
def restoreVersion (self, versao): self.historico.append(dict( conteudo = self.historico[versao]["conteudo"], data_alt = self.historico[versao]["data_alt"], alterado_por = self.historico[versao]["alterado_por"] )) self.save() # recria tags do documento restaurado se ele foi removido anteriormente if self.historico[-2]["conteudo"] == _CONTEUDO_REMOVIDO: for tag in self.tags: addTag(tag, self.registry_id, self.owner, "wiki", self.id, self.nomepag, self.historico[-1]["data_alt"])
def post(self, registry_id): user = self.get_current_user() self._blog = model.Blog() msg = "" self._blog.titulo = self.get_argument("titulo","") if self._blog.titulo == "": msg += u"O título do Post não pode ser vazio.<br/>" else: self._blog.post_id = remove_special_chars(remove_diacritics(self._blog.titulo.replace(" ","_"))) if self._blog.post_id == "": msg += u"Título do Post inválido<br/>" self._blog.tags = splitTags(self.get_argument("tags","")) self._blog.conteudo = self.get_argument("conteudo","") if self._blog.conteudo == "": msg += u"O conteúdo do Post não pode ser vazio.<br/>" if msg: self.render("modules/blog/blog-form.html", NOMEPAG="blog", REGISTRY_ID=registry_id, BLOGDATA=self._blog, MSG=msg) return else: self._blog.data_cri = str(datetime.now()) self._blog.data_alt = self._blog.data_cri # A chave _id do documento no couchdb é nome/pagina doc_id = '/'.join([registry_id,self._blog.post_id]) self._blog.registry_id = registry_id self._blog.owner = user historico_inicial = dict() historico_inicial["data_alt"] = self._blog.data_alt historico_inicial["alterado_por"] = user historico_inicial["conteudo"] = self._blog.conteudo self._blog.historico.append(historico_inicial) try: self._blog.save(id=doc_id) except Exception as detail: self.render("modules/blog/blog-form.html", NOMEPAG="blog", REGISTRY_ID=registry_id, BLOGDATA=self._blog, \ MSG=u"Já existe um post com este título.") return data_tag = str(datetime.now()) for tag in self._blog.tags: addTag(tag, registry_id, user, "blog", doc_id, self._blog.titulo, data_tag) log.model.log(user, u'escreveu no blog', objeto=doc_id, tipo="blog") self.redirect("/blog/%s" % doc_id)
def post(self, registry_id): user = self.get_current_user() msg = "" _topic = model.Topic() _topic.titulo = self.get_argument("titulo","") if _topic.titulo == "": msg += u"O título do tópico não pode ser vazio.<br/>" else: _topic.name_id = remove_special_chars(remove_diacritics(_topic.titulo.replace(" ","_"))) if _topic.name_id == "": msg += u"Título do tópico inválido<br/>" if model.Topic.exists(registry_id, _topic.name_id): msg += u"Já existe um tópico com este nome" _topic.tags = splitTags(self.get_argument("tags","")) _topic.conteudo = self.get_argument("conteudo","") if _topic.conteudo == "": msg += u"O conteúdo do tópico não pode ser vazio.<br/>" if msg: self.render("modules/forum/forum-form.html", NOMEPAG="forum", REGISTRY_ID=registry_id, TOPICO=_topic, MSG=msg) return else: _topic.receber_email = self.get_argument("receber_email", "N") _topic.data_cri = str(datetime.now()) _topic.data_alt = _topic.data_cri _topic.service = "forum" _topic.type = "topic" doc_id = uuid4().hex _topic.registry_id = registry_id _topic.owner = user _topic.alterado_por = user try: _topic.save(id=doc_id) except Exception as detail: self.render("modules/forum/forum-form.html", NOMEPAG="forum", REGISTRY_ID=registry_id, TOPICO=_topic, \ MSG=u"Já existe um tópico neste forum com este título.") return data_tag = str(datetime.now()) for tag in _topic.tags: addTag(tag, registry_id, user, "forum", registry_id+"/"+_topic.name_id, _topic.titulo, data_tag) log.model.log(user, u'criou um tópico no forum', objeto=registry_id, tipo="forum") self.redirect("/forum/%s" % registry_id)
def saveFile(self, id, files): self.save(id=id) # cria versões da imagem # ícone N -> thumbnail P (imagem recortada) 30X40 imagem_n = thumbnail(files["arquivo"][0]["body"], "P") if not imagem_n: return False # ícone P -> thumbnail G (imagem recortada) 120X160 imagem_p = thumbnail(files["arquivo"][0]["body"], "G") if not imagem_p: return False # ícone M -> resizeImage P (imagem reduzida) 240X180 preservando aspect ratio original imagem_m = resizeImage(files["arquivo"][0]["body"], "P") if not imagem_m: return False # ícone G -> resizeImage G (imagem reduzida) 1024X768 preservando aspect ratio original imagem_g = resizeImage(files["arquivo"][0]["body"], "G") if not imagem_g: return False database.STUDIO.put_attachment(database.STUDIO[id], imagem_n, "imgN.png", "image/png") database.STUDIO.put_attachment(database.STUDIO[id], imagem_p, "imgP.png", "image/png") database.STUDIO.put_attachment(database.STUDIO[id], imagem_m, "imgM.png", "image/png") database.STUDIO.put_attachment(database.STUDIO[id], imagem_g, "imgG.png", "image/png") # atualiza o espaço ocupado por arquivos deste usuário/comunidade #_reg = core.model.Registry().retrieve(self.registry_id) #_reg.updateUploadSize(len(files["arquivo"][0]["body"])) # atualiza tabela de tags # vai para o tags.model data_tag = str(datetime.now()) for tag in self.tags: nome = self.description if self.description else self.filename addTag(tag, self.registry_id, self.owner, "studio", id, nome, data_tag) return True
def saveBookmark(self, id=None): self.save(id=id) # atualiza tabela de tags # vai para o tags.model data_tag = str(datetime.now()) for tag in self.tags: if self.title: nome = self.title else: url = self.url url = remove_special_chars(remove_diacritics(url.replace(" ","_"))) nome = url addTag(tag, self.registry_id, self.owner, "bookmarks", self.id, nome, data_tag)
def saveTopic(self, id=None, old_tags=None): if id==None: self.save() else: self.save(id=id) # compara as tags anteriores com as modificadas, atualizando a lista de tags no BD data_tag = str(datetime.now()) for tag in self.tags: if old_tags==None or tag not in old_tags: addTag(tag, self.registry_id, self.owner, "forum", self.registry_id+"/"+self.name_id, self.titulo, data_tag) if old_tags != None: for tag in old_tags: if tag not in self.tags: removeTag(remove_diacritics(tag.lower()), "forum", registry_id+"/"+name_id)
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 saveWiki(self, id=None, old_tags=None): if id==None: self.save() else: self.save(id=id) # folders não possuem tags if self.is_folder!="S": # compara as tags anteriores com as modificadas, atualizando a lista de tags no BD data_tag = str(datetime.now()) for tag in self.tags: if old_tags==None or tag not in old_tags: addTag(tag, self.registry_id, self.owner, "wiki", self.id, self.nomepag, data_tag) if old_tags != None: for tag in old_tags: if tag not in self.tags: removeTag(remove_diacritics(tag.lower()), "wiki", self.id)
def editGlossaryItem(self, user, newdef, newtags): # preserva tags anteriores old_tags = self.tags self.definition = newdef self.tags = newtags self.alterado_por = user self.data_alt = str(datetime.now()) self.save() # compara as tags anteriores com as modificadas, atualizando a lista de tags no BD data_tag = str(datetime.now()) for tag in self.tags: if tag not in old_tags: addTag(tag, self.registry_id, user, "glossary", self.id, self.term, data_tag) for tag in old_tags: if tag not in self.tags: removeTag(remove_diacritics(tag.lower()), "glossary", self.id)
def saveFile(self, id, files, attachment=True): self.save(id=id) if attachment: database.FILES.put_attachment(database.FILES[id], files["arquivo"][0]["body"], self.filename, files["arquivo"][0]["content_type"]) # atualiza o espaço ocupado por arquivos deste usuário/comunidade _reg = core.model.Registry().retrieve(self.registry_id) _reg.updateUploadSize(len(files["arquivo"][0]["body"])) # folders não possuem tags if self.is_folder != "S": # atualiza tabela de tags data_tag = str(datetime.now()) for tag in self.tags: nome = self.description if self.description else self.filename addTag(tag, self.registry_id, self.owner, "file", id, nome, data_tag)
def editFile(self, user, newdesc, newtags): # preserva tags anteriores old_tags = self.tags self.description = newdesc self.tags = newtags self.alterado_por = user self.data_alt = str(datetime.now()) self.save() # compara as tags anteriores com as modificadas, atualizando a lista de tags no BD data_tag = str(datetime.now()) nome = self.description if self.description else self.filename for tag in self.tags: if tag not in old_tags: addTag(tag, self.registry_id, user, "file", self.id, nome, data_tag) for tag in old_tags: if tag not in self.tags: removeTag(remove_diacritics(tag.lower()), "file", self.id)