我们从Python开源项目中,提取了以下13个代码示例,用于说明如何使用django.utils.timezone.override()。
def __call__(self, request): tz_overrider = nullcontext() if request.path.startswith(get_admin_url_path_prefix()): admin_tz = getattr(settings, 'ADMIN_TIME_ZONE', None) if admin_tz: tz_overrider = timezone.override(admin_tz) with tz_overrider: return self.get_response(request)
def render(self, context): with timezone.override(self.tz.resolve(context)): output = self.nodelist.render(context) return output
def notify_speakers(self): tz = pytz.timezone(self.event.timezone) speakers = defaultdict(lambda: {'create': [], 'update': []}) if self.changes['action'] == 'create': speakers = { speaker: {'create': self.talks.filter(submission__speakers=speaker), 'update': []} for speaker in User.objects.filter(submissions__slots__schedule=self) } else: if self.changes['count'] == len(self.changes['canceled_talks']): return for new_talk in self.changes['new_talks']: for speaker in new_talk.submission.speakers.all(): speakers[speaker]['create'].append(new_talk) for moved_talk in self.changes['moved_talks']: for speaker in moved_talk['submission'].speakers.all(): speakers[speaker]['update'].append(moved_talk) for speaker in speakers: with override(speaker.locale), tzoverride(tz): text = get_template('schedule/speaker_notification.txt').render( {'speaker': speaker, **speakers[speaker]} ) QueuedMail.objects.create( event=self.event, to=speaker.email, reply_to=self.event.email, subject=_('[{event}] New schedule!').format(event=self.event.slug), text=text )
def test_send_at(self): utc_plus_6 = get_fixed_timezone(6 * 60) utc_minus_8 = get_fixed_timezone(-8 * 60) with override_current_timezone(utc_plus_6): # Timezone-aware datetime converted to UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc_minus_8) self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], timegm((2016, 3, 4, 13, 6, 7))) # 05:06 UTC-8 == 13:06 UTC # Timezone-naive datetime assumed to be Django current_timezone self.message.send_at = datetime(2022, 10, 11, 12, 13, 14, 567) # microseconds should get stripped self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], timegm((2022, 10, 11, 6, 13, 14))) # 12:13 UTC+6 == 06:13 UTC # Date-only treated as midnight in current timezone self.message.send_at = date(2022, 10, 22) self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], timegm((2022, 10, 21, 18, 0, 0))) # 00:00 UTC+6 == 18:00-1d UTC # POSIX timestamp self.message.send_at = 1651820889 # 2022-05-06 07:08:09 UTC self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], 1651820889)
def test_send_at(self): utc_plus_6 = get_fixed_timezone(6 * 60) utc_minus_8 = get_fixed_timezone(-8 * 60) with override_current_timezone(utc_plus_6): # Timezone-aware datetime converted to UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc_minus_8) self.message.send() smtpapi = self.get_smtpapi() self.assertEqual(smtpapi['send_at'], timegm((2016, 3, 4, 13, 6, 7))) # 05:06 UTC-8 == 13:06 UTC # Timezone-naive datetime assumed to be Django current_timezone self.message.send_at = datetime(2022, 10, 11, 12, 13, 14, 567) # microseconds should get stripped self.message.send() smtpapi = self.get_smtpapi() self.assertEqual(smtpapi['send_at'], timegm((2022, 10, 11, 6, 13, 14))) # 12:13 UTC+6 == 06:13 UTC # Date-only treated as midnight in current timezone self.message.send_at = date(2022, 10, 22) self.message.send() smtpapi = self.get_smtpapi() self.assertEqual(smtpapi['send_at'], timegm((2022, 10, 21, 18, 0, 0))) # 00:00 UTC+6 == 18:00-1d UTC # POSIX timestamp self.message.send_at = 1651820889 # 2022-05-06 07:08:09 UTC self.message.send() smtpapi = self.get_smtpapi() self.assertEqual(smtpapi['send_at'], 1651820889)
def test_send_at(self): utc_plus_6 = get_fixed_timezone(6 * 60) utc_minus_8 = get_fixed_timezone(-8 * 60) with override_current_timezone(utc_plus_6): # Timezone-aware datetime converted to UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc_minus_8) self.message.send() data = self.get_api_call_data() self.assertEqual(data['o:deliverytime'], "Fri, 04 Mar 2016 13:06:07 GMT") # 05:06 UTC-8 == 13:06 UTC # Timezone-naive datetime assumed to be Django current_timezone self.message.send_at = datetime(2022, 10, 11, 12, 13, 14, 567) self.message.send() data = self.get_api_call_data() self.assertEqual(data['o:deliverytime'], "Tue, 11 Oct 2022 06:13:14 GMT") # 12:13 UTC+6 == 06:13 UTC # Date-only treated as midnight in current timezone self.message.send_at = date(2022, 10, 22) self.message.send() data = self.get_api_call_data() self.assertEqual(data['o:deliverytime'], "Fri, 21 Oct 2022 18:00:00 GMT") # 00:00 UTC+6 == 18:00-1d UTC # POSIX timestamp self.message.send_at = 1651820889 # 2022-05-06 07:08:09 UTC self.message.send() data = self.get_api_call_data() self.assertEqual(data['o:deliverytime'], "Fri, 06 May 2022 07:08:09 GMT") # String passed unchanged (this is *not* portable between ESPs) self.message.send_at = "Thu, 13 Oct 2022 18:02:00 GMT" self.message.send() data = self.get_api_call_data() self.assertEqual(data['o:deliverytime'], "Thu, 13 Oct 2022 18:02:00 GMT")
def test_send_at(self): utc_plus_6 = get_fixed_timezone(6 * 60) utc_minus_8 = get_fixed_timezone(-8 * 60) with override_current_timezone(utc_plus_6): # Timezone-naive datetime assumed to be Django current_timezone self.message.send_at = datetime(2022, 10, 11, 12, 13, 14, 567) self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], "2022-10-11 06:13:14") # 12:13 UTC+6 == 06:13 UTC # Timezone-aware datetime converted to UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc_minus_8) self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], "2016-03-04 13:06:07") # 05:06 UTC-8 == 13:06 UTC # Date-only treated as midnight in current timezone self.message.send_at = date(2022, 10, 22) self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], "2022-10-21 18:00:00") # 00:00 UTC+6 == 18:00-1d UTC # POSIX timestamp self.message.send_at = 1651820889 # 2022-05-06 07:08:09 UTC self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], "2022-05-06 07:08:09") # String passed unchanged (this is *not* portable between ESPs) self.message.send_at = "2013-11-12 01:02:03" self.message.send() data = self.get_api_call_json() self.assertEqual(data['send_at'], "2013-11-12 01:02:03")
def slash_command(request): global_preferences = global_preferences_registry.manager() expected_token = global_preferences['trax__slash_command_token'] if expected_token != request.POST['token']: return JsonResponse({'text': 'Invalid token'}, status=403) form = forms.SlashCommandForm(request.POST) data = { 'response_type': 'ephemeral' } if not form.is_valid(): data['text'] = handlers.HelpHandler().get_response_content( request=request, action='help', arguments='', context={}) return JsonResponse(data) cd = form.cleaned_data handler, arguments = cd['handler'], cd['arguments'] with timezone.override(cd['user'].preferences['global__timezone']): try: result = handler.handle(**cd) except (exceptions.HandleError, exceptions.ValidationError) as e: data['text'] = handler.get_exception_response_content( exception=e, user=cd['user'], request=request, action=cd['action'], arguments=arguments ) return JsonResponse(data) data = { 'response_type': handler.response_type } data['text'] = handler.get_response_content( request=request, user=cd['user'], action=cd['action'], arguments=arguments, context=result,) if data['response_type'] == 'in_channel': data['text'] = '*{0} invoked command "{1} {2}"*\n\n'.format( cd['user'].username, cd['command'], cd['text'] ) + data['text'] return JsonResponse(data)
def test_send_at(self): utc_plus_6 = get_fixed_timezone(6 * 60) utc_minus_8 = get_fixed_timezone(-8 * 60) # SparkPost expects ISO-8601 YYYY-MM-DDTHH:MM:SS+-HH:MM with override_current_timezone(utc_plus_6): # Timezone-aware datetime converted to UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc_minus_8) self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2016-03-04T05:06:07-08:00") # Explicit UTC: self.message.send_at = datetime(2016, 3, 4, 5, 6, 7, tzinfo=utc) self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2016-03-04T05:06:07+00:00") # Timezone-naive datetime assumed to be Django current_timezone # (also checks stripping microseconds) self.message.send_at = datetime(2022, 10, 11, 12, 13, 14, 567) self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2022-10-11T12:13:14+06:00") # Date-only treated as midnight in current timezone self.message.send_at = date(2022, 10, 22) self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2022-10-22T00:00:00+06:00") # POSIX timestamp self.message.send_at = 1651820889 # 2022-05-06 07:08:09 UTC self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2022-05-06T07:08:09+00:00") # String passed unchanged (this is *not* portable between ESPs) self.message.send_at = "2022-10-13T18:02:00-11:30" self.message.send() params = self.get_send_params() self.assertEqual(params['start_time'], "2022-10-13T18:02:00-11:30")