add benchcoach user profile, implement login
This commit is contained in:
@@ -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)
|
||||
|
||||
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 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)
|
||||
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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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']
|
||||
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')
|
||||
@@ -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
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