This commit is contained in:
virusdefender
2017-01-23 16:01:56 +08:00
parent 0f03e75713
commit 3e42e6648e
24 changed files with 58 additions and 511 deletions

View File

@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-09-25 05:30
# Generated by Django 1.9.12 on 2017-01-23 07:59
from __future__ import unicode_literals
import account.models
@@ -24,19 +24,17 @@ class Migration(migrations.Migration):
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('username', models.CharField(max_length=30, unique=True)),
('real_name', models.CharField(blank=True, max_length=30, null=True)),
('email', models.EmailField(blank=True, max_length=254, null=True)),
('real_name', models.CharField(max_length=30, null=True)),
('email', models.EmailField(max_length=254, null=True)),
('create_time', models.DateTimeField(auto_now_add=True, null=True)),
('admin_type', models.IntegerField(default=0)),
('admin_extra_permission', jsonfield.fields.JSONField(default=[])),
('problems_status', jsonfield.fields.JSONField(default={})),
('reset_password_token', models.CharField(blank=True, max_length=40, null=True)),
('reset_password_token_create_time', models.DateTimeField(blank=True, null=True)),
('auth_token', models.CharField(blank=True, max_length=40, null=True)),
('admin_type', models.CharField(default='regular_user', max_length=24)),
('reset_password_token', models.CharField(max_length=40, null=True)),
('reset_password_token_expire_time', models.DateTimeField(null=True)),
('auth_token', models.CharField(max_length=40, null=True)),
('two_factor_auth', models.BooleanField(default=False)),
('tfa_token', models.CharField(blank=True, max_length=40, null=True)),
('tfa_token', models.CharField(max_length=40, null=True)),
('open_api', models.BooleanField(default=False)),
('open_api_appkey', models.CharField(blank=True, max_length=35, null=True)),
('open_api_appkey', models.CharField(max_length=35, null=True)),
('is_disabled', models.BooleanField(default=False)),
],
options={
@@ -50,17 +48,18 @@ class Migration(migrations.Migration):
name='UserProfile',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('problems_status', jsonfield.fields.JSONField(default={})),
('avatar', models.CharField(default=account.models._random_avatar, max_length=50)),
('blog', models.URLField(blank=True, null=True)),
('mood', models.CharField(blank=True, max_length=200, null=True)),
('hduoj_username', models.CharField(blank=True, max_length=30, null=True)),
('bestcoder_username', models.CharField(blank=True, max_length=30, null=True)),
('codeforces_username', models.CharField(blank=True, max_length=30, null=True)),
('accepted_problem_number', models.IntegerField(default=0)),
('submission_number', models.IntegerField(default=0)),
('phone_number', models.CharField(blank=True, max_length=15, null=True)),
('school', models.CharField(blank=True, max_length=200, null=True)),
('major', models.CharField(blank=True, max_length=200, null=True)),
('student_id', models.CharField(blank=True, max_length=15, null=True)),
('time_zone', models.CharField(blank=True, max_length=32, null=True)),
('language', models.CharField(blank=True, max_length=32, null=True)),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={

View File

@@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-09-25 05:37
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('account', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='user',
name='real_name',
),
migrations.RemoveField(
model_name='userprofile',
name='bestcoder_username',
),
migrations.RemoveField(
model_name='userprofile',
name='codeforces_username',
),
migrations.RemoveField(
model_name='userprofile',
name='hduoj_username',
),
migrations.AddField(
model_name='userprofile',
name='real_name',
field=models.CharField(blank=True, max_length=30, null=True),
),
]

View File

@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-09-25 06:02
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('account', '0002_auto_20160925_1337'),
]
operations = [
migrations.RemoveField(
model_name='userprofile',
name='real_name',
),
migrations.AddField(
model_name='user',
name='real_name',
field=models.CharField(blank=True, max_length=30, null=True),
),
]

View File

@@ -1,65 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-09-25 08:49
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('account', '0003_auto_20160925_1402'),
]
operations = [
migrations.AddField(
model_name='userprofile',
name='language',
field=models.CharField(blank=True, max_length=32, null=True),
),
migrations.AddField(
model_name='userprofile',
name='major',
field=models.CharField(blank=True, max_length=200, null=True),
),
migrations.AddField(
model_name='userprofile',
name='time_zone',
field=models.CharField(blank=True, max_length=32, null=True),
),
migrations.AlterField(
model_name='user',
name='auth_token',
field=models.CharField(max_length=40, null=True),
),
migrations.AlterField(
model_name='user',
name='email',
field=models.EmailField(max_length=254, null=True),
),
migrations.AlterField(
model_name='user',
name='open_api_appkey',
field=models.CharField(max_length=35, null=True),
),
migrations.AlterField(
model_name='user',
name='real_name',
field=models.CharField(max_length=30, null=True),
),
migrations.AlterField(
model_name='user',
name='reset_password_token',
field=models.CharField(max_length=40, null=True),
),
migrations.AlterField(
model_name='user',
name='reset_password_token_create_time',
field=models.DateTimeField(null=True),
),
migrations.AlterField(
model_name='user',
name='tfa_token',
field=models.CharField(max_length=40, null=True),
),
]

View File

@@ -1,39 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.5 on 2016-10-29 14:55
from __future__ import unicode_literals
from django.db import migrations, models
import jsonfield.fields
class Migration(migrations.Migration):
dependencies = [
('account', '0004_auto_20160925_1649'),
]
operations = [
migrations.RenameField(
model_name='user',
old_name='reset_password_token_create_time',
new_name='reset_password_token_expire_time',
),
migrations.RemoveField(
model_name='user',
name='admin_extra_permission',
),
migrations.RemoveField(
model_name='user',
name='problems_status',
),
migrations.AddField(
model_name='userprofile',
name='problems_status',
field=jsonfield.fields.JSONField(default={}),
),
migrations.AlterField(
model_name='user',
name='admin_type',
field=models.CharField(default='regular_user', max_length=24),
),
]

View File

@@ -39,7 +39,7 @@ class User(AbstractBaseUser):
open_api_appkey = models.CharField(max_length=35, null=True)
is_disabled = models.BooleanField(default=False)
USERNAME_FIELD = 'username'
USERNAME_FIELD = "username"
REQUIRED_FIELDS = []
objects = UserManager()

View File

@@ -84,12 +84,6 @@ class UserAdminAPI(APIView):
user = User.objects.all().order_by("-create_time")
admin_type = request.GET.get("admin_type", None)
if admin_type:
try:
user = user.filter(admin_type__gte=int(admin_type))
except ValueError:
return self.error(_("Invalid parameter"))
keyword = request.GET.get("keyword", None)
if keyword:
user = user.filter(Q(username__contains=keyword) |

View File

@@ -2,9 +2,10 @@ from django.contrib import auth
from django.core.exceptions import MultipleObjectsReturned
from django.utils.translation import ugettext as _
from otpauth import OtpAuth
from utils.api import APIView, validate_serializer
from utils.captcha import Captcha
from utils.otp_auth import OtpAuth
from ..decorators import login_required
from ..models import User, UserProfile
from ..serializers import (UserLoginSerializer, UserRegisterSerializer,