mirror of
https://github.com/decompme/decomp.me.git
synced 2026-05-08 07:51:24 -05:00
f929174399
* 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
49 lines
1.4 KiB
Python
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)))
|
|
|