From 393190e8d15f150522a019d083d675b6a4f96087 Mon Sep 17 00:00:00 2001 From: Mike M Date: Wed, 21 Jul 2021 20:10:17 -0400 Subject: [PATCH] #147 backend functionality for roster roles --- .../staff/teams/create_rosterrole.html | 2 +- .../staff/teams/list_rosterrole.html | 26 ++++++++ staff/urls.py | 5 ++ staff/views/teams.py | 60 +++++++++++++++++-- teams/forms.py | 7 ++- 5 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 project-templates/staff/teams/list_rosterrole.html diff --git a/project-templates/staff/teams/create_rosterrole.html b/project-templates/staff/teams/create_rosterrole.html index 38bb19f6..c7d37f2f 100644 --- a/project-templates/staff/teams/create_rosterrole.html +++ b/project-templates/staff/teams/create_rosterrole.html @@ -3,7 +3,7 @@ {% load static %} {% block title %} - Create Roster Role + Teams / Create Roster Role {% endblock %} {% block body %} diff --git a/project-templates/staff/teams/list_rosterrole.html b/project-templates/staff/teams/list_rosterrole.html new file mode 100644 index 00000000..4a6a0982 --- /dev/null +++ b/project-templates/staff/teams/list_rosterrole.html @@ -0,0 +1,26 @@ +{% extends 'staff/staffbase.html' %} +{% load static %} + + +{% block title %} + Teams / Roster Role List +{% endblock %} + +{% block body %} +
+ + + + + + + {% for role in roles %} + + + + + + {% endfor %} +
Name
{{ role.name }}
+
+{% endblock %} \ No newline at end of file diff --git a/staff/urls.py b/staff/urls.py index bda41361..526e0de7 100644 --- a/staff/urls.py +++ b/staff/urls.py @@ -138,6 +138,11 @@ path('teams//remove/', login_required(views.remove_user), name='remove_user'), path('teams/getrank/', login_required(views.getteamrank), name='getteamrank'), path('teams//delete/', login_required(views.delete_team), name='delete_team'), + path('teams//rosters/', login_required(views.team_roster), name='team_roster'), + path('teams/rosters/roles/', login_required(views.list_roster_role), name='list_roster_role'), + path('teams/rosters/roles/create/', login_required(views.create_roster_role), name='create_roster_role'), + path('teams/rosters/roles//edit/', login_required(views.edit_roster_role), name='edit_roster_role'), + path('teams/rosters/roles//delete/', login_required(views.delete_roster_role), name='delete_roster_role'), path('partners/', login_required(views.partnerlist), name='partner_list'), path('partners/create/', login_required(views.createpartner), name='partner_create'), diff --git a/staff/views/teams.py b/staff/views/teams.py index 519aa4bb..9bc8ee0b 100644 --- a/staff/views/teams.py +++ b/staff/views/teams.py @@ -2,7 +2,7 @@ from django.shortcuts import render, redirect from staff.forms import * -from teams.models import TeamInvite +from teams.models import TeamInvite, Roster, Team, RosterRole, RosterMember from wagers.models import * @@ -173,7 +173,28 @@ def getteamrank(request): return redirect('staff:teamindex') -def create_rosterrole(request): +def team_roster(request, pk): + user = UserProfile.objects.get(user__username=request.user.username) + allowed = ['superadmin', 'admin'] + if user.user_type not in allowed: + return render(request, 'staff/permissiondenied.html') + else: + team = Team.objects.get(pk=pk) + roster = Roster.objects.get(team=team) + return render(request, 'staff/teams/team_roster.html', {'roster': roster}) + + +def list_roster_role(request): + user = UserProfile.objects.get(user__username=request.user.username) + allowed = ['superadmin', 'admin'] + if user.user_type not in allowed: + return render(request, 'staff/permissiondenied.html') + else: + roles = RosterRole.objects.all() + return render(request, 'staff/teams/list_rosterrole.html', {'roles': roles}) + + +def create_roster_role(request): user = UserProfile.objects.get(user__username=request.user.username) allowed = ['superadmin', 'admin'] if user.user_type not in allowed: @@ -182,11 +203,40 @@ def create_rosterrole(request): if request.method == 'POST': form = CreateTeamRosterRole(request.POST) if form.is_valid(): - temp = RosterRole - temp.name = form.cleaned_data['name'] + temp = form.instance temp.save() messages.success(request, "Successfully created Roster Role") return redirect('staff:teamindex') elif request.method == 'GET': form = CreateTeamRosterRole() - return render(request, 'staff/teams/create_rosterrole.html', {'form': form}) \ No newline at end of file + return render(request, 'staff/teams/create_rosterrole.html', {'form': form}) + + +def delete_roster_role(request, pk): + user = UserProfile.objects.get(user__username=request.user.username) + allowed = ['superadmin', 'admin'] + if user.user_type not in allowed: + return render(request, 'staff/permissiondenied.html') + else: + role = RosterRole.objects.get(pk=pk) + role.delete() + messages.success(request, 'Roster role successfully deleted') + return redirect('staff:list_roster_role') + + +def edit_roster_role(request, pk): + user = UserProfile.objects.get(user__username=request.user.username) + allowed = ['superadmin', 'admin'] + if user.user_type not in allowed: + return render(request, 'staff/permissiondenied.html') + else: + role = RosterRole.objects.get(pk=pk) + if request.method == 'GET': + form = CreateTeamRosterRole(instance=role) + return render(request, 'staff/teams/create_rosterrole.html', {'form': form}) + elif request.method == 'POST': + form = CreateTeamRosterRole(request.POST, instance=role) + form.save() + messages.success(request, "Successfully updated roster role") + return redirect('staff:list_roster_role') + diff --git a/teams/forms.py b/teams/forms.py index 13d96dcc..cd4307ee 100644 --- a/teams/forms.py +++ b/teams/forms.py @@ -2,7 +2,7 @@ # import the actual team model for the create team forms from teams.models import Team # import the model for the team invite -from teams.models import TeamInvite +from teams.models import TeamInvite, Roster from profiles.models import UserProfile @@ -134,3 +134,8 @@ def __init__(self, request, pk, *args, **kwargs): self.fields['confirmed'].widget.attrs.update( {'name': 'confirmed', 'class': 'form-control', 'style': 'display: block'}) + +class CreateRosterForm(forms.ModelForm): + class Meta: + model = Roster + fields = '__all__'