Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API for Jobs #77

Closed
wants to merge 17 commits into from
53 changes: 13 additions & 40 deletions furbaby/api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from rest_framework import serializers
from .models import Users, Locations, Pets
from .models import Users, Pets, Jobs, Locations, Applications
from django.contrib.auth.hashers import make_password
from django.core.exceptions import ValidationError

Expand Down Expand Up @@ -103,49 +103,22 @@ class Meta:
exclude = ()


class UserLocationSerializer(serializers.Serializer):
class JobSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default=serializers.CurrentUserDefault())
address = serializers.CharField(max_length=200)
city = serializers.CharField(max_length=100)
country = serializers.CharField(max_length=100)
zipcode = serializers.CharField(max_length=20)
default_location = serializers.BooleanField()

class Meta:
model = Locations
fields = [
"user_id",
"address",
"city",
"country",
"zipcode",
"default_location",
]
model = Jobs
exclude = ("status",)

# TODO: There should be only one default address per user
def validate(self, data):
city = data.get("city", "")
city = str(city).lower()
country = data.get("country", "")
country = str(country).lower()
def create(self, validated_data):
# Set the default value for 'status' to 'open'
validated_data["status"] = "open"
return super().create(validated_data)

cities_allowed_list = ["new york city", "nyc"]
countries_allowed_list = [
"united states",
"usa",
"us",
"america",
"united states of america",
]

if city not in cities_allowed_list:
raise ValidationError("Users must be located in New York City/NYC")
if country not in countries_allowed_list:
raise ValidationError("Users must be located in the United States of America/USA")
if data.get("default_location", True):
# If the user is setting a default location, set all other locations to false
Locations.objects.filter(user_id=data.get("user").id).update(default_location=False)
return data
class ApplicationSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default=serializers.CurrentUserDefault())

def create(self, validated_data):
return Locations.objects.create(**validated_data)
class Meta:
model = Applications
fields = "__all__"
12 changes: 9 additions & 3 deletions furbaby/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@

from . import views
from .views import UserRegistrationView
from .views import UserLoginView, PetListCreateView, PetRetrieveUpdateDeleteView
from .views import (
UserLoginView,
PetListCreateView,
PetRetrieveUpdateDeleteView,
JobView,
ApplicationView,
)

# csrf

Expand All @@ -22,10 +28,10 @@
include("django_rest_passwordreset.urls", namespace="password_reset"),
),
path("api/user", views.user_view, name="user-info"),
path("api/user/locations", views.user_location_view, name="user-location"),
path("pets/", PetListCreateView.as_view(), name="pet-list-create"),
path(
"pets/<uuid:pk>/", PetRetrieveUpdateDeleteView.as_view(), name="pet-retrieve-update-delete"
),
path("api/user/locations", views.user_location_view, name="user-location"),
path("jobs/", JobView.as_view(), name="custom-job-view"),
path("applications/", ApplicationView.as_view(), name="application-list"),
]
Loading