mirror of
https://github.com/Rushilwiz/spaceout.git
synced 2025-04-17 01:50:18 -04:00
fixed rest api for desktop app's purposes
This commit is contained in:
parent
33ca30975f
commit
e8547edf0e
25
site/api/migrations/0003_auto_20201213_0246.py
Normal file
25
site/api/migrations/0003_auto_20201213_0246.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Generated by Django 3.1.4 on 2020-12-13 07:46
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('api', '0002_remove_profile_profile_pic'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='classroom',
|
||||||
|
name='link',
|
||||||
|
field=models.CharField(default='https://meet.google.com/', max_length=100),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='classroom',
|
||||||
|
name='student',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='classes', to='api.profile'),
|
||||||
|
),
|
||||||
|
]
|
22
site/api/migrations/0004_auto_20201213_0331.py
Normal file
22
site/api/migrations/0004_auto_20201213_0331.py
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Generated by Django 3.1.4 on 2020-12-13 08:31
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('api', '0003_auto_20201213_0246'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='classroom',
|
||||||
|
options={'ordering': ['period']},
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='classroom',
|
||||||
|
name='period',
|
||||||
|
field=models.PositiveIntegerField(blank=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -22,10 +22,13 @@ class Profile(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class Classroom(models.Model):
|
class Classroom(models.Model):
|
||||||
student = models.ForeignKey(Profile, on_delete=models.CASCADE)
|
student = models.ForeignKey(Profile, related_name='classes', on_delete=models.CASCADE)
|
||||||
name = models.CharField(max_length=30)
|
name = models.CharField(max_length=30)
|
||||||
teacher = models.CharField(max_length=30)
|
teacher = models.CharField(max_length=30)
|
||||||
period = models.CharField(models.PositiveIntegerField, blank=True, unique=True, max_length=1)
|
link = models.CharField(max_length=100)
|
||||||
|
period = models.PositiveIntegerField(blank=True)
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.student.user.username}'s Class: {self.name}"
|
return f"{self.student.user.username}'s Class: {self.name}"
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordering = ['period']
|
||||||
|
|
|
@ -7,16 +7,30 @@ from .models import *
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = '__all__'
|
fields = ['id', 'username', 'first_name', 'last_name', 'email']
|
||||||
|
|
||||||
|
|
||||||
class ProfileSerializer(serializers.ModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Profile
|
|
||||||
fields = '__all__'
|
|
||||||
|
|
||||||
|
|
||||||
class ClassroomSerializer(serializers.ModelSerializer):
|
class ClassroomSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Classroom
|
model = Classroom
|
||||||
fields = '__all__'
|
fields = ['id', 'name', 'teacher', 'link', 'period']
|
||||||
|
|
||||||
|
|
||||||
|
class ProfileSerializer(serializers.ModelSerializer):
|
||||||
|
user = UserSerializer(required=True)
|
||||||
|
classes = ClassroomSerializer(many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Profile
|
||||||
|
fields = ['id', 'user', 'classes']
|
||||||
|
|
||||||
|
class ProfileDetailSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Profile
|
||||||
|
fields = ['id', 'user']
|
||||||
|
|
||||||
|
class ClassroomDetailSerializer(serializers.ModelSerializer):
|
||||||
|
student = ProfileDetailSerializer()
|
||||||
|
class Meta:
|
||||||
|
model = Classroom
|
||||||
|
fields = ['id', 'name', 'teacher', 'link', 'period', 'student']
|
||||||
|
|
|
@ -19,6 +19,8 @@ from .views import *
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('ping/', PingView.as_view()),
|
path('ping/', PingView.as_view()),
|
||||||
path('', GetProfile.as_view()),
|
path('user/', UserView.as_view()),
|
||||||
path('auth/create/user/', CreateUser.as_view()),
|
path('profile/', ProfileView.as_view()),
|
||||||
|
path('classes/', ClassroomView.as_view()),
|
||||||
|
path('classes/<int:class_id>', ClassroomDetail.as_view())
|
||||||
]
|
]
|
||||||
|
|
|
@ -10,6 +10,7 @@ from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
|
||||||
from .serializers import *
|
from .serializers import *
|
||||||
|
from .models import Profile
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
@ -34,43 +35,33 @@ def retry_on_exception(view, num_retries=3, on_failure=HttpResponse(status=500),
|
||||||
|
|
||||||
|
|
||||||
class PingView(View):
|
class PingView(View):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
return HttpResponse("python/django", status=200)
|
return HttpResponse("pong!", status=200)
|
||||||
|
|
||||||
|
|
||||||
class GetProfile(APIView):
|
class UserView(APIView):
|
||||||
serializer_class = ProfileSerializer
|
def get(self, request, format=None):
|
||||||
lookup_url_kwarg = 'id'
|
serializer = UserSerializer(request.user)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
def get(self, request):
|
class ProfileView(APIView):
|
||||||
pk = request.GET.get(self.lookup_url_kwarg)
|
def get(self, request, format=None):
|
||||||
|
profile = Profile.objects.get(user=request.user)
|
||||||
|
serializer = ProfileSerializer(profile)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
if pk:
|
class ClassroomView(APIView):
|
||||||
profile = User.objects.filter(id=pk)
|
def get(self, request, format=None):
|
||||||
if profile.exists():
|
classes = Profile.objects.get(user=request.user).classes
|
||||||
user_profile = Profile.objects.get(user=profile[0])
|
serializer = ClassroomSerializer(classes, many=True)
|
||||||
data = self.serializer_class(user_profile).data
|
return Response(serializer.data)
|
||||||
return Response(data, status=status.HTTP_200_OK)
|
|
||||||
return Response({'Profile Not Found': 'Invalid Profile id.'}, status=status.HTTP_404_NOT_FOUND)
|
|
||||||
return Response({'Bad Request': 'id parameter not found in request'}, status=status.HTTP_400_BAD_REQUEST)
|
|
||||||
|
|
||||||
|
class ClassroomDetail(APIView):
|
||||||
class CreateUser(APIView):
|
def get(self, request, *args, **kwargs):
|
||||||
serializer_class = UserSerializer
|
class_id = self.kwargs.get('class_id', None)
|
||||||
|
classroom = Classroom.objects.get(id=class_id)
|
||||||
def post(self, request, format=None):
|
if request.user == classroom.student.user:
|
||||||
username = request.data.get('username')
|
serializer = ClassroomDetailSerializer(classroom)
|
||||||
email = request.data.get('email')
|
return Response(serializer.data)
|
||||||
queryset1 = User.objects.filter(username=username)
|
|
||||||
queryset2 = User.objects.filter(email=email)
|
|
||||||
if queryset1.exists() or queryset2.exists():
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
user = User(email=email, username=username, password=request.data.get('password'))
|
return Response(status=status.HTTP_403_FORBIDDEN)
|
||||||
user.save()
|
|
||||||
profile = Profile(user=user)
|
|
||||||
profile.save()
|
|
||||||
return Response(self.serializer_class(user).data, status=status.HTTP_201_CREATED)
|
|
||||||
|
|
||||||
return Response({'Bad Request': 'Invalid data'}, status=status.HTTP_400_BAD_REQUEST)
|
|
|
@ -46,12 +46,12 @@ INSTALLED_APPS = [
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
'DEFAULT_AUTHENTICATION_CLASSES': (
|
'DEFAULT_AUTHENTICATION_CLASSES': (
|
||||||
'rest_framework.authentication.TokenAuthentication',
|
'rest_framework.authentication.BasicAuthentication',
|
||||||
'rest_framework.authentication.SessionAuthentication',
|
'rest_framework.authentication.SessionAuthentication',
|
||||||
),
|
),
|
||||||
# 'DEFAULT_PERMISSION_CLASSES': (
|
'DEFAULT_PERMISSION_CLASSES': (
|
||||||
# 'rest_framework.permissions.IsAuthenticated',
|
'rest_framework.permissions.IsAuthenticated',
|
||||||
# ),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|
Loading…
Reference in New Issue
Block a user