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