add benchcoach user profile, implement login

This commit is contained in:
2021-12-17 12:58:02 -06:00
parent 96d3801fae
commit 212d2d0ac1
10 changed files with 1281 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
from django.contrib import admin
from .models import Profile
from .models import Profile, TeamsnapSettings
# Register your models here.
admin.site.register(Profile)
admin.site.register(TeamsnapSettings)

File diff suppressed because it is too large Load Diff

View 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')),
],
),
]

View 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'),
),
]

View File

@@ -1,5 +1,5 @@
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
@@ -10,5 +10,9 @@ def user_directory_path(instance, filename):
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
teamsnap_access_token = models.CharField(null=True, max_length=50)
teamsnap_user = models.ForeignKey(TeamsnapUser, on_delete=models.CASCADE, null=True)
avatar = models.ImageField(upload_to="avatar", null=True, blank=True)
teamsnap_user = models.ForeignKey(TeamsnapUser, on_delete=models.CASCADE, 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)

View File

@@ -18,7 +18,7 @@ from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from .views import welcome
from .views import welcome, user_login
urlpatterns = [
path('', welcome, name="home"),
@@ -28,5 +28,6 @@ urlpatterns = [
path('venues/', include('venues.urls')),
path('players/', include('players.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)

View File

@@ -1,6 +1,31 @@
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):
pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home']
return render(request,'home.html',{'pages':pages})
pages = ['events list', 'teams list', 'venues list', 'players list', 'teamsnap list events', 'teamsnap home', 'login']
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')

View File

@@ -23,12 +23,13 @@ def edit_event(request, id):
return redirect(event.edit_url)
def home(request):
current_benchcoach_user = BenchcoachUser.objects.get(id=1)
current_teamsnap_user = current_benchcoach_user.teamsnap_user
current_benchcoach_user = request.user
current_teamsnap_user = request.user.profile.teamsnap_user
current_teamsnap_team = request.user.profile.teamsnapsettings.managed_team
context= {
'user': request.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)

20
templates/login.html Normal file
View 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 %}