models.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from django.db import models
  2. from django import forms
  3. from django.template.defaultfilters import slugify
  4. from trumbowyg.widgets import TrumbowygWidget
  5. menu_pos = (
  6. (u'no', u'No'),
  7. (u'haut', u'En haut'),
  8. (u'cote', u'Sur le coté'),
  9. (u'pied', u'En pied de page'),
  10. )
  11. page_type = (
  12. (u'page', u'Une page'),
  13. (u'sys', u'Une page interne'),
  14. (u'lien', u'Un lien'),
  15. )
  16. class Page (models.Model) : #Architecture pour les pages static est dynamique
  17. p_titre = models.CharField("Titre", max_length = 128, unique = True)
  18. p_titre_slugify = models.CharField("Titre Slugify", max_length = 128, blank = True, editable = False)
  19. p_icone = models.CharField("Code de l'icone", max_length = 32, blank = True)
  20. p_type = models.CharField("Type de page",choices=page_type, max_length=4, default='page')
  21. p_adresse = models.CharField("Adresse", max_length = 64)
  22. p_menu_position = models.CharField("A utiliser dans un menu ?",choices=menu_pos, max_length=4, default='no')
  23. p_menu_poid = models.PositiveSmallIntegerField("Poid si utilisé dans les menus", default=50)
  24. p_mots_clefs = models.CharField("Mots clefs", max_length = 512, blank = True)
  25. p_description = models.TextField("Description", blank = True)
  26. p_contenu = models.TextField("Contenu", blank = True)
  27. p_right = models.TextField("Contenu à droite", blank = True)
  28. p_publier = models.BooleanField("Publié", default = False)
  29. p_see_title_and_des_in_templates = models.BooleanField("Description et titre visible dans les templates", default = True)
  30. class Meta :
  31. verbose_name = 'Gestion des pages'
  32. verbose_name_plural = 'Gestion des pages'
  33. ordering = ['p_adresse']
  34. def save(self, *args, **kwargs) :
  35. self.p_titre_slugify = slugify(self.p_titre)
  36. if self.p_type == "lien":
  37. self.p_description = "."
  38. self.p_contenu = "."
  39. super(Page, self).save(*args, **kwargs)
  40. def __unicode__(self):
  41. return self.p_titre
  42. def __str__(self):
  43. return '%s' % (self.p_titre)
  44. class Contact (models.Model): # model de contact et retour de bug
  45. c_type_liste = (
  46. ('contact', 'Pour un contact'),
  47. ('beug', 'Pour un beug'),
  48. ('plainte', 'Pour une plainte'),
  49. )
  50. c_statut_liste = (
  51. ('non_lu', 'Non Lu'),
  52. ('lu', 'Lu'),
  53. ('archive', 'Archivé'),
  54. )
  55. c_name = models.CharField("Votre nom", max_length = 128)
  56. c_email = models.EmailField("Votre emails")
  57. c_type = models.CharField("Type de demande", max_length=16, choices=c_type_liste, default = 'contact')
  58. c_description = models.TextField("Votre demande")
  59. c_statut = models.CharField("Statut de la demande", max_length=16, choices=c_statut_liste, default = 'non_lu')
  60. def __unicode__(self):
  61. return self.c_name
  62. def __str__(self):
  63. return '%s' % (self.c_name)
  64. class ContactForm(forms.ModelForm):# formulaire de contact lié au model
  65. class Meta:
  66. model = Contact
  67. fields = ['c_name', 'c_email', 'c_type', 'c_description']
  68. class Page_Admin_Form(forms.ModelForm):
  69. class Meta:
  70. model = Page
  71. exclude = ['p_titre_slugify']
  72. widgets = {
  73. 'p_contenu': TrumbowygWidget(),
  74. 'p_right': TrumbowygWidget(),
  75. }