Archived
completed ch 3 & 4
This commit is contained in:
Vendored
+1
-2
@@ -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
@@ -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
@@ -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;
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"model": "levelupapi.gamer",
|
||||
"pk": 1,
|
||||
"fields": {
|
||||
"user": 1,
|
||||
"bio": "Me"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"model": "authtoken.token",
|
||||
"pk": "fa2eba9be8282d595c997ee5cd49f2ed31f65bed",
|
||||
"fields": {
|
||||
"user": 1,
|
||||
"created": "2020-08-29T13:24:27.172Z"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -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 +0,0 @@
|
||||
from levelupapi.migrations.initial import migrations
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Game_Type(models.Model):
|
||||
class GameType(models.Model):
|
||||
|
||||
label= models.CharField(max_length=50)
|
||||
@@ -0,0 +1 @@
|
||||
from .auth import login_user, register_user
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user