增加用户排名功能
This commit is contained in:
24
account/migrations/0020_auto_20160424_1241.py
Normal file
24
account/migrations/0020_auto_20160424_1241.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.5 on 2016-04-24 04:41
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('account', '0019_user_is_forbidden'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='userprofile',
|
||||
old_name='accepted_number',
|
||||
new_name='accepted_problem_number',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='userprofile',
|
||||
name='rank',
|
||||
),
|
||||
]
|
||||
20
account/migrations/0021_auto_20160424_1243.py
Normal file
20
account/migrations/0021_auto_20160424_1243.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.5 on 2016-04-24 04:43
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('account', '0020_auto_20160424_1241'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='userprofile',
|
||||
old_name='submissions_number',
|
||||
new_name='submission_number',
|
||||
),
|
||||
]
|
||||
@@ -66,9 +66,8 @@ class UserProfile(models.Model):
|
||||
hduoj_username = models.CharField(max_length=30, blank=True, null=True)
|
||||
bestcoder_username = models.CharField(max_length=30, blank=True, null=True)
|
||||
codeforces_username = models.CharField(max_length=30, blank=True, null=True)
|
||||
rank = models.IntegerField(default=65535)
|
||||
accepted_number = models.IntegerField(default=0)
|
||||
submissions_number = models.IntegerField(default=0)
|
||||
accepted_problem_number = models.IntegerField(default=0)
|
||||
submission_number = models.IntegerField(default=0)
|
||||
# JSON字典用来表示该用户的问题的解决状态 1为ac,2为正在进行
|
||||
problems_status = JSONField(default={})
|
||||
phone_number = models.CharField(max_length=15, blank=True, null=True)
|
||||
|
||||
@@ -5,6 +5,7 @@ import StringIO
|
||||
from django import http
|
||||
from django.contrib import auth
|
||||
from django.shortcuts import render
|
||||
from django.core.paginator import Paginator
|
||||
from django.db.models import Q
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponse
|
||||
@@ -472,3 +473,25 @@ class TwoFactorAuthAPIView(APIView):
|
||||
return error_response(u"验证码错误")
|
||||
else:
|
||||
return serializer_invalid_response(serializer)
|
||||
|
||||
|
||||
def user_rank_page(request, page=1):
|
||||
ranks = UserProfile.objects.filter(submission_number__gt=0).order_by("-accepted_problem_number", "-submission_number")
|
||||
paginator = Paginator(ranks, 20)
|
||||
try:
|
||||
ranks = paginator.page(int(page))
|
||||
except Exception:
|
||||
return error_page(request, u"不存在的页码")
|
||||
previous_page = next_page = None
|
||||
try:
|
||||
previous_page = ranks.previous_page_number()
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
next_page = ranks.next_page_number()
|
||||
except Exception:
|
||||
pass
|
||||
return render(request, "utils/rank.html", {"ranks": ranks, "page": page,
|
||||
"previous_page": previous_page,
|
||||
"next_page": next_page,
|
||||
"start_id": int(page) * 20 - 20,})
|
||||
Reference in New Issue
Block a user