def history(self, request, pk=None):
instance = self.get_object()
user = request.query_params.get('user', None) # Default to all users
start = request.query_params.get('start', None) # In YYYY-MM-DD format
if start:
start = datetime.datetime.strptime(start, '%Y-%m-%d')
else:
start = datetime.datetime.min
start = timezone.make_aware(start, timezone.get_default_timezone())
end = request.query_params.get('end', None) # In YYYY-MM-DD format
if end:
end = datetime.datetime.strptime(start, '%Y-%m-%d')
else:
end = datetime.datetime.today()
end = timezone.make_aware(end, timezone.get_default_timezone())
history = []
for v, version in enumerate(Version.objects.get_for_object(instance).reverse()):
if (user is not None and version.revision.user.username != user) \
or version.revision.date_created < start \
or version.revision.date_created > end:
continue
history.append({'version': v,
'created': version.revision.date_created.strftime('%Y-%m-%d %H:%M:%S'),
'user': version.revision.user.username,
'data': version.field_dict})
return Response(history, status=200)
评论列表
文章目录