Files
decomp.me/backend/coreapp/views/user.py
T
Ethan Roseman f929174399 Dummy compiler + better error handling and reporting (#246)
* Initial work on dummy compiler + better exception / error stuff

* mypy

* Add more dummy functionality, fix some error handling, and organize views

* Imports, suggestion

* force include the dummy compiler

* attempt to fix issues

* Fix docker?

* undo dumb

* suggestion

* sugg2

* Turn off sandbox on winders

* oops

* PR suggestions, a new test, cleanup

* mypy

* Front-end dummy compiler, logging fix

* new prod option that removes dummy

* Cleanup, fixes

* cleanup

* more cleanin

* PROD -> DUMMY_COMPILER, move dummy config out of fs

* DJANGO_LOG_LEVEL as environ setting

* fix Dockerfile

* suggestion

* dummy off
2021-12-26 20:30:21 +09:00

49 lines
1.4 KiB
Python

from django.contrib.auth import logout
from django.shortcuts import get_object_or_404
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.views import APIView
from coreapp.middleware import Request
from coreapp.models import Profile
from coreapp.serializers import serialize_profile
from ..github import GitHubUser
class CurrentUser(APIView):
"""
View to access the current user profile.
"""
def get(self, request: Request):
user = serialize_profile(request, request.profile)
assert user["is_you"] == True
return Response(user)
def post(self, request: Request):
"""
Login if the 'code' parameter is provided. Log out otherwise.
"""
if "code" in request.data:
GitHubUser.login(request, request.data["code"])
return Response(serialize_profile(request, request.profile))
else:
logout(request)
profile = Profile()
profile.save()
request.profile = profile
request.session["profile_id"] = request.profile.id
return Response(serialize_profile(request, request.profile))
@api_view(["GET"])
def user(request, username):
"""
Gets a user's basic data
"""
return Response(serialize_profile(request, get_object_or_404(Profile, user__username=username)))