many fixes

This commit is contained in:
Arthur Gerbaud
2016-08-14 15:02:42 +02:00
parent 5f31b5e3f5
commit 91079e1358
7 changed files with 118 additions and 111 deletions

View File

@@ -1,44 +1,11 @@
from django.utils import timezone
from django.core.urlresolvers import reverse
from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from django.db import models
# Create your models here.
class Personne(models.Model):
""" Modèle de base d'une personne
- genre
- nom
- prénom
"""
HOMME = 'M'
FEMME = 'Mme'
GENRE_CHOICES = (
(HOMME, 'Homme'),
(FEMME, 'Femme'),
)
genre = models.CharField(max_length=3,
choices=GENRE_CHOICES,
default=HOMME)
nom = models.CharField(max_length=32, blank=True)
prenom = models.CharField(max_length=32, blank=True)
surnom = models.CharField(max_length=64, blank=True)
def __str__(self):
string = '%s ' % self.genre
if self.nom: string += '%s ' % self.nom
if self.surnom: string += '"%s" ' % self.surnom
if self.prenom: string += '%s' % self.prenom
return string
def clean(self):
if not any([self.nom, self.prenom, self.surnom]):
raise ValidationError(_("Vous devez remplir au moins un nom, prénom ou surnom"))
return super().clean()
### Item choices
# Item: Parcours institutionnel
PARCOURS_INSTITUTIONNEL = "Institutionnel"
@@ -81,15 +48,49 @@ RESSOURCES_CHOICES = (
)
from django.db import models
### Models
# - Personne
# - Sujet
class Personne(models.Model):
""" Modèle de base d'une personne
- genre
- nom
- prénom
"""
HOMME = 'M'
FEMME = 'Mme'
GENRE_CHOICES = (
(HOMME, 'Homme'),
(FEMME, 'Femme'),
)
genre = models.CharField(max_length=3,
choices=GENRE_CHOICES,
default=HOMME)
nom = models.CharField(max_length=32, blank=True)
prenom = models.CharField(max_length=32, blank=True)
surnom = models.CharField(max_length=64, blank=True)
def __str__(self):
string = '%s ' % self.genre
if self.nom: string += '%s ' % self.nom
if self.surnom: string += '"%s" ' % self.surnom
if self.prenom: string += '%s' % self.prenom
return string
def clean(self):
if not any([self.nom, self.prenom, self.surnom]):
raise ValidationError(_("Vous devez remplir au moins un nom, prénom ou surnom"))
return super().clean()
class Sujet(Personne):
""" Personne faisant l'objet d'un suivi par la maraude
"""
# referent = models.ForeignKey("utilisateurs.Professionnel", related_name="suivis")
premiere_rencontre = models.DateField(default=timezone.now)
age = models.SmallIntegerField(blank=True, null=True)
@@ -113,7 +114,6 @@ class Sujet(Personne):
default=RESSOURCES_NR)
connu_siao = models.NullBooleanField("Connu du SIAO ?")
class Meta:
verbose_name = "Sujet"
ordering = ('surnom', 'nom', 'prenom')

View File

@@ -1,85 +1,77 @@
from django.shortcuts import render
from django.views import generic
from website import decorators as website
from .models import Sujet
from .forms import SujetCreateForm
from django.forms import ModelForm
### Webpage config
from website import decorators as website
webpage = website.webpage(
ajax=True,
permissions=['sujets.view_sujets'],
app_name="suivi",
app_menu=["suivi/menu_sujets.html", "suivi/menu_administration.html"]
app_menu=["sujets/menu_sujet.html"]
)
# Create your views here.
# TODO: deal with setting an active_app name other than module name
### Views
@webpage
class SujetDetailsView(generic.DetailView):
template_name = "sujets/sujet_details.html"
model = Sujet
class PageInfo:
title = "Sujet - {{ sujet }}"
header = "{{ sujet }}"
header_small = "suivi"
#DetailView
template_name = "sujets/sujet_details.html"
model = Sujet
@webpage
class SujetListView(generic.ListView):
model = Sujet
template_name = "sujets/sujet_liste.html"
class PageInfo:
title = "Sujet - Liste des sujets"
header = "Liste des sujets"
#ListView
model = Sujet
template_name = "sujets/sujet_liste.html"
paginate_by = 10
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.app_menu = ["suivi/menu_sujets.html"]
@webpage
class SujetUpdateView(generic.edit.UpdateView):
template_name = "sujets/sujet_update.html"
model = Sujet
fields = '__all__'
class PageInfo:
title = "Mise à jour - {{sujet}}"
header = "{{sujet}}"
header_small = "mise à jour"
#UpdateView
template_name = "sujets/sujet_update.html"
model = Sujet
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print('SujetUpdateView init:', self.__class__.__bases__)
class SujetCreateForm(ModelForm):
class Meta:
model = Sujet
fields = ['nom', 'surnom', 'prenom', 'genre', 'premiere_rencontre']
@webpage
class SujetCreateView(generic.edit.CreateView):
template_name = "sujets/sujet_create.html"
form_class = SujetCreateForm
class PageInfo:
title = "Nouveau sujet"
header = "Nouveau sujet"
# Special permissions
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.permissions += ['sujets.add_sujet']
#CreateView
template_name = "sujets/sujet_create.html"
form_class = SujetCreateForm
def post(self, request, *args, **kwargs):
if 'next' in self.request.POST:
self.success_url = self.request.POST["next"]
return super().post(self, request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
try:
context['next'] = self.request.GET['next']
except:
context['next'] = None
try: context['next'] = self.request.GET['next']
except:context['next'] = None
return context