Last active
July 29, 2021 10:01
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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