Merging ch 3&4 work #2

Merged
JMR-dev merged 3 commits from jrbk2-ch3 into main 2022-02-07 21:04:11 +00:00
17 changed files with 223 additions and 25 deletions
Showing only changes of commit 7e8a2c20a7 - Show all commits
+1 -2
View File
@@ -1,9 +1,8 @@
{
"python.linting.pylintArgs": [
"--load-plugins=pylint_django",
"--django-settings-module=<levelup-server>.settings",
"--django-settings-module=levelup.settings",
],
"python.pythonPath": "/Users/jason.ross/.local/share/virtualenvs/levelup-server-Wy00p224/bin/python",
"python.linting.pylintEnabled": true,
"python.linting.enabled": true
}
+5 -1
View File
@@ -14,8 +14,12 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.conf.urls import include
from django.urls import path
from levelupapi.views import register_user, login_user
urlpatterns = [
path('register', register_user),
path('login', login_user),
path('admin/', admin.site.urls),
]
]
+3 -4
View File
@@ -1,5 +1,4 @@
SELECT * FROM LEVELUPAPI_GAMER;
INSERT INTO levelupapi_gamer(bio, user_id)
VALUES ("My name is Jason", 1);
SELECT * FROM auth_user;
SELECT * FROM authtoken_token;
SELECT * FROM levelupapi_gamer;
+24
View File
@@ -0,0 +1,24 @@
[
{
"model":"levelupapi.event",
"pk": 1,
"fields":{
"game": 1,
"description": "Dungeons and Dragons session 0, ",
"date": "2022-02-15",
"time": "19:00",
"organizer": 1
}
},
{
"model":"levelupapi.event",
"pk": 2,
"fields":{
"game": 2,
"description": "Raid on the Lich King, final Alliance campaign raid",
"date": "2022-02-22",
"time": "12:00",
"organizer": 1
}
}
]
+23
View File
@@ -0,0 +1,23 @@
[
{
"model": "levelupapi.gametype",
"pk": 1,
"fields": {
"label": "Board game"
}
},
{
"model": "levelupapi.gametype",
"pk": 2,
"fields": {
"label": "Role-playing game"
}
},
{
"model": "levelupapi.gametype",
"pk": 3,
"fields": {
"label": "MMO game"
}
}
]
+10
View File
@@ -0,0 +1,10 @@
[
{
"model": "levelupapi.gamer",
"pk": 1,
"fields": {
"user": 1,
"bio": "Me"
}
}
]
+27
View File
@@ -0,0 +1,27 @@
[
{
"model": "levelupapi.game",
"pk":1,
"fields": {
"game_type": 2,
"title": "Dungeons & Dragons, 5th edition",
"maker": "Wizards of the Coast",
"gamer" : 1,
"number_of_players": 4,
"skill_level": 6
}
},
{
"model": "levelupapi.game",
"pk": 2,
"fields": {
"game_type": 2,
"title": "World of Warcraft",
"maker": "Blizzard/Activision",
"gamer" : 1,
"number_of_players": 10000,
"skill_level": 4
}
}
]
+10
View File
@@ -0,0 +1,10 @@
[
{
"model": "authtoken.token",
"pk": "fa2eba9be8282d595c997ee5cd49f2ed31f65bed",
"fields": {
"user": 1,
"created": "2020-08-29T13:24:27.172Z"
}
}
]
+20
View File
@@ -0,0 +1,20 @@
[
{
"model": "auth.user",
"pk": 1,
"fields": {
"password": "pbkdf2_sha256$216000$qMRH8szID7Z8$Vljya2V3XfruOHuvx1hGz9ZyKg4bxbw7rc2WO0gTR7I=",
"last_login": null,
"is_superuser": false,
"username": "Carrie1945",
"first_name": "Carrie",
"last_name": "Belk",
"email": "me@me.com",
"is_staff": false,
"is_active": true,
"date_joined": "2020-08-28T14:51:39.989Z",
"groups": [],
"user_permissions": []
}
}
]
@@ -1,4 +1,4 @@
# Generated by Django 4.0.1 on 2022-02-04 22:44
# Generated by Django 4.0.1 on 2022-02-07 16:48
from django.conf import settings
from django.db import migrations, models
@@ -15,7 +15,16 @@ class Migration(migrations.Migration):
operations = [
migrations.CreateModel(
name='Game_Type',
name='Event',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', models.CharField(max_length=256)),
('date', models.DateField()),
('time', models.TimeField(verbose_name='')),
],
),
migrations.CreateModel(
name='GameType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('label', models.CharField(max_length=50)),
@@ -37,19 +46,26 @@ class Migration(migrations.Migration):
('maker', models.CharField(max_length=256)),
('number_of_players', models.IntegerField()),
('skill_level', models.IntegerField()),
('game_type', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.game_type')),
('game_type', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.gametype')),
('gamer', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.gamer')),
],
),
migrations.CreateModel(
name='Event',
name='EventGamer',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', models.CharField(max_length=256)),
('date', models.DateField()),
('time', models.TimeField(verbose_name='')),
('game', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.game')),
('organizer', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.gamer')),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='levelupapi.event')),
('gamer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='levelupapi.gamer')),
],
),
migrations.AddField(
model_name='event',
name='game',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.game'),
),
migrations.AddField(
model_name='event',
name='organizer',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='levelupapi.gamer'),
),
]
-1
View File
@@ -1 +0,0 @@
from levelupapi.migrations.initial import migrations
+2 -2
View File
@@ -1,5 +1,5 @@
from levelupapi.models.gamer import Gamer
from levelupapi.models.events import Event
from levelupapi.models.game import Game
# from .game_type import Game_Type
# from .event_gamer import Event_Gamer
from levelupapi.models.game_type import GameType
from levelupapi.models.event_gamer import EventGamer
+3 -3
View File
@@ -1,9 +1,9 @@
from django.db import models
from levelupapi.models.gamer import Gamer
from levelupapi.models.events import Event
class Event_Gamer(models.Model):
class EventGamer(models.Model):
#Event won't change color for some reason. Reference this if something breaks later
gamer= models.ForeignKey(Gamer)
event = models.ForeignKey(Event)
gamer= models.ForeignKey("Gamer", on_delete=models.CASCADE)
event = models.ForeignKey("Event", on_delete=models.CASCADE)
+2 -2
View File
@@ -1,11 +1,11 @@
from django.db import models
from levelupapi.models.game_type import Game_Type
from levelupapi.models.game_type import GameType
from levelupapi.models.gamer import Gamer
class Game(models.Model):
game_type = models.ForeignKey(Game_Type, on_delete=models.DO_NOTHING)
game_type = models.ForeignKey(GameType, on_delete=models.DO_NOTHING)
title = models.CharField(max_length=256)
maker = models.CharField(max_length=256)
gamer = models.ForeignKey(Gamer, on_delete=models.DO_NOTHING)
+1 -1
View File
@@ -1,6 +1,6 @@
from django.db import models
class Game_Type(models.Model):
class GameType(models.Model):
label= models.CharField(max_length=50)
+1
View File
@@ -0,0 +1 @@
from .auth import login_user, register_user
+66
View File
@@ -0,0 +1,66 @@
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from levelupapi.models import Gamer
@api_view(['POST'])
@permission_classes([AllowAny])
def login_user(request):
'''Handles the authentication of a gamer
Method arguments:
request -- The full HTTP request object
'''
username = request.data['username']
password = request.data['password']
# Use the built-in authenticate method to verify
# authenticate returns the user object or None if no user is found
authenticated_user = authenticate(username=username, password=password)
# If authentication was successful, respond with their token
if authenticated_user is not None:
token = Token.objects.get(user=authenticated_user)
data = {
'valid': True,
'token': token.key
}
return Response(data)
else:
# Bad login details were provided. So we can't log the user in.
data = { 'valid': False }
return Response(data)
@api_view(['POST'])
@permission_classes([AllowAny])
def register_user(request):
'''Handles the creation of a new gamer for authentication
Method arguments:
request -- The full HTTP request object
'''
# Create a new user by invoking the `create_user` helper method
# on Django's built-in User model
new_user = User.objects.create_user(
username=request.data['username'],
password=request.data['password'],
first_name=request.data['first_name'],
last_name=request.data['last_name']
)
# Now save the extra info in the levelupapi_gamer table
gamer = Gamer.objects.create(
bio=request.data['bio'],
user=new_user
)
# Use the REST Framework's token generator on the new user account
token = Token.objects.create(user=gamer.user)
# Return the token to the client
data = { 'token': token.key }
return Response(data)