Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin' into wonkaStyling
Browse files Browse the repository at this point in the history
  • Loading branch information
cookiewho committed Oct 22, 2021
2 parents 1044116 + 117445c commit 52af5e2
Show file tree
Hide file tree
Showing 8 changed files with 257 additions and 124 deletions.
11 changes: 10 additions & 1 deletion wishlist/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from rest_framework.authtoken.views import Token
from rest_framework.exceptions import NotAuthenticated
from .models import UserList, Item
import re

class UserSerializer(serializers.ModelSerializer):
password2 =serializers.CharField(style={'input_type': 'password'}, write_only=True)
Expand All @@ -25,10 +26,18 @@ def save(self):
password = self.validated_data['password']
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({'password': "Password must match."})
raise serializers.ValidationError({"Password must match.": "Password"})
if len(password) < 6 :
print("password is small")
raise serializers.ValidationError({"Password must be greater than 6 characters.": "Password"})
if re.match(r"^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[!?@#$])[\w\d!?@#$]{6,15}$", password) == False:
print("password is not valid")
raise serializers.ValidationError({ "Password must include 1 lower case and 1 upper case lette, as well as a special character !.?,@,#, or $.": "Password"})

user.set_password(password)
user.save()
return user




Expand Down
3 changes: 2 additions & 1 deletion wishlist/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@

