本文整理汇总了Python中html.parser.HTMLParser.get_starttag_text方法的典型用法代码示例。如果您正苦于以下问题:Python HTMLParser.get_starttag_text方法的具体用法?Python HTMLParser.get_starttag_text怎么用?Python HTMLParser.get_starttag_text使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类html.parser.HTMLParser
的用法示例。
在下文中一共展示了HTMLParser.get_starttag_text方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: submit
# 需要导入模块: from html.parser import HTMLParser [as 别名]
# 或者: from html.parser.HTMLParser import get_starttag_text [as 别名]
def submit(request):
ret = {}
has_html = False
if request.POST:
d = request.POST.dict()
name = d.get("name", None)
secret_key = d.get("secret_key", None)
if name and is_user_data_valid(name):
parser = HTMLParser()
parser.feed(name)
parser.close()
if parser.get_starttag_text():
ret["flag"] = FLAGS["scoreboard_hacking"][0]
has_html = True
if name and secret_key and not has_html:
if not is_user_data_valid(name, data_type=DataType.SHORT_NAME):
ret["error"] = "Too much data"
elif not is_user_data_valid(secret_key, data_type=DataType.PASSWORD):
ret["error"] = "Too much data"
elif get_leader(name.strip().lower()):
# If they also proved the correct secret key, update that entry in the database
secret_key = hashlib.sha512(secret_key.encode('utf-8')).hexdigest()
leader = get_leader(name.strip().lower(), secret_key)
if leader:
session = get_unauth_session(request)
if not session.lifetime_hacker_bucks:
ret["error"] = "What makes you think you belong on the leaderboard?"
else:
# Update the leader with the new info
# Create a set of claimed flags and combine the loaded leader with the current session
leader_claimed_flags = json.loads(leader.claimed_flags)
claimed_flags = list(set(leader_claimed_flags + session.claimed_flags))
leader.lifetime_hacker_bucks = calc_lifetime_hacker_bucks_from_claimed_flags(claimed_flags)
leader.num_flags_found = len(claimed_flags)
leader.claimed_flags = json.dumps(claimed_flags)
# This will overwrite their hacker bucks. Only an issue if they didn't load first
leader.hacker_bucks = session.hacker_bucks
leader.remote_ip = session.remote_ip
leader.percent_complete = int((leader.num_flags_found) / len(FLAGS) * 100)
leader.playtime = str(timezone.now() - leader.session_creation_time)
leader_purchased_challenges = json.loads(leader.purchased_challenges)
for challenge_id, challenge in session.challenges.items():
if challenge.purchased:
leader_purchased_challenges.append(challenge_id)
leader_purchased_challenges = list(set(leader_purchased_challenges))
leader.purchased_challenges = json.dumps(leader_purchased_challenges)
# Update the changes
leader.save()
else:
ret["error"] = "Already a leader with that name. To update, provide the correct password."
else:
name = name.strip()
session = get_unauth_session(request)
if not session.lifetime_hacker_bucks:
ret["error"] = "What makes you think you belong on the leaderboard?"
else:
leader = LeaderboardEntry()
leader.lifetime_hacker_bucks = session.lifetime_hacker_bucks
leader.num_flags_found = len(session.claimed_flags)
leader.claimed_flags = json.dumps(session.claimed_flags)
leader.hacker_bucks = session.hacker_bucks
leader.percent_complete = int((leader.num_flags_found / len(FLAGS)) * 100)
leader.name = name.lower()
leader.display_name = name
leader.remote_ip = session.remote_ip
leader.session_creation_time = session.creation_time
leader.secret_key = hashlib.sha512(secret_key.encode('utf-8')).hexdigest()
leader.playtime = str(timezone.now() - session.creation_time)
# Get the list of purchased challenge IDs
purchased_challenges = []
for challenge_id, challenge in session.challenges.items():
if challenge.purchased:
purchased_challenges.append(challenge_id)
leader.purchased_challenges = json.dumps(purchased_challenges)
leader.save()
elif not has_html:
ret["error"] = "No name/secret key provided for leaderboard entry"
return HttpResponse(json.dumps(ret))