Skip to content
This repository has been archived by the owner on Jul 6, 2019. It is now read-only.

feat(application): add separate resume route #20

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions application/migrations/0002_auto_20181004_0406.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 2.1 on 2018-10-04 04:06

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('application', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Resume',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('resume', models.FileField(upload_to='resume/')),
],
),
migrations.RemoveField(
model_name='application',
name='resume',
),
]
4 changes: 3 additions & 1 deletion application/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ class Application(models.Model):
github = models.CharField(max_length = 250)
linkedin = models.CharField(max_length = 250)
personal_website = models.CharField(max_length = 250)
resume = models.FileField(upload_to='resume/',blank = False, null = False)
#Short Answer
short_answer = models.TextField()
#Statistical Qustions
Expand All @@ -81,4 +80,7 @@ class User(models.Model):
created = models.DateTimeField(auto_now_add = True)
username = models.CharField(max_length = 250)
password = models.CharField(max_length = 250)
class Resume(models.Model):
resume = models.FileField(upload_to='resume/',blank = False, null = False)


8 changes: 6 additions & 2 deletions application/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from rest_framework import serializers, permissions
from application.models import Application
from application.models import Application, Resume
from django.contrib.auth.models import User
from rest_framework import permissions

Expand All @@ -11,9 +11,13 @@ class Meta:
fields = ('id','first_name', 'last_name', 'email',
'phone_number','is_eighteen', 'school', 'graduation_date', 'major',
'city', 'dietary_restrictions', 'allergies', 'github', 'linkedin',
'personal_website', 'resume', 'short_answer', 'gender', 'ethnicity',
'personal_website', 'short_answer', 'gender', 'ethnicity',
'anything_else', 'agreed')
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'id', 'username', 'password')
class ResumeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Resume
fields = ('resume',)
1 change: 1 addition & 0 deletions application/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@
path('applications/<int:pk>', views.application_detail, name="application_detail"),
path('applications/<int:pk>/<value>', views.application_detail, name="application_detail"),
path('questions/', views.questions, name="questions"),
path('resume/', views.resume_upload, name="resume_upload"),
]
18 changes: 13 additions & 5 deletions application/views.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from __future__ import unicode_literals
from application.models import Application
from application.serializers import ApplicationSerializer, UserSerializer
from application.models import Application, Resume
from application.serializers import ApplicationSerializer, UserSerializer, ResumeSerializer
from rest_framework import generics, renderers, viewsets, permissions, status
from django.contrib.auth.models import User
from rest_framework.decorators import api_view, action, parser_classes
from rest_framework.response import Response
from rest_framework.reverse import reverse
from rest_framework.request import Request
from rest_framework.test import APIRequestFactory
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser, FileUploadParser

# Create your views here.
@api_view(['GET', 'POST'])
Expand All @@ -23,7 +23,6 @@ def application_list(request, format=None):
serializer = ApplicationSerializer(data=request.data)
queryset = Application.objects.all()
if serializer.is_valid():
serializer.save(resume = request.data.get('resume'))
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Expand All @@ -49,14 +48,23 @@ def application_detail(request, pk, value=None, format=None):
elif request.method == 'PUT':
serializer = ApplicationSerializer(application, data=request.data)
if serializer.is_valid():
serializer.save(resume = request.data.get('resume'))
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

elif request.method == 'DELETE':
application.delete()
return Response(status=status.HTTP_204_NO_CONTENT)

@api_view(['POST'])
@parser_classes((JSONParser, MultiPartParser, FormParser, FileUploadParser))
def resume_upload(request, format=None):
if request.method == 'POST':
serializer = ResumeSerializer(data=request.data)
if serializer.is_valid():
serializer.save(resume = request.data.get('resume'))
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

# class ApplicationViewSet(viewsets.ModelViewSet):
# queryset = Application.objects.all()
# serializer_class = ApplicationSerializer
Expand Down