diff --git a/src/bornhack/urls.py b/src/bornhack/urls.py index 896392ad..baf3eb5b 100644 --- a/src/bornhack/urls.py +++ b/src/bornhack/urls.py @@ -301,6 +301,11 @@ urlpatterns = [ TeamLeaveView.as_view(), name='team_leave' ), + url( + r'(?P[-_\w+]+)/manage/$', + TeamManageView.as_view(), + name='team_manage' + ), # this has to be the last url in the list url( r'(?P[-_\w+]+)/$', diff --git a/src/teams/forms.py b/src/teams/forms.py new file mode 100644 index 00000000..dab9796c --- /dev/null +++ b/src/teams/forms.py @@ -0,0 +1,8 @@ +from django.forms import ModelForm +from .models import Team + + +class ManageTeamForm(ModelForm): + class Meta: + model = Team + fields = ['description', 'needs_members'] diff --git a/src/teams/templates/team_manage.html b/src/teams/templates/team_manage.html new file mode 100644 index 00000000..fbd1e412 --- /dev/null +++ b/src/teams/templates/team_manage.html @@ -0,0 +1,68 @@ +{% extends 'base.html' %} +{% load commonmark %} +{% load teams_tags %} +{% load bootstrap3 %} + +{% block title %} +Team: {{ team.name }} | {{ block.super }} +{% endblock %} + +{% block content %} + +

Manage {{ team.name }} Team

+ +{% if request.user in team.responsible or team.area.responsible %} +
+ {% csrf_token %} + + {% bootstrap_form form %} + +
+ + {% buttons %} + + {% endbuttons %} +
+ +
+
+{% endif %} + +

Memberships of the {{ team.name }} team

+ + + + + + {% for member in team.teammember_set.all %} + +
+ Profile + + Name + + Status + + Email + + Description + +
+ {{ member.user }} + + {{ member.user.profile.name }} + + + {% if member.approved %} + + {% else %} + + {% endif %} + + {{ member.user.profile.email }} + + {{ member.user.profile.description }} + + {% endfor %} + +{% endblock %} diff --git a/src/teams/views.py b/src/teams/views.py index ea58fd33..823f391c 100644 --- a/src/teams/views.py +++ b/src/teams/views.py @@ -1,10 +1,12 @@ from django.views.generic import ListView, DetailView -from django.views.generic.edit import UpdateView +from django.views.generic.edit import UpdateView, FormView from camps.mixins import CampViewMixin from .models import Team, TeamMember +from .forms import ManageTeamForm from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import redirect from django.contrib import messages +from django.http import Http404 class TeamListView(CampViewMixin, ListView): @@ -58,3 +60,14 @@ class TeamLeaveView(LoginRequiredMixin, CampViewMixin, UpdateView): messages.success(self.request, "You are no longer a member of the team %s" % self.get_object().name) return redirect('team_list', camp_slug=self.get_object().camp.slug) + +class TeamManageView(LoginRequiredMixin, CampViewMixin, UpdateView, FormView): + template_name = 'team_manage.html' + model = Team + form_class = ManageTeamForm + + def get(self, request, *args, **kwargs): + if not request.user.is_staff: + raise Http404() + + return super().get(request, *args, **kwargs)