def posts(request, user_id): store = get_store(request) mlist_fqdn = request.GET.get("list") if mlist_fqdn is None: mlist = None return HttpResponse("Not implemented yet", status=500) else: mlist = store.get_list(mlist_fqdn) if mlist is None: raise Http404("No archived mailing-list by that name.") if not is_mlist_authorized(request, mlist): return render(request, "errors/private.html", { "mlist": mlist, }, status=403) # Get the user's full name try: client = mailmanclient.Client('%s/3.0' % settings.MAILMAN_REST_SERVER, settings.MAILMAN_API_USER, settings.MAILMAN_API_PASS) mm_user = client.get_user(user_id) except HTTPError: raise Http404("No user with this ID: %s" % user_id) except mailmanclient.MailmanConnectionError: fullname = None else: fullname = mm_user.display_name if not fullname: fullname = store.get_sender_name(user_id) # Get the messages and paginate them messages = store.get_messages_by_user_id(user_id, mlist_fqdn) try: page_num = int(request.GET.get('page', "1")) except ValueError: page_num = 1 messages = paginate(messages, page_num) for message in messages: message.myvote = message.get_vote_by_user_id( request.session.get("user_id")) context = { 'user_id': user_id, 'mlist' : mlist, 'messages': messages, 'fullname': fullname, } return render(request, "user_posts.html", context)
def index(request): now = datetime.datetime.now() store = get_store(request) lists = [ l for l in store.get_lists() if not settings.FILTER_VHOST or show_mlist(l, request) ] initials = set() for mlist in lists: if mlist.archive_policy != ArchivePolicy.private: mlist.is_private = False mlist.can_view = True else: mlist.is_private = True if is_mlist_authorized(request, mlist): mlist.can_view = True else: mlist.can_view = False if mlist.created_at and \ now - mlist.created_at <= datetime.timedelta(days=30): mlist.is_new = True else: mlist.is_new = False initials.add(mlist.name[0]) # sorting sort_mode = request.GET.get('sort') if sort_mode == "active": lists.sort(key=lambda l: l.recent_threads_count, reverse=True) elif sort_mode == "popular": lists.sort(key=lambda l: l.recent_participants_count, reverse=True) elif sort_mode == "creation": lists.sort(key=lambda l: l.created_at, reverse=True) else: sort_mode = None context = { 'view_name': 'all_lists', 'all_lists': lists, 'initials': sorted(list(initials)), 'sort_mode': sort_mode, } return render(request, "index.html", context)
def search(request, page=1): """ Returns messages corresponding to a query """ results_per_page = 10 store = get_store(request) query = request.GET.get("query") mlist_fqdn = request.GET.get("list") sort_mode = request.GET.get('sort') if mlist_fqdn is None: mlist = None else: mlist = store.get_list(mlist_fqdn) if mlist is None: raise Http404("No archived mailing-list by that name.") if not is_mlist_authorized(request, mlist): return render(request, "error-private.html", { "mlist": mlist, }, status=403) if not store.search_index: return render(request, "error-nosearch.html", {"mlist": mlist}) if not query: return render(request, "search_results.html", { 'mlist' : mlist, "query": query or "", 'messages': [], 'total': 0, 'sort_mode': sort_mode, }) try: page_num = int(request.GET.get('page', "1")) except ValueError: page_num = 1 sortedby = None reverse = False if sort_mode == "date-asc": sortedby = "date" elif sort_mode == "date-desc": sortedby = "date" reverse = True query_result = store.search(query, mlist_fqdn, page_num, results_per_page, sortedby=sortedby, reverse=reverse) total = query_result["total"] messages = query_result["results"] for message in messages: set_message_votes(message, request.user) paginator = SearchPaginator(messages, 10, total) messages = paginate(messages, page_num, paginator=paginator) context = { 'mlist' : mlist, "query": query, 'messages': messages, 'total': total, 'sort_mode': sort_mode, } return render(request, "search_results.html", context)
def search(request, page=1): """ Returns messages corresponding to a query """ results_per_page = 10 store = get_store(request) query = request.GET.get("query") mlist_fqdn = request.GET.get("list") sort_mode = request.GET.get('sort') if mlist_fqdn is None: mlist = None else: mlist = store.get_list(mlist_fqdn) if mlist is None: raise Http404("No archived mailing-list by that name.") if not is_mlist_authorized(request, mlist): return render(request, "errors/private.html", { "mlist": mlist, }, status=403) if not store.search_index: return render(request, "errors/nosearch.html", {"mlist": mlist}) if not query: return render( request, "search_results.html", { 'mlist': mlist, "query": query or "", 'messages': [], 'total': 0, 'sort_mode': sort_mode, }) try: page_num = int(request.GET.get('page', "1")) except ValueError: page_num = 1 sortedby = None reverse = False if sort_mode == "date-asc": sortedby = "date" elif sort_mode == "date-desc": sortedby = "date" reverse = True query_result = store.search(query, mlist_fqdn, page_num, results_per_page, sortedby=sortedby, reverse=reverse) total = query_result["total"] messages = query_result["results"] for message in messages: message.myvote = message.get_vote_by_user_id( request.session.get("user_id")) paginator = SearchPaginator(messages, 10, total) messages = paginate(messages, page_num, paginator=paginator) context = { 'mlist': mlist, "query": query, 'messages': messages, 'total': total, 'sort_mode': sort_mode, } return render(request, "search_results.html", context)