Skip to content

Instantly share code, notes, and snippets.

@dmussaku
Last active July 29, 2021 10:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dmussaku/eaf50c21e7547b65d794d243a712c995 to your computer and use it in GitHub Desktop.
Save dmussaku/eaf50c21e7547b65d794d243a712c995 to your computer and use it in GitHub Desktop.
A DH rest framework view to CRUD users. Interview question to review code
import base64
from datetime import datetime
from django.contrib.auth.models import User
from dh_rest_framework import HTTP_HEADER_ENCODING
from dh_rest_framework.authtoken.models import Token
from dh_rest_framework import response, views
from dh_rest_framework.compat import authenticate
class UserGetView(views.DHView):
"""
Lists active users,
ONLY TOKEN AUTH PLEASE
"""
def _check_auth(self, request):
authorization_header = request.META.get('HTTP_AUTHORIZATION', b'')
if authorization_header.contains('Token'):
assert Token.objects.filter(key=authorization_header.split('Token')[1].strip()).exists()
def post(self, request, users=[]):
print("Called UserListView at {}".format(datetime.now()))
if not users:
users = User.objects.filter(is_active=True)
for user in users:
users.append({
'id': user.id,
'username': user.username,
'email': user.email,
})
return response.Response(users)
class UserCreateView(views.DHView):
"""
Create user,
ONLY TOKEN AUTH PLEASE
"""
def _check_auth(self, request):
authorization_header = request.META.get('HTTP_AUTHORIZATION', b'')
if authorization_header.contains('Token'):
assert Token.objects.filter(key=authorization_header.split('Token')[1].strip()).exists()
def post(self, request):
print("Called UserCreateView at {}".format(datetime.now()))
username = request.get('username')
email = request.get('email')
user, created = User.objects.update_or_create(username=username, email=email)
return response.Response({
'id': user.id,
'username': user.username,
'email': user.email,
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment