本文整理汇总了Python中models.suggestion.Suggestion类的典型用法代码示例。如果您正苦于以下问题:Python Suggestion类的具体用法?Python Suggestion怎么用?Python Suggestion使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Suggestion类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: post
def post(self):
self._require_admin()
accept_keys = map(int, self.request.POST.getall("accept_keys[]"))
reject_keys = map(int, self.request.POST.getall("reject_keys[]"))
accepted_suggestion_futures = [Suggestion.get_by_id_async(key) for key in accept_keys]
rejected_suggestion_futures = [Suggestion.get_by_id_async(key) for key in reject_keys]
accepted_suggestions = map(lambda a: a.get_result(), accepted_suggestion_futures)
rejected_suggestions = map(lambda a: a.get_result(), rejected_suggestion_futures)
MatchSuggestionAccepter.accept_suggestions(accepted_suggestions)
all_suggestions = accepted_suggestions
all_suggestions.extend(rejected_suggestions)
for suggestion in all_suggestions:
if suggestion.key.id() in accept_keys:
suggestion.review_state = Suggestion.REVIEW_ACCEPTED
if suggestion.key.id() in reject_keys:
suggestion.review_state = Suggestion.REVIEW_REJECTED
suggestion.reviewer = self.user_bundle.account.key
suggestion.reviewer_at = datetime.datetime.now()
ndb.put_multi(all_suggestions)
self.redirect("/admin/suggestions/match/video/review")
开发者ID:BowlesCR,项目名称:the-blue-alliance,代码行数:27,代码来源:admin_match_video_suggestions_review_controller.py
示例2: createApiWriteSuggestion
def createApiWriteSuggestion(cls, author_account_key, event_key, affiliation, auth_types):
"""
Create a suggestion for auth keys request.
Returns status (success, no_affiliation, bad_event)
"""
if not affiliation:
return 'no_affiliation'
if event_key:
event = Event.get_by_id(event_key)
if event:
suggestion = Suggestion(
author=author_account_key,
target_model="api_auth_access",
target_key=event_key,
)
auth_types = [int(type) for type in auth_types]
clean_auth_types = filter(lambda a: a in AuthType.write_type_names.keys(), auth_types)
# If we're requesting keys for an official event, filter out everything but videos
# Admin can still override this at review time, but it's unlikely
if event.event_type_enum in EventType.SEASON_EVENT_TYPES:
clean_auth_types = filter(lambda a: a == AuthType.MATCH_VIDEO, clean_auth_types)
suggestion.contents = {
'event_key': event_key,
'affiliation': affiliation,
'auth_types': clean_auth_types,
}
suggestion.put()
return 'success'
else:
return 'bad_event'
else:
return 'bad_event'
示例3: post
def post(self):
self._require_login()
match_key = self.request.get("match_key")
youtube_url = self.request.get("youtube_url")
youtube_id = None
regex1 = re.match(r".*youtu\.be\/(.*)", youtube_url)
if regex1 is not None:
youtube_id = regex1.group(1)
else:
regex2 = re.match(r".*v=([a-zA-Z0-9_-]*)", youtube_url)
if regex2 is not None:
youtube_id = regex2.group(1)
if youtube_id is not None:
suggestion = Suggestion(
author=self.user_bundle.account.key,
target_key=match_key,
target_model="match",
)
suggestion.contents = {"youtube_videos": [youtube_id]}
suggestion.put()
self.redirect('/suggest/match/video?match_key=%s&success=1' % match_key)
示例4: createMatchVideoSuggestion
def createMatchVideoSuggestion(self):
user_bundle = UserBundle()
match = Match.query().fetch(1)[0] #probably a cleaner way to do this
suggestion = Suggestion(
author=user_bundle.account.key,
target_key=match.key_name,
target_model="match")
suggestion.contents = {"youtube_videos": [self.YOUTUBE_ID]}
suggestion.put()
示例5: createEventWebcastSuggestion
def createEventWebcastSuggestion(self):
user_bundle = UserBundle()
event = Event.query().fetch(1)[0]
suggestion = Suggestion(
author=user_bundle.account.key,
target_key=event.key_name,
target_model="event",
)
suggestion.contents = {"webcast_url": self.YOUTUBE_URL}
suggestion.put()
示例6: TestMatchSuggestionAccepter
class TestMatchSuggestionAccepter(unittest2.TestCase):
def setUp(self):
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_datastore_v3_stub()
self.testbed.init_memcache_stub()
ndb.get_context().clear_cache() # Prevent data from leaking between tests
self.testbed.init_taskqueue_stub(root_path=".")
self.account = Account(
email="[email protected]",
)
self.account.put()
self.suggestion = Suggestion(
author=self.account.key,
contents_json="{\"youtube_videos\":[\"123456\"]}",
target_key="2012ct_qm1",
target_model="match"
)
self.suggestion.put()
self.event = Event(
id="2012ct",
event_short="ct",
year=2012,
event_type_enum=EventType.REGIONAL,
)
self.event.put()
self.match = Match(
id="2012ct_qm1",
alliances_json="""{"blue": {"score": -1, "teams": ["frc3464", "frc20", "frc1073"]}, "red": {"score": -1, "teams": ["frc69", "frc571", "frc176"]}}""",
comp_level="qm",
event=self.event.key,
year=2012,
set_number=1,
match_number=1,
team_key_names=[u'frc69', u'frc571', u'frc176', u'frc3464', u'frc20', u'frc1073'],
youtube_videos=["abcdef"]
)
self.match.put()
def tearDown(self):
self.testbed.deactivate()
def test_accept_suggestions(self):
MatchSuggestionAccepter.accept_suggestion(self.match, self.suggestion)
match = Match.get_by_id("2012ct_qm1")
self.assertTrue("abcdef" in match.youtube_videos)
self.assertTrue("123456" in match.youtube_videos)
示例7: createOffseasonEventSuggestion
def createOffseasonEventSuggestion(cls, author_account_key, name, start_date, end_date, website, address):
"""
Create a suggestion for offseason event. Returns (status, failures):
('success', None)
('validation_failure', failures)
"""
failures = {}
if not name:
failures['name'] = "Missing event name"
if not start_date:
failures['start_date'] = "Missing start date"
if not end_date:
failures['end_date'] = "Missing end date"
if not website:
failures['website'] = "Missing website"
if not address:
failures['venue_address'] = "Missing address"
start_datetime = None
end_datetime = None
if start_date:
try:
start_datetime = datetime.strptime(start_date, "%Y-%m-%d")
except ValueError:
failures['start_date'] = "Invalid start date format (year-month-date)"
if end_date:
try:
end_datetime = datetime.strptime(end_date, "%Y-%m-%d")
except ValueError:
failures['end_date'] = "Invalid end date format (year-month-date)"
if start_datetime and end_datetime and end_datetime < start_datetime:
failures['end_date'] = "End date must not be before the start date"
if failures:
return 'validation_failure', failures
# Note that we don't specify an explicit key for event suggestions
# We don't trust users to input correct event keys (that's for the moderator to do)
suggestion = Suggestion(
author=author_account_key,
target_model="offseason-event",
)
suggestion.contents = {
'name': name,
'start_date': start_date,
'end_date': end_date,
'website': website,
'address': address}
suggestion.put()
return 'success', None
示例8: post
def post(self):
self._require_admin()
if self.request.get("verdict") == "accept":
webcast = dict()
webcast["type"] = self.request.get("webcast_type")
webcast["channel"] = self.request.get("webcast_channel")
if self.request.get("webcast_file"):
webcast["file"] = self.request.get("webcast_file")
event = Event.get_by_id(self.request.get("event_key"))
suggestion = Suggestion.get_by_id(int(self.request.get("suggestion_key")))
EventWebcastAdder.add_webcast(event, webcast)
MemcacheWebcastFlusher.flush()
suggestion.review_state = Suggestion.REVIEW_ACCEPTED
suggestion.reviewer = self.user_bundle.account.key
suggestion.reviewer_at = datetime.datetime.now()
suggestion.put()
self.redirect("/admin/suggestions/event/webcast/review?success=accept&event_key=%s" % event.key.id())
return
elif self.request.get("verdict") == "reject":
suggestion = Suggestion.get_by_id(int(self.request.get("suggestion_key")))
suggestion.review_state = Suggestion.REVIEW_REJECTED
suggestion.reviewer = self.user_bundle.account.key
suggestion.reviewer_at = datetime.datetime.now()
suggestion.put()
self.redirect("/admin/suggestions/event/webcast/review?success=reject")
return
elif self.request.get("verdict") == "reject_all":
suggestion_keys = self.request.get("suggestion_keys").split(",")
suggestions = [Suggestion.get_by_id(int(suggestion_key)) for suggestion_key in suggestion_keys]
for suggestion in suggestions:
event_key = suggestion.target_key
suggestion.review_state = Suggestion.REVIEW_REJECTED
suggestion.reviewer = self.user_bundle.account.key
suggestion.reviewer_at = datetime.datetime.now()
suggestion.put()
self.redirect("/admin/suggestions/event/webcast/review?success=reject_all&event_key=%s" % event_key)
return
self.redirect("/admin/suggestions/event/webcast/review")
开发者ID:BowlesCR,项目名称:the-blue-alliance,代码行数:52,代码来源:admin_event_webcast_suggestions_review_controller.py
示例9: testCleanUrl
def testCleanUrl(self):
status = SuggestionCreator.createTeamMediaSuggestion(
self.account.key,
" http://imgur.com/ruRAxDm?foo=bar#meow ",
"frc1124",
"2016")
self.assertEqual(status, 'success')
# Ensure the Suggestion gets created
suggestion_id = Suggestion.render_media_key_name('2016', 'team', 'frc1124', 'imgur', 'ruRAxDm')
suggestion = Suggestion.get_by_id(suggestion_id)
self.assertIsNotNone(suggestion)
self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING)
self.assertEqual(suggestion.author, self.account.key)
self.assertEqual(suggestion.target_model, 'media')
示例10: get
def get(self):
self._require_registration()
push_sitevar = Sitevar.get_by_id("notifications.enable")
if push_sitevar is None or not push_sitevar.values_json == "true":
ping_enabled = "disabled"
else:
ping_enabled = ""
# Compute myTBA statistics
user = self.user_bundle.account.key
num_favorites = Favorite.query(ancestor=user).count()
num_subscriptions = Subscription.query(ancestor=user).count()
# Compute suggestion statistics
submissions_pending = Suggestion.query(
Suggestion.review_state == Suggestion.REVIEW_PENDING, Suggestion.author == user
).count()
submissions_accepted = Suggestion.query(
Suggestion.review_state == Suggestion.REVIEW_ACCEPTED, Suggestion.author == user
).count()
# Suggestion review statistics
review_permissions = False
num_reviewed = 0
total_pending = 0
if self.user_bundle.account.permissions:
review_permissions = True
num_reviewed = Suggestion.query(Suggestion.reviewer == user).count()
total_pending = Suggestion.query(Suggestion.review_state == Suggestion.REVIEW_PENDING).count()
# Fetch trusted API keys
trusted_keys = ApiAuthAccess.query(ApiAuthAccess.owner == user).fetch()
self.template_values["status"] = self.request.get("status")
self.template_values["webhook_verification_success"] = self.request.get("webhook_verification_success")
self.template_values["ping_enabled"] = ping_enabled
self.template_values["num_favorites"] = num_favorites
self.template_values["num_subscriptions"] = num_subscriptions
self.template_values["submissions_pending"] = submissions_pending
self.template_values["submissions_accepted"] = submissions_accepted
self.template_values["review_permissions"] = review_permissions
self.template_values["num_reviewed"] = num_reviewed
self.template_values["total_pending"] = total_pending
self.template_values["trusted_keys"] = trusted_keys
self.template_values["auth_type_names"] = AuthType.type_names
self.response.out.write(jinja2_engine.render("account_overview.html", self.template_values))
示例11: get
def get(self):
self._require_admin()
self.template_values['memcache_stats'] = memcache.get_stats()
self.template_values['databasequery_stats'] = {
'hits': sum(filter(None, [memcache.get(key) for key in DatabaseQuery.DATABASE_HITS_MEMCACHE_KEYS])),
'misses': sum(filter(None, [memcache.get(key) for key in DatabaseQuery.DATABASE_MISSES_MEMCACHE_KEYS]))
}
# Gets the 5 recently created users
users = Account.query().order(-Account.created).fetch(5)
self.template_values['users'] = users
# Retrieves the number of pending suggestions
video_suggestions = Suggestion.query().filter(
Suggestion.review_state == Suggestion.REVIEW_PENDING).filter(
Suggestion.target_model == "match").count()
self.template_values['video_suggestions'] = video_suggestions
webcast_suggestions = Suggestion.query().filter(
Suggestion.review_state == Suggestion.REVIEW_PENDING).filter(
Suggestion.target_model == "event").count()
self.template_values['webcast_suggestions'] = webcast_suggestions
media_suggestions = Suggestion.query().filter(
Suggestion.review_state == Suggestion.REVIEW_PENDING).filter(
Suggestion.target_model == "media").count()
self.template_values['media_suggestions'] = media_suggestions
# version info
try:
fname = os.path.join(os.path.dirname(__file__), '../../version_info.json')
with open(fname, 'r') as f:
data = json.loads(f.read().replace('\r\n', '\n'))
self.template_values['git_branch_name'] = data['git_branch_name']
self.template_values['build_time'] = data['build_time']
commit_parts = re.split("[\n]+", data['git_last_commit'])
self.template_values['commit_hash'] = commit_parts[0].split(" ")
self.template_values['commit_author'] = commit_parts[1]
self.template_values['commit_date'] = commit_parts[2]
self.template_values['commit_msg'] = commit_parts[3]
except Exception, e:
logging.warning("version_info.json parsing failed: %s" % e)
pass
示例12: get
def get(self):
self._require_registration()
push_sitevar = Sitevar.get_by_id('notifications.enable')
if push_sitevar is None or not push_sitevar.values_json == "true":
ping_enabled = "disabled"
else:
ping_enabled = ""
# Compute myTBA statistics
user = self.user_bundle.account.key
num_favorites = Favorite.query(ancestor=user).count()
num_subscriptions = Subscription.query(ancestor=user).count()
# Compute suggestion statistics
submissions_pending = Suggestion.query(Suggestion.review_state==Suggestion.REVIEW_PENDING, Suggestion.author==user).count()
submissions_accepted = Suggestion.query(Suggestion.review_state==Suggestion.REVIEW_ACCEPTED, Suggestion.author==user).count()
# Suggestion review statistics
review_permissions = False
num_reviewed = 0
total_pending = 0
if self.user_bundle.account.permissions:
review_permissions = True
num_reviewed = Suggestion.query(Suggestion.reviewer==user).count()
total_pending = Suggestion.query(Suggestion.review_state==Suggestion.REVIEW_PENDING).count()
# Fetch trusted API keys
api_keys = ApiAuthAccess.query(ApiAuthAccess.owner == user).fetch()
write_keys = filter(lambda key: key.is_write_key, api_keys)
read_keys = filter(lambda key: key.is_read_key, api_keys)
self.template_values['status'] = self.request.get('status')
self.template_values['webhook_verification_success'] = self.request.get('webhook_verification_success')
self.template_values['ping_sent'] = self.request.get('ping_sent')
self.template_values['ping_enabled'] = ping_enabled
self.template_values['num_favorites'] = num_favorites
self.template_values['num_subscriptions'] = num_subscriptions
self.template_values['submissions_pending'] = submissions_pending
self.template_values['submissions_accepted'] = submissions_accepted
self.template_values['review_permissions'] = review_permissions
self.template_values['num_reviewed'] = num_reviewed
self.template_values['total_pending'] = total_pending
self.template_values['read_keys'] = read_keys
self.template_values['write_keys'] = write_keys
self.template_values['auth_write_type_names'] = AuthType.write_type_names
self.response.out.write(jinja2_engine.render('account_overview.html', self.template_values))
示例13: _process_accepted
def _process_accepted(self, accept_key):
"""
Performs all actions for an accepted Suggestion in a Transaction.
Suggestions are processed one at a time (instead of in batch) in a
Transaction to prevent possible race conditions.
Actions include:
- Creating and saving a new Media for the Suggestion
- Removing a reference from another Media's preferred_references
- Marking the Suggestion as accepted and saving it
"""
# Async get
suggestion_future = Suggestion.get_by_id_async(accept_key)
# Resolve async Futures
suggestion = suggestion_future.get_result()
# Make sure Suggestion hasn't been processed (by another thread)
if suggestion.review_state != Suggestion.REVIEW_PENDING:
return
team_reference = Media.create_reference(
suggestion.contents['reference_type'],
suggestion.contents['reference_key'])
media = MediaCreator.create_media(suggestion, team_reference)
# Mark Suggestion as accepted
suggestion.review_state = Suggestion.REVIEW_ACCEPTED
suggestion.reviewer = self.user_bundle.account.key
suggestion.reviewed_at = datetime.datetime.now()
# Do all DB writes
MediaManipulator.createOrUpdate(media)
suggestion.put()
示例14: test_accept_with_different_details
def test_accept_with_different_details(self):
self.loginUser()
self.givePermission()
suggestion_id = self.createSuggestion()
form = self.getSuggestionForm('review_{}'.format(suggestion_id))
form['webcast_type'] = 'youtube'
form['webcast_channel'] = 'foobar'
form['webcast_file'] = 'meow'
response = form.submit('verdict', value='accept').follow()
self.assertEqual(response.status_int, 200)
request = response.request
self.assertEqual(request.GET.get('success'), 'accept')
# Process task queue
tasks = self.testbed.get_stub(testbed.TASKQUEUE_SERVICE_NAME).get_filtered_tasks()
for task in tasks:
deferred.run(task.payload)
# Make sure we mark the Suggestion as REVIEWED
suggestion = Suggestion.get_by_id(suggestion_id)
self.assertIsNotNone(suggestion)
self.assertEqual(suggestion.review_state, Suggestion.REVIEW_ACCEPTED)
# Make sure the Event has no webcasts
event = Event.get_by_id('2016necmp')
self.assertIsNotNone(event.webcast)
self.assertEqual(len(event.webcast), 1)
webcast = event.webcast[0]
self.assertEqual(webcast['type'], 'youtube')
self.assertEqual(webcast['channel'], 'foobar')
self.assertEqual(webcast['file'], 'meow')
示例15: get
def get(self):
super(SuggestDesignsReviewController, self).get()
if self.request.get('action') and self.request.get('id'):
# Fast-path review
self._fastpath_review()
suggestions = Suggestion.query().filter(
Suggestion.review_state == Suggestion.REVIEW_PENDING).filter(
Suggestion.target_model == "robot").fetch(limit=50)
reference_keys = []
for suggestion in suggestions:
reference_key = suggestion.contents['reference_key']
reference = Media.create_reference(
suggestion.contents['reference_type'],
reference_key)
reference_keys.append(reference)
reference_futures = ndb.get_multi_async(reference_keys)
references = map(lambda r: r.get_result(), reference_futures)
suggestions_and_references = zip(suggestions, references)
self.template_values.update({
"suggestions_and_references": suggestions_and_references,
})
self.response.out.write(jinja2_engine.render('suggestions/suggest_designs_review.html', self.template_values))