Browse Source

Datepicker au bon format

refactor_inscription
root 7 years ago
parent
commit
52efe5ff2d
  1. 7
      users/forms.py
  2. 25
      users/migrations/0078_auto_20180826_1440.py
  3. 20
      users/migrations/0078_user_date.py
  4. 20
      users/migrations/0079_auto_20180828_0859.py
  5. 20
      users/migrations/0080_auto_20180828_1029.py
  6. 20
      users/migrations/0081_auto_20180828_1031.py
  7. 4
      users/models.py
  8. 11
      users/templates/users/datetimepicker.html
  9. 14
      users/templates/users/user.html
  10. 28
      users/widgets.py

7
users/forms.py

@ -46,7 +46,7 @@ from re2o.utils import remove_user_room, get_input_formats_help_text
from re2o.mixins import FormRevMixin from re2o.mixins import FormRevMixin
from re2o.field_permissions import FieldPermissionFormMixin from re2o.field_permissions import FieldPermissionFormMixin
from .widgets import DateTimePicker from .widgets import DateTimePicker, DatePicker
from .models import ( from .models import (
User, User,
@ -316,6 +316,7 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
self.fields['room'].label = _("Room") self.fields['room'].label = _("Room")
self.fields['room'].empty_label = _("No room") self.fields['room'].empty_label = _("No room")
self.fields['school'].empty_label = _("Select a school") self.fields['school'].empty_label = _("Select a school")
self.fields['birthday'].label = _("Your birthday")
def clean_email(self): def clean_email(self):
if not OptionalUser.objects.first().local_email_domain in self.cleaned_data.get('email'): if not OptionalUser.objects.first().local_email_domain in self.cleaned_data.get('email'):
@ -334,12 +335,14 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
'email', 'email',
'school', 'school',
'comment', 'comment',
'birthday',
'disclaimer', 'disclaimer',
'room', 'room',
'shell', 'shell',
'telephone', 'telephone',
'gpg_fingerprint' 'gpg_fingerprint'
] ]
widgets = {'birthday':DatePicker}
def clean_telephone(self): def clean_telephone(self):
@ -600,7 +603,7 @@ class BanForm(FormRevMixin, ModelForm):
super(BanForm, self).__init__(*args, prefix=prefix, **kwargs) super(BanForm, self).__init__(*args, prefix=prefix, **kwargs)
self.fields['date_end'].label = _("End date") self.fields['date_end'].label = _("End date")
self.fields['date_end'].localize = False self.fields['date_end'].localize = False
class Meta: class Meta:
model = Ban model = Ban
exclude = ['user'] exclude = ['user']

25
users/migrations/0078_auto_20180826_1440.py

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-26 12:40
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0077_auto_20180824_1750'),
]
operations = [
migrations.AddField(
model_name='user',
name='disclaimer',
field=models.FileField(blank=True, upload_to='disclaimers'),
),
migrations.AlterField(
model_name='user',
name='state',
field=models.IntegerField(choices=[(0, 'STATE_ACTIVE'), (1, 'STATE_DISABLED'), (2, 'STATE_ARCHIVE')], default=0),
),
]

20
users/migrations/0078_user_date.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-28 13:56
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0077_user_disclaimer'),
]
operations = [
migrations.AddField(
model_name='user',
name='date',
field=models.DateField(default=None, verbose_name='Date'),
),
]

20
users/migrations/0079_auto_20180828_0859.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-28 13:59
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0078_user_date'),
]
operations = [
migrations.RenameField(
model_name='user',
old_name='date',
new_name='birthday',
),
]

20
users/migrations/0080_auto_20180828_1029.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-28 15:29
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0079_auto_20180828_0859'),
]
operations = [
migrations.AlterField(
model_name='user',
name='birthday',
field=models.DateTimeField(default=None, verbose_name='Date'),
),
]

20
users/migrations/0081_auto_20180828_1031.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-28 15:31
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0080_auto_20180828_1029'),
]
operations = [
migrations.AlterField(
model_name='user',
name='birthday',
field=models.DateField(default=None, verbose_name='Date'),
),
]

4
users/models.py

