def setUp(self):
self._create_user_and_login()
self._submission_time = parse_datetime('2013-02-18 15:54:01Z')
python类parse_datetime()的实例源码
def dispatch(self,request,*args,**kwargs):
''' Always check that the temporary registration has not expired '''
regSession = self.request.session.get(REG_VALIDATION_STR,{})
if not regSession:
return HttpResponseRedirect(reverse('registration'))
try:
reg = TemporaryRegistration.objects.get(
id=self.request.session[REG_VALIDATION_STR].get('temporaryRegistrationId')
)
except ObjectDoesNotExist:
messages.error(request,_('Invalid registration identifier passed to summary view.'))
return HttpResponseRedirect(reverse('registration'))
expiry = parse_datetime(
self.request.session[REG_VALIDATION_STR].get('temporaryRegistrationExpiry',''),
)
if not expiry or expiry < timezone.now():
messages.info(request,_('Your registration session has expired. Please try again.'))
return HttpResponseRedirect(reverse('registration'))
# If OK, pass the registration and proceed
kwargs.update({
'reg': reg,
})
return super(RegistrationSummaryView,self).dispatch(request, *args, **kwargs)
def to_internal_value(self, value):
input_formats = getattr(self, 'input_formats', api_settings.DATETIME_INPUT_FORMATS)
if isinstance(value, datetime.date) and not isinstance(value, datetime.datetime):
self.fail('date')
if isinstance(value, datetime.datetime):
return self.enforce_timezone(value)
for input_format in input_formats:
if input_format.lower() == ISO_8601:
try:
parsed = parse_datetime(value)
except (ValueError, TypeError):
pass
else:
if parsed is not None:
return self.enforce_timezone(parsed)
else:
try:
parsed = self.datetime_parser(value, input_format)
except (ValueError, TypeError):
pass
else:
return self.enforce_timezone(parsed)
humanized_format = humanize_datetime.datetime_formats(input_formats)
self.fail('invalid', format=humanized_format)
def _date_from_string(self, field_name, val):
try:
setattr(self, field_name, dateparse.parse_datetime(val))
except Exception as e:
setattr(self, field_name, val)
logger.warning('can not parse date (raw value used) %s: %s', field_name, e)
def _getFeeds(self, user, time, fields=None):
returnvalue = []
data = {
'access_token': user.access_token,
'fields': fields,
'limit': 1,
}
fb_request_url = Config.get("API_BASE_URI") + "/me/feed"
fb_user_last_post_id = user.last_post_id
fb_user_last_post_time = user.last_post_time
try:
resp = requests.get(fb_request_url, params=data)
break_loop = False
while resp.ok and not break_loop:
for feed in resp.json()['data']:
log.debug(feed)
if feed['id'] == user.last_post_id \
or parse_datetime(feed['created_time']) <= user.last_post_time \
or feed['id'] == fb_user_last_post_id:
break_loop = True
break
returnvalue.append(feed)
if fb_user_last_post_time < parse_datetime(feed['created_time']):
fb_user_last_post_id = feed['id']
fb_user_last_post_time = parse_datetime(feed['created_time'])
resp = requests.get(resp.json()['paging']['next'], timeout=5.00)
except requests.exceptions.RequestException:
pass
user.last_post_id = fb_user_last_post_id
user.last_post_time = fb_user_last_post_time
user.save()
return returnvalue[::-1]
def test_get_feeds(self, mock_get):
fb_response_fields = 'message,actions,full_picture,picture,from,created_time,' \
'link,permalink_url,type,description,source,object_id'
data = {'paging': {'next': 'https://graph.facebook.com/v2.7/1ZD',
'previous': 'https://graph.facebook.com/v2.7/101'
},
'data': [{'message': 'Tet',
'id': '101915710270588_133598340435658',
'created_time': '2016-10-04T15:26:44+0000',
}]
}
mock_get.return_value = MagicMock()
mock_get.return_value.json = MagicMock()
mock_get.return_value.json.return_value = data
mock_get.return_value.ok = True
self.facebook_account.last_post_id = 1
self.facebook_account.last_post_time = parse_datetime('2016-01-04T15:26:44+0000')
self.facebook_account.save()
resp = self.channel._getFeeds(self.facebook_account, None, fb_response_fields)
self.assertEqual(data['data'], resp)
mock_get.side_effect = requests.exceptions.ConnectTimeout
resp = self.channel._getFeeds(self.facebook_account, None, fb_response_fields)
self.assertEqual([], resp)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def string_to_date(value):
return parse_datetime(value)
def parse_datetime_with_timezone_support(value):
dt = parse_datetime(value)
# Confirm that dt is naive before overwriting its tzinfo.
if dt is not None and settings.USE_TZ and timezone.is_naive(dt):
dt = dt.replace(tzinfo=timezone.utc)
return dt
def from_native(self, value):
if value in validators.EMPTY_VALUES:
return None
if isinstance(value, datetime.datetime):
return value
if isinstance(value, datetime.date):
value = datetime.datetime(value.year, value.month, value.day)
if settings.USE_TZ:
# For backwards compatibility, interpret naive datetimes in
# local time. This won't work during DST change, but we can't
# do much about it, so we let the exceptions percolate up the
# call stack.
warnings.warn("DateTimeField received a naive datetime (%s)"
" while time zone support is active." % value,
RuntimeWarning)
default_timezone = timezone.get_default_timezone()
value = timezone.make_aware(value, default_timezone)
return value
for fmt in self.input_formats:
if fmt.lower() == ISO_8601:
try:
parsed = parse_datetime(value)
except (ValueError, TypeError):
pass
else:
if parsed is not None:
return parsed
else:
try:
parsed = datetime.datetime.strptime(value, fmt)
except (ValueError, TypeError):
pass
else:
return parsed
msg = self.error_messages['invalid'] % readable_datetime_formats(self.input_formats)
raise ValidationError(msg)
def dtparse(s):
return parse_datetime(s)
def convert_datetimefield_value(self, value, expression, connection, context):
if value is not None:
if not isinstance(value, datetime.datetime):
value = parse_datetime(value)
if settings.USE_TZ:
value = timezone.make_aware(value, self.connection.timezone)
return value
def _github_repos(self):
repos = cache.get('github_projects', [])[:6]
for repo in repos:
repo['updated_at'] = dateparse.parse_datetime(repo['updated_at'])
return repos
def _convert(self, value: Any):
if self.input_format is not None:
return datetime.datetime.strptime(value, self.input_format)
else:
return parse_datetime(value)
def convert_datetimefield_value(self, value, expression, connection, context):
if value is not None:
if not isinstance(value, datetime.datetime):
value = parse_datetime(value)
if settings.USE_TZ and not timezone.is_aware(value):
value = timezone.make_aware(value, self.connection.timezone)
return value