def get(self): user = self.get_current_user() post_id = self.get_argument("id","") self._mblog = model.Mblog().retrieve(post_id) if self._mblog: mblog_data = self._mblog.props() registry_id = mblog_data["registry_id"] (type, privacidade) = getType(registry_id) if type == "member" or type == "community": if isAllowedToAccess(user, registry_id) == 0: mblog_data["apagar"] = (mblog_data["owner"] == user) mblog_data["data_cri"] = human_date(mblog_data["data_cri"]) if "data_original" in mblog_data: mblog_data["data_original"] = human_date(mblog_data["data_original"]) (permission, autocomplete) = autocomplete_mblog(user, registry_id) self.render("modules/mblog/post.html", NOMEPAG="microblog", \ REGISTRY_ID=registry_id, POST=mblog_data, \ MAX_CHR_MBLOG=MAX_CHR_MBLOG, \ PERMISSION=permission, \ AUTOCOMPLETE_LIST=autocomplete) else: raise HTTPError(403) else: # usuario suspenso raise HTTPError(404) else: raise HTTPError(404)
def listMentions(self, user, registry_id, page, page_size): lista_posts = [] for row in database.MBLOG.view('mblog/by_mentioned',startkey=[registry_id, {}],endkey=[registry_id], \ descending="true", skip=(page-1)*page_size , limit=page_size): mblog_data = dict() mblog_data.update(row.value) mblog_data["apagar"] = (row.value["owner"] == user) mblog_data["data_cri"] = human_date(row.value["data_cri"]) mblog_data["data_nofmt"] = row.value["data_cri"] mblog_data["data_original"] = human_date(row.value["data_original"]) lista_posts.append(mblog_data) return lista_posts
def getScrapbookList(self, user, page=1, page_size=1, filter=False): # antiga BaseHandler.get_scrapbook_list (dispatcher.py) # # user: usuário logado, que quer visualizar os recados # filter: indica se deve filtrar apenas as mensagens enviadas por user # se filter=False então lista todos os recados na lista self.recados # senão lista somente os recados enviados por user # retorna lista de (sender_id,msg,data,data_fmt,reply_to) def replyTo (user, user_to, user_from): reply_to = "" if isAUser(user_to): if isFriend(user, user_from): reply_to = user_from else: if isMember(user, user_to): reply_to = user_to return reply_to scraps = [] inicio = (page-1)*page_size fim = min(inicio+page_size, len(self.recados)) for i in range(inicio,fim): if not filter or self.recados[i]["user_from"] == user: sender = self.recados[i]["user_from"] msg = self.recados[i]["recado"] data = self.recados[i]["data"] data_fmt = human_date(data) reply_to = replyTo(user, self.user_to, self.recados[i]["user_from"]) scraps.append( (sender,msg,data,data_fmt,reply_to) ) scraps.sort(key=itemgetter(2),reverse=True) return scraps
def get(self): user = self.get_current_user() mblog_id = self.get_argument("id","") community_id = self.get_argument("community","") registry_id = user if not community_id else community_id self._mblog = model.Mblog().retrieve(mblog_id) if not self._mblog: raise HTTPError(404) return self._mblog.data_cri = human_date(self._mblog.data_cri) (permission, autocomplete) = autocomplete_mblog(user, registry_id) legenda = u"Meu histórico" if user == registry_id else "Mblogs de %s" % registry_id links = [] links.append((legenda, "/static/imagens/icones/history32.png", "/mblog/"+registry_id)) links.append((u"Menções a @"+registry_id, "/static/imagens/icones/at32.png", "/mblog/mentions/"+registry_id)) self.render("modules/mblog/reply.html", NOMEPAG="microblog", \ POST=self._mblog, \ PERMISSION=permission, AUTOCOMPLETE_LIST=autocomplete, \ REGISTRY_ID=registry_id, \ MAX_CHR_MBLOG=MAX_CHR_MBLOG, \ LINKS=links, \ MBLOG_ID=mblog_id)
def listPosts(self, user, registry_id, page, page_size, myself=False, myposts=0): # Lista os posts de registry_id. Se user = registry_id, myself=True lista_posts = [] if myself and myposts!=1: # Estou vendo meu próprio mblog: vejo mensagens que me interessam. for row in database.MBLOG.view('mblog/by_followers',startkey=[registry_id, {}],endkey=[registry_id], \ descending="true", skip=(page-1)*page_size , limit=page_size): mblog_data = dict() mblog_data.update(row.value) mblog_data["apagar"] = (row.value["owner"] == user) mblog_data["data_nofmt"] = row.value["data_cri"] mblog_data["data_cri"] = human_date(row.value["data_cri"]) if "data_original" in row.value: mblog_data["data_original"] = human_date(row.value["data_original"]) lista_posts.append(mblog_data) else: # Estou vendo o mblog de outra pessoa ou de uma comunidade: # só vejo mensagens postadas por ela. for row in database.MBLOG.view('mblog/by_owners',startkey=[registry_id, {}],endkey=[registry_id], \ descending="true", skip=(page-1)*page_size , limit=page_size): mblog_data = dict() mblog_data.update(row.value) mblog_data["apagar"] = (row.value["owner"] == user) mblog_data["data_nofmt"] = row.value["data_cri"] mblog_data["data_cri"] = human_date(row.value["data_cri"]) if "data_original" in row.value: mblog_data["data_original"] = human_date(row.value["data_original"]) if isAUser(registry_id): community_id = "" if registry_id != mblog_data["registry_id"]: community_id = mblog_data["registry_id"] if (not community_id) or \ (community_id in core.database.REGISTRY and \ core.database.REGISTRY[community_id]["privacidade"]!="Privada"): lista_posts.append(mblog_data) else: lista_posts.append(mblog_data) return lista_posts
def get(self): user = self.get_current_user() mblog_id = self.get_argument("id","") self._mblog = model.Mblog().retrieve(mblog_id) if not self._mblog: raise HTTPError(404) return # registry_id é o da mensagem original registry_id = self._mblog.registry_id lista_posts = [] # varre a cadeia de mensagens da conversa while mblog_id: self._prox = model.Mblog().retrieve(mblog_id) if self._prox: post_data = self._prox.props() post_data["data_cri"] = human_date(post_data["data_cri"]) post_data["apagar"] = (post_data["owner"] == user) lista_posts.append(post_data) # procura a próxima (a mensagem que esta respondeu) if "reply_to" in post_data: mblog_id = post_data["reply_to"] else: break else: break legenda = u"Meu histórico" if user == registry_id else "Mblogs de %s" % registry_id links = [] links.append((legenda, "/static/imagens/icones/history32.png", "/mblog/"+registry_id)) links.append((u"Menções a @"+registry_id, "/static/imagens/icones/at32.png", "/mblog/mentions/"+registry_id)) self.render("modules/mblog/mblog.html", NOMEPAG="microblog", \ POSTS=lista_posts, \ PAGE=1, PAGESIZE=len(lista_posts), \ MBLOG_COUNT=len(lista_posts), \ REGISTRY_ID=registry_id, \ PERMISSION=False, AUTOCOMPLETE_LIST={}, \ MAX_CHR_MBLOG=MAX_CHR_MBLOG, \ TITULO="Conversa com @"+registry_id, \ TIPO="talk", \ LINKS=links)
def get_dict_lista_noticias(self, user=None, popup="N"): '''Retorna a lista de dicionários a ser exibida para o usuário. Chamada pelo control-panel ''' # popup="S" retorna somente as notícias que devem ser exibidas agora. lista = [] for n in range(len(self.news)): # popup="S" retorna somente as notícias que devem ser exibidas agora. if popup == "N" or (popup == "S" and self.news[n]["popup"] == "S" and (self.news[n]["dt_validade"] == "" or self.news[n]["dt_validade"] > str(datetime.now())[0:11])): self.news[n]["resumo"] = self.__formatar_texto_html(self.news[n]["resumo"]) self.news[n]["dt_publicacao_fmt"] = human_date(self.news[n]["dt_publicacao"]) self.news[n]["dt_publicacao"] = short_date(self.news[n]["dt_publicacao"]) self.news[n]["id"] = n lista.append(self.news[n]) lista.reverse() return lista
def get_obj_lista_noticias(self, user=None, popup="N"): '''Retorna a lista de objetos a ser exibida para o usuário. Chamada pelo controlador de notícias. ''' # popup="S" retorna somente as notícias que devem ser exibidas agora. lista = [] for n in range(len(self.news)): notic = Noticia(self.__registry_id, n) # popup="S" retorna somente as notícias que devem ser exibidas agora. if popup == "N" or (popup == "S" and notic.popup == "S" and (notic.dt_validade == "" or notic.dt_validade > str(datetime.now())[0:11])): notic.resumo = self.__formatar_texto_html(notic.resumo) notic.dt_publicacao_fmt = human_date(notic.dt_publicacao) notic.dt_publicacao = short_date(notic.dt_publicacao) notic.id = n lista.append(notic) lista.reverse() return lista
def userTag(registry_id, tag): resultado = {} for row in TAGS.view('search/usertag',key=[registry_id, tag]): if row.value["tipo"] not in resultado: resultado[row.value["tipo"]] = [] resultado[row.value["tipo"]].append((row.value["texto"], row.key[0], row.value["registry_id"], row.value["objeto"], row.value["data_cri"], human_date(row.value["data_cri"]))) return resultado
def findTag(tag): resultado = {} for row in TAGS.view('search/searchtags',startkey=[tag], endkey=[tag, {}]): (tag, tipo, objeto) = row.key if tipo not in resultado: resultado[tipo] = [] resultado[tipo].append((row.value["texto"], row.value["owner"], row.value["registry_id"], objeto, row.value["data_cri"], human_date(row.value["data_cri"]))) return resultado