add benchcoach user profile, implement login
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Profile
|
from .models import Profile, TeamsnapSettings
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(Profile)
|
admin.site.register(Profile)
|
||||||
|
admin.site.register(TeamsnapSettings)
|
||||||
|
|||||||
1173
benchcoach/fixtures/minimal.json
Normal file
1173
benchcoach/fixtures/minimal.json
Normal file
File diff suppressed because it is too large
Load Diff
23
benchcoach/migrations/0007_teamsnapsettings.py
Normal file
23
benchcoach/migrations/0007_teamsnapsettings.py
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Generated by Django 3.2.6 on 2021-12-16 18:53
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('teamsnap', '0019_auto_20211216_1851'),
|
||||||
|
('benchcoach', '0006_alter_profile_avatar'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TeamsnapSettings',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('managed_team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teamsnap.team')),
|
||||||
|
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='benchcoach.profile')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
20
benchcoach/migrations/0008_alter_profile_teamsnap_user.py
Normal file
20
benchcoach/migrations/0008_alter_profile_teamsnap_user.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Generated by Django 3.2.6 on 2021-12-16 18:56
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('teamsnap', '0019_auto_20211216_1851'),
|
||||||
|
('benchcoach', '0007_teamsnapsettings'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='profile',
|
||||||
|
name='teamsnap_user',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='teamsnap.user'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from teamsnap.models import User as TeamsnapUser
|
from teamsnap.models import User as TeamsnapUser, Team as TeamsnapTeam
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
||||||
@@ -10,5 +10,9 @@ def user_directory_path(instance, filename):
|
|||||||
class Profile(models.Model):
|
class Profile(models.Model):
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||||
teamsnap_access_token = models.CharField(null=True, max_length=50)
|
teamsnap_access_token = models.CharField(null=True, max_length=50)
|
||||||
teamsnap_user = models.ForeignKey(TeamsnapUser, on_delete=models.CASCADE, null=True)
|
teamsnap_user = models.ForeignKey(TeamsnapUser, on_delete=models.CASCADE, null=True, blank=True)
|
||||||
avatar = models.ImageField(upload_to="avatar", null=True, blank=True)
|
avatar = models.ImageField(upload_to="avatar", null=True, blank=True)
|
||||||
|
|
||||||
|
class TeamsnapSettings(models.Model):
|
||||||
|
user = models.OneToOneField(Profile, on_delete=models.CASCADE)
|
||||||
|
managed_team = models.ForeignKey(TeamsnapTeam, on_delete=models.CASCADE)
|
||||||
@@ -18,7 +18,7 @@ from django.urls import path, include
|
|||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from .views import welcome
|
from .views import welcome, user_login
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', welcome, name="home"),
|
path('', welcome, name="home"),
|
||||||
@@ -28,5 +28,6 @@ urlpatterns = [
|
|||||||
path('venues/', include('venues.urls')),
|
path('venues/', include('venues.urls')),
|
||||||
path('players/', include('players.urls')),
|
path('players/', include('players.urls')),
|
||||||
path('lineups/', include('lineups.urls')),
|
path('lineups/', include('lineups.urls')),
|
||||||
path('teamsnap/', include('teamsnap.urls'))
|
path('teamsnap/', include('teamsnap.urls')),
|
||||||
|
path('login', user_login, name="login")
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
|||||||
@@ -1,6 +1,31 @@
|
|||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render,redirect, reverse, HttpResponseRedirect
|
||||||
|
from django.contrib.auth import login,authenticate
|
||||||
|
|
||||||
def welcome(request):
|
def welcome(request):
|
||||||
pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home']
|
pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home', 'login']
|
||||||
return render(request,'home.html',{'pages':pages})
|
return render(request,'home.html',{'pages':pages})
|
||||||
|
|
||||||
|
|
||||||
|
def user_login(request):
|
||||||
|
if request.method == 'POST':
|
||||||
|
username = request.POST.get('username')
|
||||||
|
password = request.POST.get('password')
|
||||||
|
|
||||||
|
try:
|
||||||
|
user = authenticate(request, username=username, password=password)
|
||||||
|
if user is not None:
|
||||||
|
print('Login')
|
||||||
|
login(request,user)
|
||||||
|
return redirect(reverse('home'))
|
||||||
|
else:
|
||||||
|
print("Someone tried to login and failed.")
|
||||||
|
print("They used username: {} and password: {}".format(username, password))
|
||||||
|
|
||||||
|
return redirect('/')
|
||||||
|
except Exception as identifier:
|
||||||
|
|
||||||
|
return redirect('/')
|
||||||
|
|
||||||
|
else:
|
||||||
|
return render(request, 'login.html')
|
||||||
@@ -23,12 +23,13 @@ def edit_event(request, id):
|
|||||||
return redirect(event.edit_url)
|
return redirect(event.edit_url)
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
current_benchcoach_user = BenchcoachUser.objects.get(id=1)
|
current_benchcoach_user = request.user
|
||||||
current_teamsnap_user = current_benchcoach_user.teamsnap_user
|
current_teamsnap_user = request.user.profile.teamsnap_user
|
||||||
|
current_teamsnap_team = request.user.profile.teamsnapsettings.managed_team
|
||||||
context= {
|
context= {
|
||||||
'user': request.user,
|
|
||||||
'benchcoach_user': current_benchcoach_user,
|
'benchcoach_user': current_benchcoach_user,
|
||||||
'teamsnap_user': current_teamsnap_user
|
'teamsnap_user': current_teamsnap_user,
|
||||||
|
'teamsnap_team':current_teamsnap_team
|
||||||
}
|
}
|
||||||
return render(request, 'teamsnap/home.html', context)
|
return render(request, 'teamsnap/home.html', context)
|
||||||
|
|
||||||
|
|||||||
20
templates/login.html
Normal file
20
templates/login.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{% extends "base.html" %}{% load static %}
|
||||||
|
|
||||||
|
{% block title %}Bench Coach Home{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<form method="post" action="{% url "login" %}">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<header>Login</header>
|
||||||
|
<label>Username <span>*</span></label>
|
||||||
|
<input type="text" name="username" placeholder="Username" required="" />
|
||||||
|
<div class="help">At least 5 character</div>
|
||||||
|
<label>Password <span>*</span></label>
|
||||||
|
<input type="password" name="password" placeholder="Password" required="" />
|
||||||
|
<div class="help">Use upper and lowercase letters as well</div>
|
||||||
|
<button type="submit">Login</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user