def remove_bad_translation_requests(): """ Deletes translation requests that contain Refs we don't understand. """ trs = model.TranslationRequestSet() for tr in trs: try: model.Ref(tr.ref) except Exception, e: print tr.ref + "\n*** " + str(e) tr.delete()
def list_contest_results(request): """ List results for last week's mini contest on translation requests. """ today = datetime.today() end_month = today.month if today.day >= 28 else today.month - 1 end_month = 12 if end_month == 0 else end_month contest_end = today.replace(month=end_month, day=28, hour=0, minute=0) start_month = end_month - 1 if end_month > 1 else 12 contest_start = contest_end.replace(month=start_month) requests_query = { "completed": True, "featured": True, "completed_date": { "$gt": contest_start, "$lt": contest_end } } requests = model.TranslationRequestSet(requests_query, sort=[["featured", 1]]) user_points = defaultdict(int) user_requests = defaultdict(int) total_points = 0 total_requests = len(requests) results = "Contest Results for %s to %s<br>" % (str(contest_start), str(contest_end)) lottery = [] for request in requests: points = 5 if getattr(request, "featured", False) else 1 user_points[request.completer] += points user_requests[request.completer] += 1 total_points += points results += "%d participants completed %d requests<br><br>" % (len( user_requests.keys()), total_requests) for user in user_points.keys(): profile = model.user_profile.UserProfile(id=user) results += "%s: completed %d requests for %d points (%s)<br>" % ( profile.full_name, user_requests[user], user_points[user], profile.email) lottery += ([user] * user_points[user]) if len(lottery): winner = choice(lottery) winner = model.user_profile.UserProfile(id=winner) results += "<br>The winner is: %s (%s)" % (winner.full_name, winner.email) return HttpResponse(results)