diff --git a/seahub/api2/endpoints/share_links.py b/seahub/api2/endpoints/share_links.py index 843aed8c20..9646cfe18e 100644 --- a/seahub/api2/endpoints/share_links.py +++ b/seahub/api2/endpoints/share_links.py @@ -2,12 +2,11 @@ import os import stat import json -import pytz import logging import posixpath from constance import config -from datetime import datetime from dateutil.relativedelta import relativedelta +import dateutil.parser from rest_framework.authentication import SessionAuthentication from rest_framework.permissions import IsAuthenticated @@ -16,6 +15,7 @@ from rest_framework.views import APIView from rest_framework import status from django.utils import timezone +from django.utils.timezone import get_current_timezone from django.utils.translation import ugettext as _ from django.utils.http import urlquote @@ -281,13 +281,13 @@ class ShareLinks(APIView): elif expiration_time: try: - expire_date = datetime.fromisoformat(expiration_time) + expire_date = dateutil.parser.isoparse(expiration_time) except Exception as e: logger.error(e) error_msg = 'expiration_time invalid, should be iso format, for example: 2020-05-17T10:26:22+08:00' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - expire_date = expire_date.astimezone(pytz.UTC).replace(tzinfo=None) + expire_date = expire_date.astimezone(get_current_timezone()).replace(tzinfo=None) if SHARE_LINK_EXPIRE_DAYS_MIN > 0: expire_date_min_limit = timezone.now() + relativedelta(days=SHARE_LINK_EXPIRE_DAYS_MIN) diff --git a/seahub/api2/endpoints/upload_links.py b/seahub/api2/endpoints/upload_links.py index b571eaac6d..a98c5667f3 100644 --- a/seahub/api2/endpoints/upload_links.py +++ b/seahub/api2/endpoints/upload_links.py @@ -1,11 +1,10 @@ # Copyright (c) 2012-2016 Seafile Ltd. import os import json -import pytz import logging from constance import config -from datetime import datetime from dateutil.relativedelta import relativedelta +import dateutil.parser from rest_framework.authentication import SessionAuthentication from rest_framework.permissions import IsAuthenticated @@ -14,6 +13,7 @@ from rest_framework.views import APIView from rest_framework import status from django.utils import timezone +from django.utils.timezone import get_current_timezone from django.utils.translation import ugettext as _ from seaserv import seafile_api @@ -178,13 +178,13 @@ class UploadLinks(APIView): elif expiration_time: try: - expire_date = datetime.fromisoformat(expiration_time) + expire_date = dateutil.parser.isoparse(expiration_time) except Exception as e: logger.error(e) error_msg = 'expiration_time invalid, should be iso format, for example: 2020-05-17T10:26:22+08:00' return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - expire_date = expire_date.astimezone(pytz.UTC).replace(tzinfo=None) + expire_date = expire_date.astimezone(get_current_timezone()).replace(tzinfo=None) # resource check repo = seafile_api.get_repo(repo_id)