mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-21 18:08:21 +02:00
Merge branch 'master' into rights
This commit is contained in:
@ -6,7 +6,15 @@ from django.contrib.auth.forms import UserChangeForm, UserCreationForm
|
||||
from django.contrib.auth.models import User
|
||||
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):
|
||||
"""
|
||||
@ -21,3 +29,33 @@ class ClubForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Club
|
||||
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",
|
||||
)
|
||||
)
|
||||
|
@ -9,7 +9,7 @@ from django.db import models
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.urls import reverse
|
||||
from django.urls import reverse, reverse_lazy
|
||||
|
||||
|
||||
class Profile(models.Model):
|
||||
@ -100,7 +100,7 @@ class Club(models.Model):
|
||||
return self.name
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('member:club_detail', args=(self.pk,))
|
||||
return reverse_lazy('member:club_detail', args=(self.pk,))
|
||||
|
||||
|
||||
class Role(models.Model):
|
||||
|
13
apps/member/tables.py
Normal file
13
apps/member/tables.py
Normal file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import django_tables2 as tables
|
||||
from .models import Club
|
||||
|
||||
class ClubTable(tables.Table):
|
||||
class Meta:
|
||||
attrs = {'class':'table table-bordered table-condensed table-striped table-hover'}
|
||||
model = Club
|
||||
template_name = 'django_tables2/bootstrap.html'
|
||||
fields= ('id','name','email')
|
||||
row_attrs = {'class':'table-row',
|
||||
'data-href': lambda record: record.pk }
|
@ -13,6 +13,7 @@ urlpatterns = [
|
||||
path('signup/',views.UserCreateView.as_view(),name="signup"),
|
||||
path('club/',views.ClubListView.as_view(),name="club_list"),
|
||||
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('user/<int:pk>',views.UserDetailView.as_view(),name="user_detail")
|
||||
]
|
||||
|
@ -9,10 +9,16 @@ from django.views.generic import CreateView, ListView, DetailView
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.urls import reverse_lazy
|
||||
from django.db.models import Q
|
||||
|
||||
from .models import Profile, Club
|
||||
from .forms import ProfileForm, ClubForm
|
||||
from django_tables2.views import SingleTableView
|
||||
|
||||
|
||||
from .models import Profile, Club, Membership
|
||||
from .forms import ProfileForm, ClubForm,MembershipForm, MemberFormSet,FormSetHelper
|
||||
from .tables import ClubTable
|
||||
from note.models.transactions import Transaction
|
||||
from note.tables import HistoryTable
|
||||
class UserCreateView(CreateView):
|
||||
"""
|
||||
Une vue pour inscrire un utilisateur et lui créer un profile
|
||||
@ -24,7 +30,7 @@ class UserCreateView(CreateView):
|
||||
second_form = UserCreationForm
|
||||
|
||||
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
|
||||
|
||||
return context
|
||||
@ -39,9 +45,20 @@ class UserCreateView(CreateView):
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
|
||||
class UserDetailView(LoginRequiredMixin,DetailView):
|
||||
model = Profile
|
||||
context_object_name = "profile"
|
||||
def get_context_data(slef,**kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
user = context['profile'].user
|
||||
|
||||
history_list = \
|
||||
Transaction.objects.all().filter(Q(source=user.note) | Q(destination=user.note))
|
||||
context['history_list'] = HistoryTable(history_list)
|
||||
club_list = \
|
||||
Membership.objects.all().filter(user=user).only("club")
|
||||
context['club_list'] = ClubTable(club_list)
|
||||
return context
|
||||
|
||||
|
||||
class ClubCreateView(LoginRequiredMixin,CreateView):
|
||||
@ -54,14 +71,46 @@ class ClubCreateView(LoginRequiredMixin,CreateView):
|
||||
def form_valid(self,form):
|
||||
return super().form_valid(form)
|
||||
|
||||
class ClubListView(LoginRequiredMixin,ListView):
|
||||
class ClubListView(LoginRequiredMixin,SingleTableView):
|
||||
"""
|
||||
List TransactionsTemplates
|
||||
List existing tables
|
||||
"""
|
||||
model = Club
|
||||
form_class = ClubForm
|
||||
table_class = ClubTable
|
||||
|
||||
class ClubDetailView(LoginRequiredMixin,DetailView):
|
||||
"""
|
||||
"""
|
||||
model = Club
|
||||
context_object_name="club"
|
||||
|
||||
def get_context_data(self,**kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
club = context["club"]
|
||||
club_transactions = \
|
||||
Transaction.objects.all().filter(Q(source=club.note) | Q(destination=club.note))
|
||||
context['history_list'] = HistoryTable(club_transactions)
|
||||
club_member = \
|
||||
Membership.objects.all().filter(club=club)
|
||||
# TODO: consider only valid Membership
|
||||
context['member_list'] = club_member
|
||||
return context
|
||||
|
||||
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)
|
||||
|
Reference in New Issue
Block a user