I have a user profile model with user(ForeignKey) and user_timezone(CharField). On my template page there’s a drop down box that lets the user select their timezone, they submit and everything works fine. Except for the fact that I have to hard code the pk. I can’t seem to figure out how to get the current user?
import pytz
import datetime
import time
from pytz import timezone
from django import template
from django.contrib.auth.models import User
from turnover.models import UserProfile
from django.shortcuts import get_object_or_404
register = template.Library()
class TimeNode(template.Node):
def __init__(self, format_string):
self.format_string = format_string
def render(self, context):
# Get the user profile and their timezone
profile = UserProfile.objects.get(pk=99) #<------ Hard Coded--
set_user_timezone = profile.user_timezone
# Set the Timezone
dt = datetime.datetime.fromtimestamp(time.time(), pytz.utc)
get_timezone = pytz.timezone(u'%s' % set_user_timezone)
profile_timezone = get_timezone.normalize(dt.astimezone(get_timezone)).strftime(self.format_string)
return profile_timezone
@register.tag(name="current_time")
def current_time(parser, token):
tag_name, format_string = token.split_contents()
return TimeNode(format_string[1:-1])
But you should have in settings: