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)
def prepareEvaluations(user, avals): aval_data = [] for aval in avals: dentroDoPeriodo = verificaIntervaloDMY(aval["data_inicio"], aval["data_encerramento"]) == 0 (registry_id, obj_name) = aval["_id"].split("/") aval_data.append((aval["_id"], \ aval["descricao"], \ aval["tipo"], \ aval["data_inicio"], \ aval["data_encerramento"], \ aval["jaAvaliou"] or not dentroDoPeriodo or not isAllowedToReadObject(user, "evaluation", registry_id, obj_name)\ )) return aval_data
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
def get (self, registry_id): user = self.get_current_user() folder = self.get_argument("folder","") page = int(self.get_argument("page","1")) paginas = [] (registry_type, privacidade) = getType(registry_id) # se não estou vendo a pasta raiz... if folder: folder_id = registry_id+"/"+folder self._wiki = model.Wiki().retrieve(folder_id) if self._wiki and self._wiki.is_folder=="S": path = self._wiki.getPagePath() pag_count = self._wiki.countFolderPages() # inclui referência .. para subir na árvore paginas.append(self._wiki) nomefolder = paginas[0]["nomepag"] paginas[0]["nomepag"] = ".." #paginas[0]["owner"] = self._wiki.owner paginas[0]["owner"] = "" paginas[0]["nomepag_id"] = paginas[0]["parent_folder"] paginas[0]["apagar"] = False paginas[0]["alterar"] = False paginas[0]["data_alt"] = "" paginas[0]["data_nofmt"] = "" paginas[0]["alterado_por"] = "" paginas[0]["registry_id"] = registry_id paginas[0]["mover"] = False paginas[0]["escrita"] = permission.model.default_permission("W", "wiki", registry_type, privacidade) paginas[0]["leitura"] = permission.model.default_permission("R", "wiki", registry_type, privacidade) if not isAllowedToReadObject(user, "wiki", registry_id, folder): self.write (dict(status=1, msg=u"Você não tem permissão para listar essa pasta.")) return else: self.write (dict(status=1, msg=u"Pasta não encontrada.")) return else: path = "/"+registry_id+"/" pag_count = model.Wiki.countRootFolderPages(registry_id) (sel_multipla, pags) = prepareFolderPages(user, model.Wiki.listFolderPages(user, registry_id, folder, page, NUM_MAX_WIKIPAGES), registry_type, privacidade) paginas.extend(pags) self.write (dict(status=0, result=dict(paginas=paginas, path=path, pag_count=pag_count, sel_multipla=sel_multipla)))
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)
def get (self, registry_id): user = self.get_current_user() subtype = self.get_argument ("subtype", "") if subtype == "": raise HTTPError (400) return questions = self.prepareQuestionList(question.model.Question.listObjectsBySubtype(subtype, registry_id)) msg = "" links = [] if not questions: msg = u"Você não pode criar %s pois o banco de questões não possui nenhuma questão deste tipo" % TIPO_QUIZ[subtype] if isAllowedToReadObject(user, "question", registry_id): links.append((u"Banco de Questões", "/static/imagens/icones/question32.png", "/question/"+registry_id)) self.render("modules/quiz/quiz-form.html", NOMEPAG=u"Quiz", MSG=msg, \ QUIZ=model.Quiz(), REGISTRY_ID=registry_id, \ QUESTIONS=questions, \ TITLE=u"Criar Quiz ("+TIPO_QUIZ[subtype]+")", \ LINKS=links, SUBTYPE=subtype)
def listPortfolio(self, user, registry_id, page, page_size): # chamadas: # /wiki/portfolio/%s -> lista todas as páginas de todas as pastas paginas = [] for row in database.WIKI.view('wiki/portfolio',startkey=[registry_id, {}],endkey=[registry_id], \ descending="true", skip=(page-1)*page_size, limit=page_size): (registry_id, data_alt, doc_id) = row.key if isAllowedToReadObject(user, "wiki", registry_id, doc_id): # listagem das pastas e páginas não removidas pagina_data = dict() pagina_data.update(row.value) pagina_data["registry_id"] = registry_id pagina_data["doc_id"] = doc_id pagina_data["data_alt"] = short_datetime(row.value["data_alt"], include_year=True) pagina_data["data_nofmt"] = row.value["data_alt"] paginas.append(pagina_data) return paginas
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)