Commit 40c697e5 authored by Pierre-antoine Comby's avatar Pierre-antoine Comby

interface pour ajouter des membres à un club

parent 4879af3f
...@@ -6,7 +6,15 @@ from django.contrib.auth.forms import UserChangeForm, UserCreationForm ...@@ -6,7 +6,15 @@ from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django import forms from django import forms
from .models import Profile, Club from .models import Profile, Club, Membership
from django.utils.translation import gettext_lazy as _
from crispy_forms.helper import FormHelper
from crispy_forms import layout, bootstrap
from crispy_forms.bootstrap import InlineField, FormActions, StrictButton, Div, Field
from crispy_forms.layout import Layout
class ProfileForm(forms.ModelForm): class ProfileForm(forms.ModelForm):
""" """
...@@ -21,3 +29,33 @@ class ClubForm(forms.ModelForm): ...@@ -21,3 +29,33 @@ class ClubForm(forms.ModelForm):
class Meta: class Meta:
model = Club model = Club
fields ='__all__' fields ='__all__'
class AddMembersForm(forms.Form):
class Meta:
fields = ('',)
class MembershipForm(forms.ModelForm):
class Meta:
model = Membership
fields = ('user','roles','date_start')
MemberFormSet = forms.modelformset_factory(Membership,
form=MembershipForm,
extra=2,
can_delete=True)
class FormSetHelper(FormHelper):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.form_tag = False
self.form_method = 'POST'
self.form_class='form-inline'
# self.template = 'bootstrap/table_inline_formset.html'
self.layout = Layout(
Div(
Div('user',css_class='col-sm-2'),
Div('roles',css_class='col-sm-2'),
Div('date_start',css_class='col-sm-2'),
css_class="row formset-row",
)
)
...@@ -13,6 +13,7 @@ urlpatterns = [ ...@@ -13,6 +13,7 @@ urlpatterns = [
path('signup/',views.UserCreateView.as_view(),name="signup"), path('signup/',views.UserCreateView.as_view(),name="signup"),
path('club/',views.ClubListView.as_view(),name="club_list"), path('club/',views.ClubListView.as_view(),name="club_list"),
path('club/<int:pk>/',views.ClubDetailView.as_view(),name="club_detail"), path('club/<int:pk>/',views.ClubDetailView.as_view(),name="club_detail"),
path('club/<int:pk>/add_member/',views.ClubAddMemberView.as_view(),name="club_add_member"),
path('club/create/',views.ClubCreateView.as_view(),name="club_create"), path('club/create/',views.ClubCreateView.as_view(),name="club_create"),
path('user/<int:pk>',views.UserDetailView.as_view(),name="user_detail") path('user/<int:pk>',views.UserDetailView.as_view(),name="user_detail")
] ]
...@@ -10,8 +10,8 @@ from django.http import HttpResponseRedirect ...@@ -10,8 +10,8 @@ from django.http import HttpResponseRedirect
from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy from django.urls import reverse_lazy
from .models import Profile, Club from .models import Profile, Club, Membership
from .forms import ProfileForm, ClubForm from .forms import ProfileForm, ClubForm,MembershipForm, MemberFormSet,FormSetHelper
class UserCreateView(CreateView): class UserCreateView(CreateView):
""" """
...@@ -24,7 +24,7 @@ class UserCreateView(CreateView): ...@@ -24,7 +24,7 @@ class UserCreateView(CreateView):
second_form = UserCreationForm second_form = UserCreationForm
def get_context_data(self,**kwargs): def get_context_data(self,**kwargs):
context = super(SignUp,self).get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context["user_form"] = self.second_form context["user_form"] = self.second_form
return context return context
...@@ -62,6 +62,25 @@ class ClubListView(LoginRequiredMixin,ListView): ...@@ -62,6 +62,25 @@ class ClubListView(LoginRequiredMixin,ListView):
form_class = ClubForm form_class = ClubForm
class ClubDetailView(LoginRequiredMixin,DetailView): class ClubDetailView(LoginRequiredMixin,DetailView):
"""
"""
model = Club model = Club
class ClubAddMemberView(LoginRequiredMixin,CreateView):
model = Membership
form_class = MembershipForm
template_name = 'member/add_members.html'
def get_context_data(self,**kwargs):
context = super().get_context_data(**kwargs)
context['formset'] = MemberFormSet()
context['helper'] = FormSetHelper()
return context
def post(self,request,*args,**kwargs):
formset = MembershipFormset(request.POST)
if formset.is_valid():
return self.form_valid(formset)
else:
return self.form_invalid(formset)
def form_valid(self,formset):
formset.save()
return super().form_valid(formset)
This diff is collapsed.
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block content %}
<form method="post" action="">
{% csrf_token %}
{% crispy formset helper %}
<div class="form-actions">
<input type="submit" name="submit" value="Save" class="btn btn-primary" id="submit-save">
</div>
</form>
<!-- Include formset plugin - including jQuery dependency -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="{% static 'js/dynamic-formset.js' %}"></script>
<script>
$('.formset-row').formset({
addText: 'add link',
deleteText: 'remove'
});
</script>
{% endblock %}
...@@ -3,4 +3,6 @@ ...@@ -3,4 +3,6 @@
{% block content %} {% block content %}
<p><a class="btn btn-default" href="{% url 'member:club_list' %}">Clubs</a></p> <p><a class="btn btn-default" href="{% url 'member:club_list' %}">Clubs</a></p>
<h5>{{ object.name }}</h5> <h5>{{ object.name }}</h5>
<a class="btn btn-default" href="{% url 'member:club_add_member' pk=object.pk %}"> Ajouter des membres </a>
{% endblock %} {% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment