From 212d2d0ac1deeee3df8a510186ce94bc4fc3fdb5 Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 17 Dec 2021 12:58:02 -0600 Subject: [PATCH] add benchcoach user profile, implement login --- benchcoach/admin.py | 3 +- benchcoach/fixtures/minimal.json | 1173 +++++++++++++++++ .../migrations/0007_teamsnapsettings.py | 23 + .../0008_alter_profile_teamsnap_user.py | 20 + benchcoach/models.py | 10 +- benchcoach/urls.py | 5 +- benchcoach/views.py | 31 +- .../{2021cmba.json => _2021cmba.json} | 0 teamsnap/views.py | 9 +- templates/login.html | 20 + 10 files changed, 1281 insertions(+), 13 deletions(-) create mode 100644 benchcoach/fixtures/minimal.json create mode 100644 benchcoach/migrations/0007_teamsnapsettings.py create mode 100644 benchcoach/migrations/0008_alter_profile_teamsnap_user.py rename teamsnap/fixtures/{2021cmba.json => _2021cmba.json} (100%) create mode 100644 templates/login.html diff --git a/benchcoach/admin.py b/benchcoach/admin.py index 123dd95..0a853f9 100644 --- a/benchcoach/admin.py +++ b/benchcoach/admin.py @@ -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) diff --git a/benchcoach/fixtures/minimal.json b/benchcoach/fixtures/minimal.json new file mode 100644 index 0000000..0d45054 --- /dev/null +++ b/benchcoach/fixtures/minimal.json @@ -0,0 +1,1173 @@ +[ + { + "model": "teams.team", + "pk": 1, + "fields": { + "name": "a", + "image": "images/hounds-300x300_MRMpjtG.png" + } + }, + { + "model": "teamsnap.team", + "pk": "7644001", + "fields": { + "name": "a", + "created_at": "2021-12-17T01:32:18Z", + "updated_at": "2021-12-17T01:32:57Z", + "benchcoach_object": 1 + } + }, + { + "model": "teamsnap.user", + "pk": "25560745", + "fields": { + "created_at": "2021-12-17T01:33:40Z", + "updated_at": "2021-12-17T01:33:41Z", + "first_name": "a", + "last_name": "a", + "email": "a@correa.co", + "managed_teams": [ + "7644001" + ] + } + }, + { + "model": "admin.logentry", + "pk": 1, + "fields": { + "action_time": "2021-12-17T01:32:54.671Z", + "user": 1, + "content_type": 3, + "object_id": "1", + "object_repr": "a", + "action_flag": 1, + "change_message": "[{\"added\": {}}]" + } + }, + { + "model": "admin.logentry", + "pk": 2, + "fields": { + "action_time": "2021-12-17T01:32:59.237Z", + "user": 1, + "content_type": 9, + "object_id": "7644001", + "object_repr": "TeamSnap Team Object (7644001)", + "action_flag": 1, + "change_message": "[{\"added\": {}}]" + } + }, + { + "model": "admin.logentry", + "pk": 3, + "fields": { + "action_time": "2021-12-17T01:33:57.742Z", + "user": 1, + "content_type": 10, + "object_id": "25560745", + "object_repr": "TeamSnap User Object (25560745)", + "action_flag": 1, + "change_message": "[{\"added\": {}}]" + } + }, + { + "model": "auth.permission", + "pk": 1, + "fields": { + "name": "Can add event", + "content_type": 1, + "codename": "add_event" + } + }, + { + "model": "auth.permission", + "pk": 2, + "fields": { + "name": "Can change event", + "content_type": 1, + "codename": "change_event" + } + }, + { + "model": "auth.permission", + "pk": 3, + "fields": { + "name": "Can delete event", + "content_type": 1, + "codename": "delete_event" + } + }, + { + "model": "auth.permission", + "pk": 4, + "fields": { + "name": "Can view event", + "content_type": 1, + "codename": "view_event" + } + }, + { + "model": "auth.permission", + "pk": 5, + "fields": { + "name": "Can add season", + "content_type": 2, + "codename": "add_season" + } + }, + { + "model": "auth.permission", + "pk": 6, + "fields": { + "name": "Can change season", + "content_type": 2, + "codename": "change_season" + } + }, + { + "model": "auth.permission", + "pk": 7, + "fields": { + "name": "Can delete season", + "content_type": 2, + "codename": "delete_season" + } + }, + { + "model": "auth.permission", + "pk": 8, + "fields": { + "name": "Can view season", + "content_type": 2, + "codename": "view_season" + } + }, + { + "model": "auth.permission", + "pk": 9, + "fields": { + "name": "Can add team", + "content_type": 3, + "codename": "add_team" + } + }, + { + "model": "auth.permission", + "pk": 10, + "fields": { + "name": "Can change team", + "content_type": 3, + "codename": "change_team" + } + }, + { + "model": "auth.permission", + "pk": 11, + "fields": { + "name": "Can delete team", + "content_type": 3, + "codename": "delete_team" + } + }, + { + "model": "auth.permission", + "pk": 12, + "fields": { + "name": "Can view team", + "content_type": 3, + "codename": "view_team" + } + }, + { + "model": "auth.permission", + "pk": 13, + "fields": { + "name": "Can add venue", + "content_type": 4, + "codename": "add_venue" + } + }, + { + "model": "auth.permission", + "pk": 14, + "fields": { + "name": "Can change venue", + "content_type": 4, + "codename": "change_venue" + } + }, + { + "model": "auth.permission", + "pk": 15, + "fields": { + "name": "Can delete venue", + "content_type": 4, + "codename": "delete_venue" + } + }, + { + "model": "auth.permission", + "pk": 16, + "fields": { + "name": "Can view venue", + "content_type": 4, + "codename": "view_venue" + } + }, + { + "model": "auth.permission", + "pk": 17, + "fields": { + "name": "Can add player", + "content_type": 5, + "codename": "add_player" + } + }, + { + "model": "auth.permission", + "pk": 18, + "fields": { + "name": "Can change player", + "content_type": 5, + "codename": "change_player" + } + }, + { + "model": "auth.permission", + "pk": 19, + "fields": { + "name": "Can delete player", + "content_type": 5, + "codename": "delete_player" + } + }, + { + "model": "auth.permission", + "pk": 20, + "fields": { + "name": "Can view player", + "content_type": 5, + "codename": "view_player" + } + }, + { + "model": "auth.permission", + "pk": 21, + "fields": { + "name": "Can add stat line", + "content_type": 6, + "codename": "add_statline" + } + }, + { + "model": "auth.permission", + "pk": 22, + "fields": { + "name": "Can change stat line", + "content_type": 6, + "codename": "change_statline" + } + }, + { + "model": "auth.permission", + "pk": 23, + "fields": { + "name": "Can delete stat line", + "content_type": 6, + "codename": "delete_statline" + } + }, + { + "model": "auth.permission", + "pk": 24, + "fields": { + "name": "Can view stat line", + "content_type": 6, + "codename": "view_statline" + } + }, + { + "model": "auth.permission", + "pk": 25, + "fields": { + "name": "Can add positioning", + "content_type": 7, + "codename": "add_positioning" + } + }, + { + "model": "auth.permission", + "pk": 26, + "fields": { + "name": "Can change positioning", + "content_type": 7, + "codename": "change_positioning" + } + }, + { + "model": "auth.permission", + "pk": 27, + "fields": { + "name": "Can delete positioning", + "content_type": 7, + "codename": "delete_positioning" + } + }, + { + "model": "auth.permission", + "pk": 28, + "fields": { + "name": "Can view positioning", + "content_type": 7, + "codename": "view_positioning" + } + }, + { + "model": "auth.permission", + "pk": 29, + "fields": { + "name": "Can add availability", + "content_type": 8, + "codename": "add_availability" + } + }, + { + "model": "auth.permission", + "pk": 30, + "fields": { + "name": "Can change availability", + "content_type": 8, + "codename": "change_availability" + } + }, + { + "model": "auth.permission", + "pk": 31, + "fields": { + "name": "Can delete availability", + "content_type": 8, + "codename": "delete_availability" + } + }, + { + "model": "auth.permission", + "pk": 32, + "fields": { + "name": "Can view availability", + "content_type": 8, + "codename": "view_availability" + } + }, + { + "model": "auth.permission", + "pk": 33, + "fields": { + "name": "Can add user", + "content_type": 9, + "codename": "add_user" + } + }, + { + "model": "auth.permission", + "pk": 34, + "fields": { + "name": "Can change user", + "content_type": 9, + "codename": "change_user" + } + }, + { + "model": "auth.permission", + "pk": 35, + "fields": { + "name": "Can delete user", + "content_type": 9, + "codename": "delete_user" + } + }, + { + "model": "auth.permission", + "pk": 36, + "fields": { + "name": "Can view user", + "content_type": 9, + "codename": "view_user" + } + }, + { + "model": "auth.permission", + "pk": 37, + "fields": { + "name": "Can add team", + "content_type": 10, + "codename": "add_team" + } + }, + { + "model": "auth.permission", + "pk": 38, + "fields": { + "name": "Can change team", + "content_type": 10, + "codename": "change_team" + } + }, + { + "model": "auth.permission", + "pk": 39, + "fields": { + "name": "Can delete team", + "content_type": 10, + "codename": "delete_team" + } + }, + { + "model": "auth.permission", + "pk": 40, + "fields": { + "name": "Can view team", + "content_type": 10, + "codename": "view_team" + } + }, + { + "model": "auth.permission", + "pk": 41, + "fields": { + "name": "Can add member", + "content_type": 11, + "codename": "add_member" + } + }, + { + "model": "auth.permission", + "pk": 42, + "fields": { + "name": "Can change member", + "content_type": 11, + "codename": "change_member" + } + }, + { + "model": "auth.permission", + "pk": 43, + "fields": { + "name": "Can delete member", + "content_type": 11, + "codename": "delete_member" + } + }, + { + "model": "auth.permission", + "pk": 44, + "fields": { + "name": "Can view member", + "content_type": 11, + "codename": "view_member" + } + }, + { + "model": "auth.permission", + "pk": 45, + "fields": { + "name": "Can add location", + "content_type": 12, + "codename": "add_location" + } + }, + { + "model": "auth.permission", + "pk": 46, + "fields": { + "name": "Can change location", + "content_type": 12, + "codename": "change_location" + } + }, + { + "model": "auth.permission", + "pk": 47, + "fields": { + "name": "Can delete location", + "content_type": 12, + "codename": "delete_location" + } + }, + { + "model": "auth.permission", + "pk": 48, + "fields": { + "name": "Can view location", + "content_type": 12, + "codename": "view_location" + } + }, + { + "model": "auth.permission", + "pk": 49, + "fields": { + "name": "Can add event", + "content_type": 13, + "codename": "add_event" + } + }, + { + "model": "auth.permission", + "pk": 50, + "fields": { + "name": "Can change event", + "content_type": 13, + "codename": "change_event" + } + }, + { + "model": "auth.permission", + "pk": 51, + "fields": { + "name": "Can delete event", + "content_type": 13, + "codename": "delete_event" + } + }, + { + "model": "auth.permission", + "pk": 52, + "fields": { + "name": "Can view event", + "content_type": 13, + "codename": "view_event" + } + }, + { + "model": "auth.permission", + "pk": 53, + "fields": { + "name": "Can add availability", + "content_type": 14, + "codename": "add_availability" + } + }, + { + "model": "auth.permission", + "pk": 54, + "fields": { + "name": "Can change availability", + "content_type": 14, + "codename": "change_availability" + } + }, + { + "model": "auth.permission", + "pk": 55, + "fields": { + "name": "Can delete availability", + "content_type": 14, + "codename": "delete_availability" + } + }, + { + "model": "auth.permission", + "pk": 56, + "fields": { + "name": "Can view availability", + "content_type": 14, + "codename": "view_availability" + } + }, + { + "model": "auth.permission", + "pk": 57, + "fields": { + "name": "Can add lineup entry", + "content_type": 15, + "codename": "add_lineupentry" + } + }, + { + "model": "auth.permission", + "pk": 58, + "fields": { + "name": "Can change lineup entry", + "content_type": 15, + "codename": "change_lineupentry" + } + }, + { + "model": "auth.permission", + "pk": 59, + "fields": { + "name": "Can delete lineup entry", + "content_type": 15, + "codename": "delete_lineupentry" + } + }, + { + "model": "auth.permission", + "pk": 60, + "fields": { + "name": "Can view lineup entry", + "content_type": 15, + "codename": "view_lineupentry" + } + }, + { + "model": "auth.permission", + "pk": 61, + "fields": { + "name": "Can add opponent", + "content_type": 16, + "codename": "add_opponent" + } + }, + { + "model": "auth.permission", + "pk": 62, + "fields": { + "name": "Can change opponent", + "content_type": 16, + "codename": "change_opponent" + } + }, + { + "model": "auth.permission", + "pk": 63, + "fields": { + "name": "Can delete opponent", + "content_type": 16, + "codename": "delete_opponent" + } + }, + { + "model": "auth.permission", + "pk": 64, + "fields": { + "name": "Can view opponent", + "content_type": 16, + "codename": "view_opponent" + } + }, + { + "model": "auth.permission", + "pk": 65, + "fields": { + "name": "Can add log entry", + "content_type": 17, + "codename": "add_logentry" + } + }, + { + "model": "auth.permission", + "pk": 66, + "fields": { + "name": "Can change log entry", + "content_type": 17, + "codename": "change_logentry" + } + }, + { + "model": "auth.permission", + "pk": 67, + "fields": { + "name": "Can delete log entry", + "content_type": 17, + "codename": "delete_logentry" + } + }, + { + "model": "auth.permission", + "pk": 68, + "fields": { + "name": "Can view log entry", + "content_type": 17, + "codename": "view_logentry" + } + }, + { + "model": "auth.permission", + "pk": 69, + "fields": { + "name": "Can add permission", + "content_type": 18, + "codename": "add_permission" + } + }, + { + "model": "auth.permission", + "pk": 70, + "fields": { + "name": "Can change permission", + "content_type": 18, + "codename": "change_permission" + } + }, + { + "model": "auth.permission", + "pk": 71, + "fields": { + "name": "Can delete permission", + "content_type": 18, + "codename": "delete_permission" + } + }, + { + "model": "auth.permission", + "pk": 72, + "fields": { + "name": "Can view permission", + "content_type": 18, + "codename": "view_permission" + } + }, + { + "model": "auth.permission", + "pk": 73, + "fields": { + "name": "Can add group", + "content_type": 19, + "codename": "add_group" + } + }, + { + "model": "auth.permission", + "pk": 74, + "fields": { + "name": "Can change group", + "content_type": 19, + "codename": "change_group" + } + }, + { + "model": "auth.permission", + "pk": 75, + "fields": { + "name": "Can delete group", + "content_type": 19, + "codename": "delete_group" + } + }, + { + "model": "auth.permission", + "pk": 76, + "fields": { + "name": "Can view group", + "content_type": 19, + "codename": "view_group" + } + }, + { + "model": "auth.permission", + "pk": 77, + "fields": { + "name": "Can add user", + "content_type": 20, + "codename": "add_user" + } + }, + { + "model": "auth.permission", + "pk": 78, + "fields": { + "name": "Can change user", + "content_type": 20, + "codename": "change_user" + } + }, + { + "model": "auth.permission", + "pk": 79, + "fields": { + "name": "Can delete user", + "content_type": 20, + "codename": "delete_user" + } + }, + { + "model": "auth.permission", + "pk": 80, + "fields": { + "name": "Can view user", + "content_type": 20, + "codename": "view_user" + } + }, + { + "model": "auth.permission", + "pk": 81, + "fields": { + "name": "Can add content type", + "content_type": 21, + "codename": "add_contenttype" + } + }, + { + "model": "auth.permission", + "pk": 82, + "fields": { + "name": "Can change content type", + "content_type": 21, + "codename": "change_contenttype" + } + }, + { + "model": "auth.permission", + "pk": 83, + "fields": { + "name": "Can delete content type", + "content_type": 21, + "codename": "delete_contenttype" + } + }, + { + "model": "auth.permission", + "pk": 84, + "fields": { + "name": "Can view content type", + "content_type": 21, + "codename": "view_contenttype" + } + }, + { + "model": "auth.permission", + "pk": 85, + "fields": { + "name": "Can add session", + "content_type": 22, + "codename": "add_session" + } + }, + { + "model": "auth.permission", + "pk": 86, + "fields": { + "name": "Can change session", + "content_type": 22, + "codename": "change_session" + } + }, + { + "model": "auth.permission", + "pk": 87, + "fields": { + "name": "Can delete session", + "content_type": 22, + "codename": "delete_session" + } + }, + { + "model": "auth.permission", + "pk": 88, + "fields": { + "name": "Can view session", + "content_type": 22, + "codename": "view_session" + } + }, + { + "model": "auth.permission", + "pk": 89, + "fields": { + "name": "Can add profile", + "content_type": 23, + "codename": "add_profile" + } + }, + { + "model": "auth.permission", + "pk": 90, + "fields": { + "name": "Can change profile", + "content_type": 23, + "codename": "change_profile" + } + }, + { + "model": "auth.permission", + "pk": 91, + "fields": { + "name": "Can delete profile", + "content_type": 23, + "codename": "delete_profile" + } + }, + { + "model": "auth.permission", + "pk": 92, + "fields": { + "name": "Can view profile", + "content_type": 23, + "codename": "view_profile" + } + }, + { + "model": "auth.permission", + "pk": 93, + "fields": { + "name": "Can add teamsnap settings", + "content_type": 24, + "codename": "add_teamsnapsettings" + } + }, + { + "model": "auth.permission", + "pk": 94, + "fields": { + "name": "Can change teamsnap settings", + "content_type": 24, + "codename": "change_teamsnapsettings" + } + }, + { + "model": "auth.permission", + "pk": 95, + "fields": { + "name": "Can delete teamsnap settings", + "content_type": 24, + "codename": "delete_teamsnapsettings" + } + }, + { + "model": "auth.permission", + "pk": 96, + "fields": { + "name": "Can view teamsnap settings", + "content_type": 24, + "codename": "view_teamsnapsettings" + } + }, + { + "model": "auth.user", + "pk": 1, + "fields": { + "password": "pbkdf2_sha256$260000$CGhgwG1zcXj30IxuXj33kZ$NECRkeFbkMj+ch/Wdc6pxJ7wSQ6iGYBdBGO/Ai4km1o=", + "last_login": "2021-12-16T20:53:04.424Z", + "is_superuser": true, + "username": "asc", + "first_name": "", + "last_name": "", + "email": "a@correa.co", + "is_staff": true, + "is_active": true, + "date_joined": "2021-12-16T20:52:57.761Z", + "groups": [], + "user_permissions": [] + } + }, + { + "model": "contenttypes.contenttype", + "pk": 1, + "fields": { + "app_label": "events", + "model": "event" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 2, + "fields": { + "app_label": "events", + "model": "season" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 3, + "fields": { + "app_label": "teams", + "model": "team" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 4, + "fields": { + "app_label": "venues", + "model": "venue" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 5, + "fields": { + "app_label": "players", + "model": "player" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 6, + "fields": { + "app_label": "players", + "model": "statline" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 7, + "fields": { + "app_label": "lineups", + "model": "positioning" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 8, + "fields": { + "app_label": "lineups", + "model": "availability" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 9, + "fields": { + "app_label": "teamsnap", + "model": "team" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 10, + "fields": { + "app_label": "teamsnap", + "model": "user" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 11, + "fields": { + "app_label": "teamsnap", + "model": "opponent" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 12, + "fields": { + "app_label": "teamsnap", + "model": "location" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 13, + "fields": { + "app_label": "teamsnap", + "model": "member" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 14, + "fields": { + "app_label": "teamsnap", + "model": "event" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 15, + "fields": { + "app_label": "teamsnap", + "model": "availability" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 16, + "fields": { + "app_label": "teamsnap", + "model": "lineupentry" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 17, + "fields": { + "app_label": "admin", + "model": "logentry" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 18, + "fields": { + "app_label": "auth", + "model": "permission" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 19, + "fields": { + "app_label": "auth", + "model": "group" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 20, + "fields": { + "app_label": "auth", + "model": "user" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 21, + "fields": { + "app_label": "contenttypes", + "model": "contenttype" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 22, + "fields": { + "app_label": "sessions", + "model": "session" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 23, + "fields": { + "app_label": "benchcoach", + "model": "profile" + } + }, + { + "model": "contenttypes.contenttype", + "pk": 24, + "fields": { + "app_label": "benchcoach", + "model": "teamsnapsettings" + } + }, + { + "model": "sessions.session", + "pk": "2usqyawi6uuaj5anvhqxuiueaaz6ypv1", + "fields": { + "session_data": ".eJxVjEEOwiAQRe_C2pBiR2Bcuu8ZyAxMpWogKe3KeHfbpAvdvvf-f6tA65LD2mQOU1JXZdTplzHFp5RdpAeVe9WxlmWeWO-JPmzTQ03yuh3t30Gmlrc1IAgmkc6RAbQjcYdn5w36aIXEkt_wmNgjEwmSgxgBqOcL9BbBqM8X7_Y4Gw:1my25x:1Y5i-8eGZY0bGupi4TpUYpki6iRw29gWdptAiGjZtX8", + "expire_date": "2021-12-31T01:31:37.478Z" + } + }, + { + "model": "benchcoach.profile", + "pk": 1, + "fields": { + "user": 1, + "teamsnap_access_token": "u2SqDq78FumVvhkt1D-V1CQ2ZIaB-nUVlzGwd1YhGtA", + "teamsnap_user": "25560745", + "avatar": "avatar/correa-profile-image-300x300.png" + } + }, + { + "model": "benchcoach.teamsnapsettings", + "pk": 1, + "fields": { + "user": 1, + "managed_team": "7644001" + } + } +] \ No newline at end of file diff --git a/benchcoach/migrations/0007_teamsnapsettings.py b/benchcoach/migrations/0007_teamsnapsettings.py new file mode 100644 index 0000000..18706ff --- /dev/null +++ b/benchcoach/migrations/0007_teamsnapsettings.py @@ -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')), + ], + ), + ] diff --git a/benchcoach/migrations/0008_alter_profile_teamsnap_user.py b/benchcoach/migrations/0008_alter_profile_teamsnap_user.py new file mode 100644 index 0000000..62fe951 --- /dev/null +++ b/benchcoach/migrations/0008_alter_profile_teamsnap_user.py @@ -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'), + ), + ] diff --git a/benchcoach/models.py b/benchcoach/models.py index ba22e49..8b1cc96 100644 --- a/benchcoach/models.py +++ b/benchcoach/models.py @@ -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) \ No newline at end of file + 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) \ No newline at end of file diff --git a/benchcoach/urls.py b/benchcoach/urls.py index 64d4e33..500c343 100644 --- a/benchcoach/urls.py +++ b/benchcoach/urls.py @@ -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) diff --git a/benchcoach/views.py b/benchcoach/views.py index b2389f1..7f93c7e 100644 --- a/benchcoach/views.py +++ b/benchcoach/views.py @@ -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}) \ No newline at end of file + 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') \ No newline at end of file diff --git a/teamsnap/fixtures/2021cmba.json b/teamsnap/fixtures/_2021cmba.json similarity index 100% rename from teamsnap/fixtures/2021cmba.json rename to teamsnap/fixtures/_2021cmba.json diff --git a/teamsnap/views.py b/teamsnap/views.py index d68dd33..152bf5f 100644 --- a/teamsnap/views.py +++ b/teamsnap/views.py @@ -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) diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..5b94265 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,20 @@ +{% extends "base.html" %}{% load static %} + +{% block title %}Bench Coach Home{% endblock %} + +{% block content %} +
+ {% csrf_token %} + +
Login
+ + +
At least 5 character
+ + +
Use upper and lowercase letters as well
+ + +
+ +{% endblock %} \ No newline at end of file