urlpatterns = [
path('create_users/', create_users, name='create_user_view'),
path('create_users2/', create_users2, name='create_user2_view'),
path('login/', login, name='login'),
path('logout/', logout, name='logout'),
path('view_users/', view_users, name='view_users_view'),
path('view_user/<str:pk>/', view_user, name='view_user_view'),
path('get_ID/<str:pk>/', get_id, name='get_ID_view'),
path('update_user/<str:pk>', update_user, name='update_user_view'),
path('delete_user/<str:pk>', delete_user, name='register_view'),
path('view_items/', view_items, name='view_items_view'),
path('view_item_by_id/<str:pk>', view_items_by_id, name='view_item_by_id_view'),
path('view_userlists/', view_userlists, name='view_userlists_view'),
path('view_userlists_by_userId/<str:pk>', view_userlist_by_userId, name='view_userlists_by_userId_view'),
path('view_item_by_userlistID/<str:pk>', view_items_by_userlistID, name='view_item_by_userlistID_view'),
path('view_items_by_user_id/<str:pk1>/<str:pk2>', view_items_by_user, name='view_items_by_user_id_view'),
path('view_item_by_user_id/<str:pk1>/<str:pk2>/<str:pk3>', view_item_by_user, name='view_item_by_user_id_view'),
Expand Down
82 changes: 56 additions & 26 deletions wishlist/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from rest_framework import permissions
from rest_framework.parsers import JSONParser
from django.http import HttpResponse, JsonResponse
from rest_framework.renderers import JSONRenderer
from .serializers import *
from .models import UserList, Item
from .forms import ItemUpdateForm
Expand All @@ -19,8 +20,7 @@
from django.contrib.auth import authenticate, get_user_model, update_session_auth_hash
from django.contrib.auth.decorators import login_required
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from django.db import IntegrityError
import io

# from django.db.models import Q
# from rest_framework.filters import (SearchFilter, OrderingFilter)
Expand All @@ -43,40 +43,59 @@ def view_user(request, pk):
serializer = UserSerializer(user, many=False)
return Response(serializer.data, status=status.HTTP_200_OK)

#[url]/api/create_user/
@api_view(['POST'])
def create_users2(request):
if request.method == 'POST':
serializer1 = UserSerializer(data=request.data)
if serializer1.is_valid():
#serializer1.save()
# create_newUserList(request)
#serializer2 = UserListSerializer2(instance=serializer1, data=request.data)
# if serializer2.is_valid():
# serializer1.save()
# serializer2.save()
# return Response(serializer1.data, status=status.HTTP_201_CREATED)
return Response(serializer1.data, status=status.HTTP_400_BAD_REQUEST)
return Response(serializer1.errors, status=status.HTTP_400_BAD_REQUEST)
#[url]/api/view_user/<id>/
@api_view(['GET'])
def get_id(request, pk):
try:
user = User.objects.get(username=pk)
except User.DoesNotExist:
return Response("User not found")
serializer = UserSerializer(user, many=False)
return Response(serializer.data, status=status.HTTP_200_OK)



#[url]/api/create_user/
@api_view(['POST'])
def create_users(request):
if request.method == 'POST':
serializer1 = UserSerializer(data=request.data)
if serializer1.is_valid():
# create_newUserList(request)
#Get the data and save it. User Creation
serializer1.save()
# newUserList = UserList.objects.create(serializer1)
#newUserList = create_newUserList(serializer1.data)
# if(newUserList == UserList):
return Response(serializer1.data, status=status.HTTP_201_CREATED)
# else:
# return Response(status=status.HTTP_400_BAD_REQUEST)

#Deserializes the data
json = JSONRenderer().render(serializer1.data)
stream = io.BytesIO(json)
data = JSONParser().parse(stream)

#Get the username from the deserialized data
username = data["username"]

#Find the user object that has the username with the inputed username
user = User.objects.get(username=username)

#Create a serializer2 BUT do not save it
serializer2 = UserSerializer(user, many=False)

#Deserializes the serializer2 to get the data
json1 = JSONRenderer().render(serializer2.data)
stream1 = io.BytesIO(json1)
data = JSONParser().parse(stream1)

#Get the id of the user
id = data["id"]

#Create a user list object with the user_id
newUserList = UserList.objects.create(user_id=id)

#Save the new user list
newUserList.save()
return Response(serializer1.data, status=status.HTTP_200_OK)
errors = []
for key, values in serializer1.errors.items():
errors = [value[:] for value in values]
return Response(errors, status=status.HTTP_400_BAD_REQUEST)
return Response(errors, status=status.HTTP_400_BAD_REQUEST)

#[url]/api/login/
@api_view(['POST'])
Expand Down Expand Up @@ -139,6 +158,14 @@ def view_userlists(request):
serializer = UserListSerializer(userlist, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)

#[url]/view_userlists/
@api_view(['GET'])
def view_userlist_by_userId(request, pk):
user = User.objects.get(id=pk)
userlist = UserList.objects.get(user=user)
serializer = UserListSerializer(userlist, many=False)
return Response(serializer.data, status=status.HTTP_200_OK)

#view items by userlist_id in Userlist
#[url]/view_items_by_user_id/<id>
@api_view(['GET'])
Expand Down Expand Up @@ -190,7 +217,7 @@ def create_item_by_user(request, pk1, pk2, pk3):

#delete a item in the userlist by user_id, userlist_id, and item_id
#[url]/delete_item_by_user/<user_id>/<userlist_id>/<item_id>
@api_view(['DELETE'])
@api_view(['DELETE', 'GET'])
def delete_item_by_user(request, pk1, pk2, pk3):
try:
user = User.objects.get(id=pk1)
Expand All @@ -203,6 +230,9 @@ def delete_item_by_user(request, pk1, pk2, pk3):

#update a item in the userlist by user_id, userlist_id, and item_id
#[url]/update_item_by_user/<user_id>/<userlist_id>/<item_id>
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
@api_view(['PUT'])
def update_item_by_user(request, pk1, pk2, pk3):
try:
Expand Down
4 changes: 3 additions & 1 deletion wishlist/home/templates/home/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
<div class="navbar-nav">
<a class="nav-item nav-link" href="/login">Login</a>
<a class="nav-item nav-link" href="/register">Register</a>
<a class="nav-item nav-link" href="/userlist">Wishlist</a>
<a class="nav-item nav-link" href="/items">Shop</a>
<a class="nav-item nav-link" href="/accountDetails">Account</a>
</div>
Expand Down Expand Up @@ -71,7 +72,8 @@
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ"
crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.11.0/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</body>

</html>
Loading

0 comments on commit 52af5e2

Please sign in to comment.