def user_profile(request, username, page=1): """ User's profile page. """ try: profile = UserProfile(slug=username) user = get_object_or_404(User, id=profile.id) except: # Couldn't find by slug, try looking up by username (old style urls) # If found, redirect to new URL # If we no longer want to support the old URLs, we can remove this user = get_object_or_404(User, username=username) profile = UserProfile(id=user.id) return redirect("/profile/%s" % profile.slug, permanent=True) following = profile.followed_by(request.user.id) if request.user.is_authenticated() else False page_size = 20 page = int(page) if page else 1 query = {"user": profile.id} filter_type = request.GET["type"] if "type" in request.GET else None activity, apage= get_maximal_collapsed_activity(query=query, page_size=page_size, page=page, filter_type=filter_type) notes, npage = get_maximal_collapsed_activity(query=query, page_size=page_size, page=page, filter_type="add_note") contributed = activity[0]["date"] if activity else None scores = db.leaders_alltime.find_one({"_id": profile.id}) score = int(scores["count"]) if scores else 0 user_texts = scores.get("texts", None) if scores else None sheets = db.sheets.find({"owner": profile.id, "status": {"$in": LISTED_SHEETS }}, {"id": 1, "datePublished": 1}).sort([["datePublished", -1]]) next_page = apage + 1 if apage else None next_page = "/profile/%s/%d" % (username, next_page) if next_page else None return render_to_response("profile.html", { 'profile': profile, 'following': following, 'activity': activity, 'sheets': sheets, 'notes': notes, 'joined': user.date_joined, 'contributed': contributed, 'score': score, 'scores': scores, 'user_texts': user_texts, 'filter_type': filter_type, 'next_page': next_page, "single": False, }, RequestContext(request))
def user_profile(request, username, page=1): """ User's profile page. """ user = get_object_or_404(User, username=username) profile = UserProfile(user.id) page_size = 50 page = int(page) if page else 1 query = {"user": user.id} filter_type = request.GET["type"] if "type" in request.GET else None activity, page = get_maximal_collapsed_activity(query=query, page_size=page_size, page=page, filter_type=filter_type) contributed = activity[0]["date"] if activity else None scoreDoc = db.leaders_alltime.find_one({"_id": user.id}) score = int(scoreDoc["count"]) if scoreDoc else 0 sheets = db.sheets.find({"owner": user.id, "status": {"$in": LISTED_SHEETS }}) next_page = page + 1 if page else None next_page = "/contributors/%s/%d" % (username, next_page) if next_page else None return render_to_response('profile.html', {'profile': user, 'extended_profile': profile, 'activity': activity, 'sheets': sheets, 'joined': user.date_joined, 'contributed': contributed, 'score': score, 'filter_type': filter_type, 'next_page': next_page, "single": False, }, RequestContext(request))
def global_activity(request, page=1): """ Recent Activity page listing all recent actions and contributor leaderboards. """ page = int(page) page_size = 100 if "api" in request.GET: q = {} else: q = {"method": {"$ne": "API"}} filter_type = request.GET.get("type", None) activity, page = get_maximal_collapsed_activity(query=q, page_size=page_size, page=page, filter_type=filter_type) next_page = page + 1 if page else None next_page = "/activity/%d" % next_page if next_page else None next_page = "%s?type=%s" % (next_page, filter_type) if next_page and filter_type else next_page email = request.user.email if request.user.is_authenticated() else False return render_to_response('activity.html', {'activity': activity, 'filter_type': filter_type, 'leaders': top_contributors(), 'leaders30': top_contributors(30), 'leaders7': top_contributors(7), 'leaders1': top_contributors(1), 'email': email, 'next_page': next_page, }, RequestContext(request))
def splash(request): """ Homepage a.k.a. Splash page. """ daf_today = daf_yomi(datetime.now()) daf_tomorrow = daf_yomi(datetime.now() + timedelta(1)) parasha = this_weeks_parasha(datetime.now()) metrics = db.metrics.find().sort("timestamp", -1).limit(1)[0] activity, page = get_maximal_collapsed_activity(query={}, page_size=5, page=1) # Pull language setting from Accept-Lanugage header langClass = 'hebrew' if request.LANGUAGE_CODE in ('he', 'he-il') else 'english' return render_to_response('static/splash.html', { "activity": activity, "metrics": metrics, "headline": randint(1,3), #random choice of 3 headlines "daf_today": daf_today, "daf_tomorrow": daf_tomorrow, "parasha": parasha, "langClass": langClass, }, RequestContext(request))