@ -87,6 +87,9 @@ from machines.models import Domain, Interface, Machine, regen
from preferences.models import GeneralOption, AssoOption, OptionalUser from preferences.models import GeneralOption, AssoOption, OptionalUser
from preferences.models import OptionalMachine, MailMessageOption from preferences.models import OptionalMachine, MailMessageOption
from datetime import date
# Utilitaires généraux # Utilitaires généraux
@ -238,6 +241,7 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
default=get_fresh_user_uid, default=get_fresh_user_uid,
unique=True unique=True
) )
birthday = models.DateField(_("Date"), default=None)
disclaimer = models.FileField(upload_to='disclaimers', blank=True) disclaimer = models.FileField(upload_to='disclaimers', blank=True)
rezo_rez_uid = models.PositiveIntegerField( rezo_rez_uid = models.PositiveIntegerField(
unique=True, unique=True,

11
users/templates/users/datetimepicker.html

@ -6,11 +6,15 @@
<link href="/javascript/jquery-timepicker/jquery-ui-timepicker-addon.css" rel="stylesheet"/> <link href="/javascript/jquery-timepicker/jquery-ui-timepicker-addon.css" rel="stylesheet"/>
<input {{attrs}} name="{{name}}" type="text" class="form-control" placeholder="Date"/> <input {{attrs}} name="{{name}}" type="text" class="form-control" placeholder="Date"/>
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
{% if time %}
$("#{{id}}").datetimepicker({ $("#{{id}}").datetimepicker({
{% else %}
$("#{{id}}").datepicker({
{% endif %}
closeText: "{{closeText}}", closeText: "{{closeText}}",
currentText: "{{currentText}}", currentText: "{{currentText}}",
dateFormat:'yy-mm-dd', dateFormat:'dd-mm-yy',
dayNames: {{dayNames}}, dayNames: {{dayNames}},
dayNamesMin: {{dayNamesMin}}, dayNamesMin: {{dayNamesMin}},
dayNamesShort: {{dayNamesShort}}, dayNamesShort: {{dayNamesShort}},
@ -25,4 +29,5 @@ $(document).ready(function(){
closeText: "{{closeText}}", closeText: "{{closeText}}",
}) })
}); });
</script> </script>

14
users/templates/users/user.html

@ -38,6 +38,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" type="text/css"> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" type="text/css">
<script type='text/javascript'> <script type='text/javascript'>
$(function() {
$( ".datepicker" ).datepicker({
changeMonth: true,
changeYear: true,
yearRange: "1900:2012",
});
});
function submitBday() { function submitBday() {
var field = document.getElementById("file"); var field = document.getElementById("file");
var Bdate = document.getElementById('bday').value; var Bdate = document.getElementById('bday').value;
@ -100,8 +107,9 @@ function submitBday() {
{% render_field userform.telephone class="form-control" requiered=True %} {% render_field userform.telephone class="form-control" requiered=True %}
</div> </div>
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label>Date de naissance</label> {{ userform.birthday.label_tag}}
<input class="form-control" id="bday" name="bday" date-date-format="dd-mm-yy" requiered=True placeholder="Date de naissance" type="date" onchange="submitBday()"> {% render_field userform.birthday class="form-control" requiered=True %}
{# <input class="form-control" id="bday" name="bday" date-date-format="dd-mm-yy" requiered=True placeholder="Date de naissance" type="date" onchange="submitBday()"> #}
</div> </div>
</div> </div>
@ -126,7 +134,7 @@ function submitBday() {
var div = document.getElementById("div_disclaimer"); var div = document.getElementById("div_disclaimer");
var input = document.getElementById("{{userform.disclaimer.auto_id}}"); var input = document.getElementById("{{userform.disclaimer.auto_id}}");
var Bdate = document.getElementById('bday').value; var Bdate = document.getElementById('{{userform.birthday.auto_id').value;
var Bday = +new Date(Bdate); var Bday = +new Date(Bdate);
var age = ((Date.now() - Bday) / (31557600000)); var age = ((Date.now() - Bday) / (31557600000));

28
users/widgets.py

@ -25,10 +25,12 @@ def list2str(str_iterable):
class DateTimePicker(Input): class DateTimePicker(Input):
is_localized = False is_localized = False
def render(self, name, value, attrs=None): def render(self, name, value, attrs=None):
super().render(name, value, attrs) super().render(name, value, attrs)
flat_attrs = flatatt(attrs) flat_attrs = flatatt(attrs)
context = Context({ context = Context({
'time': True,
'name': name, 'name': name,
'attrs': flat_attrs, 'attrs': flat_attrs,
'id': attrs['id'], 'id': attrs['id'],
@ -48,3 +50,29 @@ class DateTimePicker(Input):
template = get_template('users/datetimepicker.html') template = get_template('users/datetimepicker.html')
return template.render(context) return template.render(context)
class DatePicker(Input):
is_localized = False
def render(self, name, value, attrs=None):
super().render(name, value, attrs)
flat_attrs = flatatt(attrs)
context = Context({
'time': False,
'name': name,
'attrs': flat_attrs,
'id': attrs['id'],
'closeText': _("Close"),
'currentText': _("Today"),
'dayNames': mark_safe(list2str((str(item[1]) for item in WEEKDAYS.items()))),
'dayNamesMin': mark_safe(list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))),
'dayNamesShort': mark_safe(list2str((str(item[1]) for item in WEEKDAYS_ABBR.items()))),
'firstDay': mark_safe('"' + str(WEEKDAYS[settings.FIRST_DAY_OF_WEEK]) + '"'),
'isRTL': str(get_language_bidi()).lower(),
'monthNames': mark_safe(list2str((str(item[1]) for item in MONTHS.items()))),
'monthNamesShort': mark_safe(list2str((str(item[1]) for item in MONTHS_3.items()))),
'nextText': mark_safe('"' + str(_('Next')) + '"'),
'prevText': mark_safe('"' + str(_('Previous')) + '"'),
'weekHeader': mark_safe('"' + str(_('Wk')) + '"' ),
})
template = get_template('users/datetimepicker.html')
return template.render(context)

Loading…
Cancel
Save