Merge pull request #812 from SavinaRoja/357-tz-in-datetimes

357 Users set preferred timezone, used for readthroughs
This commit is contained in:
Mouse Reeve
2021-03-29 15:20:01 -07:00
committed by GitHub
20 changed files with 3053 additions and 620 deletions

View File

@ -1,11 +1,12 @@
""" the good stuff! the books! """
from datetime import datetime
import dateutil.parser
import dateutil.tz
from dateutil.parser import ParserError
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseBadRequest, HttpResponseNotFound
from django.shortcuts import get_object_or_404, redirect
from django.utils import timezone
from django.views.decorators.http import require_POST
from bookwyrm import models
@ -143,6 +144,12 @@ def create_readthrough(request):
return redirect(request.headers.get("Referer", "/"))
def load_date_in_user_tz_as_utc(date_str: str, user: models.User) -> datetime:
user_tz = dateutil.tz.gettz(user.preferred_timezone)
start_date = dateutil.parser.parse(date_str, ignoretz=True)
return start_date.replace(tzinfo=user_tz).astimezone(dateutil.tz.UTC)
def update_readthrough(request, book=None, create=True):
""" updates but does not save dates on a readthrough """
try:
@ -161,16 +168,18 @@ def update_readthrough(request, book=None, create=True):
start_date = request.POST.get("start_date")
if start_date:
try:
start_date = timezone.make_aware(dateutil.parser.parse(start_date))
readthrough.start_date = start_date
readthrough.start_date = load_date_in_user_tz_as_utc(
start_date, request.user
)
except ParserError:
pass
finish_date = request.POST.get("finish_date")
if finish_date:
try:
finish_date = timezone.make_aware(dateutil.parser.parse(finish_date))
readthrough.finish_date = finish_date
readthrough.finish_date = load_date_in_user_tz_as_utc(
finish_date, request.user
)
except ParserError:
pass