本文整理汇总了Python中user_models.UserData.get_from_url_segment方法的典型用法代码示例。如果您正苦于以下问题:Python UserData.get_from_url_segment方法的具体用法?Python UserData.get_from_url_segment怎么用?Python UserData.get_from_url_segment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类user_models.UserData
的用法示例。
在下文中一共展示了UserData.get_from_url_segment方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get
# 需要导入模块: from user_models import UserData [as 别名]
# 或者: from user_models.UserData import get_from_url_segment [as 别名]
def get(self, username=None, subpath=None):
"""Render a student profile.
Keyword arguments:
email_or_username -- matches the first grouping in /profile/(.+?)/(.*)
subpath -- matches the second grouping, and is ignored server-side,
but is used to route client-side
"""
current_user_data = UserData.current() or UserData.pre_phantom()
if current_user_data.is_pre_phantom and username is None:
# Pre-phantom users don't have any profiles - just redirect them
# to the homepage if they try to view their own.
self.redirect(url_util.create_login_url(self.request.uri))
return
if not current_user_data.is_phantom and username == 'nouser':
# If anybody has bookmarked, or gets redirected to, or otherwise
# finds their way to /profile/nouser while they're logged in, just
# redirect them to their actual profile.
#
# /profile/nouser is only sensible for phantom users and is never
# used to look at another user's profile.
self.redirect(current_user_data.profile_root)
return
if not username:
user_data = current_user_data
elif username == 'nouser' and current_user_data.is_phantom:
user_data = current_user_data
else:
user_data = UserData.get_from_url_segment(username)
if (user_models.UniqueUsername.is_valid_username(username)
and user_data
and user_data.username
and user_data.username != username):
# The path segment is a username and resolved to the user,
# but is not actually their canonical name. Redirect to the
# canonical version.
if subpath:
self.redirect("/profile/%s/%s" % (user_data.username,
subpath))
else:
self.redirect("/profile/%s" % user_data.username)
return
profile = util_profile.UserProfile.from_user(user_data,
current_user_data)
if profile is None:
self.render_jinja2_template('noprofile.html', {})
return
is_self = user_data.user_id == current_user_data.user_id
show_intro = False
show_discussion_intro = False
if is_self:
promo_record = promo_record_model.PromoRecord.get_for_values(
"New Profile Promo", user_data.user_id)
if promo_record is None:
# The user has never seen the new profile page! Show a tour.
if subpath:
# But if they're not on the root profile page, force them.
self.redirect("/profile")
return
show_intro = True
promo_record_model.PromoRecord.record_promo(
"New Profile Promo", user_data.user_id, skip_check=True)
# We also mark the "new discussion promo" as having been seen,
# because it is a sub-set of the full tour, and new users don't
# need to see it twice.
promo_record_model.PromoRecord.record_promo(
"New Discussion Promo", user_data.user_id, skip_check=True)
else:
# The user has already seen the original profile page tour, but
# not necessarily the "new discussion tab" tour.
discussion_promo_record = (
promo_record_model.PromoRecord.get_for_values(
"New Discussion Promo", user_data.user_id))
if discussion_promo_record is None:
# The user hasn't seen the new discussion promo.
show_discussion_intro = True
promo_record_model.PromoRecord.record_promo(
"New Discussion Promo", user_data.user_id,
skip_check=True)
# This is the main capability bit - it indicates whether or not the
# actor can view exercise, video, and goals data on the site for the
# current profile.
is_activity_visible = user_data.is_visible_to(current_user_data)
# Resolve any other miscellaneous capabilities. This may need to be
# changed if ACLing gets signicantly more complicated.
if is_self:
#.........这里部分代码省略.........
示例2: from_url
# 需要导入模块: from user_models import UserData [as 别名]
# 或者: from user_models.UserData import get_from_url_segment [as 别名]
def from_url(self, url):
# Profile URLs are of the form "/profile/segment"
return UserData.get_from_url_segment(url[9:-1])
示例3: from_url
# 需要导入模块: from user_models import UserData [as 别名]
# 或者: from user_models.UserData import get_from_url_segment [as 别名]
def from_url(self, segment):
return UserData.get_from_url_segment(segment)
示例4: get
# 需要导入模块: from user_models import UserData [as 别名]
# 或者: from user_models.UserData import get_from_url_segment [as 别名]
def get(self, email_or_username=None, subpath=None):
"""Render a student profile.
Keyword arguments:
email_or_username -- matches the first grouping in /profile/(.+?)/(.*)
subpath -- matches the second grouping, and is ignored server-side,
but is used to route client-side
"""
current_user_data = UserData.current() or UserData.pre_phantom()
if current_user_data.is_pre_phantom and email_or_username is None:
# Pre-phantom users don't have any profiles - just redirect them
# to the homepage if they try to view their own.
self.redirect(util.create_login_url(self.request.uri))
return
if not email_or_username:
user_data = current_user_data
elif email_or_username == 'nouser' and current_user_data.is_phantom:
user_data = current_user_data
else:
user_data = UserData.get_from_url_segment(email_or_username)
if (user_models.UniqueUsername.is_valid_username(email_or_username)
and user_data
and user_data.username
and user_data.username != email_or_username):
# The path segment is a username and resolved to the user,
# but is not actually their canonical name. Redirect to the
# canonical version.
if subpath:
self.redirect("/profile/%s/%s" % (user_data.username,
subpath))
else:
self.redirect("/profile/%s" % user_data.username)
return
profile = UserProfile.from_user(user_data, current_user_data)
if profile is None:
self.render_jinja2_template('noprofile.html', {})
return
is_self = user_data.user_id == current_user_data.user_id
show_intro = False
if is_self:
promo_record = promo_record_model.PromoRecord.get_for_values(
"New Profile Promo", user_data.user_id)
if promo_record is None:
# The user has never seen the new profile page! Show a tour.
if subpath:
# But if they're not on the root profile page, force them.
self.redirect("/profile")
return
show_intro = True
promo_record_model.PromoRecord.record_promo("New Profile Promo",
user_data.user_id,
skip_check=True)
has_full_access = is_self or user_data.is_visible_to(current_user_data)
tz_offset = self.request_int("tz_offset", default=0)
template_values = {
'show_intro': show_intro,
'profile': profile,
'tz_offset': tz_offset,
'count_videos': setting_model.Setting.count_videos(),
'count_exercises': exercise_models.Exercise.get_count(),
'user_data_student': user_data if has_full_access else None,
'profile_root': user_data.profile_root,
"view": self.request_string("view", default=""),
}
self.render_jinja2_template('viewprofile.html', template_values)