mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-23 23:43:47 +00:00
Datepicker au bon format
This commit is contained in:
parent
0ea50dcebe
commit
52efe5ff2d
10 changed files with 136 additions and 33 deletions
|
@ -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):
|
||||||
|
|
|
@ -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
Normal file
20
users/migrations/0078_user_date.py
Normal file
|
@ -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
Normal file
20
users/migrations/0079_auto_20180828_0859.py
Normal file
|
@ -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
Normal file
20
users/migrations/0080_auto_20180828_1029.py
Normal file
|
@ -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
Normal file
20
users/migrations/0081_auto_20180828_1031.py
Normal file
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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,
|
||||||
|
|
|
@ -7,10 +7,14 @@
|
||||||
<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}},
|
||||||
|
@ -26,3 +30,4 @@ $(document).ready(function(){
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
||||||
|
|
|
@ -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…
Reference in a new issue