예제 #1
0
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))
예제 #2
0
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))
예제 #3
0
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))
예제 #4
0
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))