remove i18n
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from django.core.exceptions import MultipleObjectsReturned
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from utils.api import APIView, validate_serializer
|
||||
from utils.shortcuts import rand_str
|
||||
@@ -21,21 +20,21 @@ class UserAdminAPI(APIView):
|
||||
try:
|
||||
user = User.objects.get(id=data["id"])
|
||||
except User.DoesNotExist:
|
||||
return self.error(_("User does not exist"))
|
||||
return self.error("User does not exist")
|
||||
try:
|
||||
user = User.objects.get(username=data["username"])
|
||||
if user.id != data["id"]:
|
||||
return self.error(_("Username already exists"))
|
||||
return self.error("Username already exists")
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
|
||||
try:
|
||||
user = User.objects.get(email=data["email"])
|
||||
if user.id != data["id"]:
|
||||
return self.error(_("Email already exists"))
|
||||
return self.error("Email already exists")
|
||||
# Some old data has duplicate email
|
||||
except MultipleObjectsReturned:
|
||||
return self.error(_("Email already exists"))
|
||||
return self.error("Email already exists")
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
|
||||
@@ -85,7 +84,7 @@ class UserAdminAPI(APIView):
|
||||
try:
|
||||
user = User.objects.get(id=user_id)
|
||||
except User.DoesNotExist:
|
||||
return self.error(_("User does not exist"))
|
||||
return self.error("User does not exist")
|
||||
return self.success(UserSerializer(user).data)
|
||||
|
||||
user = User.objects.all().order_by("-create_time")
|
||||
|
||||
@@ -4,7 +4,6 @@ from django.conf import settings
|
||||
from django.contrib import auth
|
||||
from django.core.exceptions import MultipleObjectsReturned
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext as _
|
||||
from otpauth import OtpAuth
|
||||
|
||||
from conf.models import WebsiteConfig
|
||||
@@ -18,7 +17,7 @@ from ..serializers import (ApplyResetPasswordSerializer,
|
||||
ResetPasswordSerializer,
|
||||
UserChangePasswordSerializer, UserLoginSerializer,
|
||||
UserRegisterSerializer)
|
||||
from ..tasks import _send_email
|
||||
from ..tasks import send_email_async
|
||||
|
||||
|
||||
class UserLoginAPI(APIView):
|
||||
@@ -33,7 +32,7 @@ class UserLoginAPI(APIView):
|
||||
if user:
|
||||
if not user.two_factor_auth:
|
||||
auth.login(request, user)
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
|
||||
# `tfa_code` not in post data
|
||||
if user.two_factor_auth and "tfa_code" not in data:
|
||||
@@ -41,11 +40,11 @@ class UserLoginAPI(APIView):
|
||||
|
||||
if OtpAuth(user.tfa_token).valid_totp(data["tfa_code"]):
|
||||
auth.login(request, user)
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
else:
|
||||
return self.error(_("Invalid two factor verification code"))
|
||||
return self.error("Invalid two factor verification code")
|
||||
else:
|
||||
return self.error(_("Invalid username or password"))
|
||||
return self.error("Invalid username or password")
|
||||
|
||||
# todo remove this, only for debug use
|
||||
def get(self, request):
|
||||
@@ -62,24 +61,24 @@ class UserRegisterAPI(APIView):
|
||||
data = request.data
|
||||
captcha = Captcha(request)
|
||||
if not captcha.check(data["captcha"]):
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
try:
|
||||
User.objects.get(username=data["username"])
|
||||
return self.error(_("Username already exists"))
|
||||
return self.error("Username already exists")
|
||||
except User.DoesNotExist:
|
||||
pass
|
||||
try:
|
||||
User.objects.get(email=data["email"])
|
||||
return self.error(_("Email already exists"))
|
||||
return self.error("Email already exists")
|
||||
# Some old data has duplicate email
|
||||
except MultipleObjectsReturned:
|
||||
return self.error(_("Email already exists"))
|
||||
return self.error("Email already exists")
|
||||
except User.DoesNotExist:
|
||||
user = User.objects.create(username=data["username"], email=data["email"])
|
||||
user.set_password(data["password"])
|
||||
user.save()
|
||||
UserProfile.objects.create(user=user)
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
|
||||
|
||||
class UserChangePasswordAPI(APIView):
|
||||
@@ -92,15 +91,15 @@ class UserChangePasswordAPI(APIView):
|
||||
data = request.data
|
||||
captcha = Captcha(request)
|
||||
if not captcha.check(data["captcha"]):
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
username = request.user.username
|
||||
user = auth.authenticate(username=username, password=data["old_password"])
|
||||
if user:
|
||||
user.set_password(data["new_password"])
|
||||
user.save()
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
else:
|
||||
return self.error(_("Invalid old password"))
|
||||
return self.error("Invalid old password")
|
||||
|
||||
|
||||
class ApplyResetPasswordAPI(APIView):
|
||||
@@ -110,14 +109,14 @@ class ApplyResetPasswordAPI(APIView):
|
||||
captcha = Captcha(request)
|
||||
config = WebsiteConfig.objects.first()
|
||||
if not captcha.check(data["captcha"]):
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
try:
|
||||
user = User.objects.get(email=data["email"])
|
||||
except User.DoesNotExist:
|
||||
return self.error(_("User does not exist"))
|
||||
return self.error("User does not exist")
|
||||
if user.reset_password_token_expire_time and 0 < (
|
||||
user.reset_password_token_expire_time - now()).total_seconds() < 20 * 60:
|
||||
return self.error(_("You can only reset password once per 20 minutes"))
|
||||
return self.error("You can only reset password once per 20 minutes")
|
||||
user.reset_password_token = rand_str()
|
||||
|
||||
user.reset_password_token_expire_time = now() + timedelta(minutes=20)
|
||||
@@ -128,12 +127,12 @@ class ApplyResetPasswordAPI(APIView):
|
||||
replace("{{ website_name }}", settings.WEBSITE_INFO["website_name"]). \
|
||||
replace("{{ link }}", settings.WEBSITE_INFO["url"] + "/reset_password/t/" +
|
||||
user.reset_password_token)
|
||||
_send_email.delay(config.name,
|
||||
user.email,
|
||||
user.username,
|
||||
config.name + " 登录信息找回邮件",
|
||||
email_template)
|
||||
return self.success(_("Succeeded"))
|
||||
send_email_async.delay(config.name,
|
||||
user.email,
|
||||
user.username,
|
||||
config.name + " 登录信息找回邮件",
|
||||
email_template)
|
||||
return self.success("Succeeded")
|
||||
|
||||
|
||||
class ResetPasswordAPI(APIView):
|
||||
@@ -142,14 +141,14 @@ class ResetPasswordAPI(APIView):
|
||||
data = request.data
|
||||
captcha = Captcha(request)
|
||||
if not captcha.check(data["captcha"]):
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
try:
|
||||
user = User.objects.get(reset_password_token=data["token"])
|
||||
except User.DoesNotExist:
|
||||
return self.error(_("Token dose not exist"))
|
||||
return self.error("Token dose not exist")
|
||||
if 0 < (user.reset_password_token_expire_time - now()).total_seconds() < 30 * 60:
|
||||
return self.error(_("Token expired"))
|
||||
return self.error("Token expired")
|
||||
user.reset_password_token = None
|
||||
user.set_password(data["password"])
|
||||
user.save()
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
|
||||
@@ -4,7 +4,6 @@ from io import StringIO
|
||||
import qrcode
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponse
|
||||
from django.utils.translation import ugettext as _
|
||||
from otpauth import OtpAuth
|
||||
|
||||
from conf.models import WebsiteConfig
|
||||
@@ -50,19 +49,19 @@ class UserProfileAPI(APIView):
|
||||
user_profile.major = data["major"]
|
||||
# Timezone & language 暂时不加
|
||||
user_profile.save()
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
|
||||
|
||||
class AvatarUploadAPI(APIView):
|
||||
def post(self, request):
|
||||
if "file" not in request.FILES:
|
||||
return self.error(_("Upload failed"))
|
||||
return self.error("Upload failed")
|
||||
|
||||
f = request.FILES["file"]
|
||||
if f.size > 1024 * 1024:
|
||||
return self.error(_("Picture too large"))
|
||||
return self.error("Picture too large")
|
||||
if os.path.splitext(f.name)[-1].lower() not in [".gif", ".jpg", ".jpeg", ".bmp", ".png"]:
|
||||
return self.error(_("Unsupported file format"))
|
||||
return self.error("Unsupported file format")
|
||||
|
||||
name = "avatar_" + rand_str(5) + os.path.splitext(f.name)[-1]
|
||||
with open(os.path.join(settings.IMAGE_UPLOAD_DIR, name), "wb") as img:
|
||||
@@ -76,7 +75,7 @@ class SSOAPI(APIView):
|
||||
def get(self, request):
|
||||
callback = request.GET.get("callback", None)
|
||||
if not callback:
|
||||
return self.error(_("Parameter Error"))
|
||||
return self.error("Parameter Error")
|
||||
token = rand_str()
|
||||
request.user.auth_token = token
|
||||
request.user.save()
|
||||
@@ -89,7 +88,7 @@ class SSOAPI(APIView):
|
||||
try:
|
||||
User.objects.get(open_api_appkey=data["appkey"])
|
||||
except User.DoesNotExist:
|
||||
return self.error(_("Invalid appkey"))
|
||||
return self.error("Invalid appkey")
|
||||
try:
|
||||
user = User.objects.get(auth_token=data["token"])
|
||||
user.auth_token = None
|
||||
@@ -133,9 +132,9 @@ class TwoFactorAuthAPI(APIView):
|
||||
if OtpAuth(user.tfa_token).valid_totp(code):
|
||||
user.two_factor_auth = True
|
||||
user.save()
|
||||
return self.success(_("Succeeded"))
|
||||
return self.success("Succeeded")
|
||||
else:
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
|
||||
@login_required
|
||||
@validate_serializer(TwoFactorAuthCodeSerializer)
|
||||
@@ -146,4 +145,4 @@ class TwoFactorAuthAPI(APIView):
|
||||
user.two_factor_auth = False
|
||||
user.save()
|
||||
else:
|
||||
return self.error(_("Invalid captcha"))
|
||||
return self.error("Invalid captcha")
|
||||
|
||||
Reference in New Issue
Block a user