def get_weekday_properties(): dayabbrs = WEEKDAYS_ABBR.values() * 2 daynames = WEEKDAYS.values() * 2 weekday_names = [] weekday_abbrs = [] first_dow = standardise_first_dow(formats.get_format('FIRST_DAY_OF_WEEK')) for i in range(first_dow, first_dow + 7): weekday_names.append(daynames[i]) weekday_abbrs.append(dayabbrs[i]) return weekday_names, weekday_abbrs
def render(self, name, value, attrs=None): super().render(name, value, attrs) flat_attrs = flatatt(attrs) context = { '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)
from django import forms from django.utils.safestring import mark_safe from django.utils.dates import WEEKDAYS_ABBR WEEKDAY_ABBRS = map(lambda t: t[1], sorted(list(WEEKDAYS_ABBR.iteritems()))) class WorkdaysWidget(forms.widgets.NumberInput): def render(self, name, value, attrs=None): boxes = [ # Create 7 checkboxes, checked for each workday in the week """<input type="checkbox" id="bit-{}" {} onChange="update_workdays({});" />""".format( i, 'checked="checked"' if value & (1 << i) else '', i) for i in xrange(7)] attrs.update({'type':'hidden'}) html = super(WorkdaysWidget, self).render(name, value, attrs) js = u""" <script type="text/javascript"> function update_workdays(offset) { var initial = document.getElementById('id_workdays').value; var new_value = initial ^ (1 << offset); document.getElementById('id_workdays').value = new_value; } </script> """ html = u""" <div> <table> <tr><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th></tr> <tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td></tr> </table> """.format(*WEEKDAY_ABBRS+boxes) + html + u"""
def test_day_names_abbr_property(self): for obj in self.objects: assert_equal(obj.day_names_abbr, WEEKDAYS_ABBR.values()) assert_equal(obj.day_names_abbr[0], 'Mon') assert_equal(obj.day_names_abbr[6], 'Sun')
class Cup(models.Model): INTERVAL_CHOICES = ((0, _('Daily')), (1, _('Weekly')), (2, _('Monthly'))) class Meta: verbose_name = _('Coffee Cup') app_label = "coffeemaker" ordering = ['-date_created'] created_by = models.ForeignKey(User, verbose_name=_('Author'), related_name='cup_authors') owl = models.ForeignKey(User, verbose_name=_('Owl'), related_name='cup_owls', blank=True, null=True) table = models.ForeignKey(Table, verbose_name=_('Table'), blank=True, null=True) followers = models.ManyToManyField(User, blank=True, null=True) title = models.CharField(_('Title'), max_length=255, blank=True) description = models.TextField(_('Description'), blank=True) completed = models.BooleanField(_('Completed'), default=False) public = models.BooleanField(_('Public'), default=False) locked = models.BooleanField(_('Locked'), default=False) # Repetitive tasks set_to_repeat = models.BooleanField(_('Set to repeat'), default=False) repeat_interval = models.PositiveSmallIntegerField( verbose_name=_('Repeat interval'), choices=INTERVAL_CHOICES, blank=True, null=True) repeat_months = pg_fields.ArrayField( verbose_name=_('Months to be repeated'), base_field=models.PositiveSmallIntegerField(choices=MONTHS.items()), size=12, blank=True, null=True) repeat_days = pg_fields.ArrayField( verbose_name=_('Days to be repeated'), base_field=models.PositiveSmallIntegerField( choices=WEEKDAYS_ABBR.items()), size=12, blank=True, null=True) repeat_date_range = pg_fields.DateTimeRangeField( verbose_name=_('Repeat date range'), blank=True, null=True) # Time information calendar_date_range = pg_fields.DateTimeRangeField(_('Time range'), blank=True, null=True) due_date = models.DateTimeField(_('Due date'), blank=True, null=True) date_created = models.DateTimeField(_('Date Created'), auto_now_add=True) last_modified = models.DateTimeField(_('Last Modified'), auto_now=True) def __str__(self): return self.title
from django.utils.dates import WEEKDAYS_ABBR as _WEEKDAYS_ABBR, WEEKDAYS as _WEEKDAYS from django.utils.translation import ugettext_lazy as _ def weekday_name(iso_number): """Return the weekday name for the given ISO weekday number or a blank string.""" try: return _WEEKDAYS[iso_number - 1] except IndexError: return u"" WEEKDAYS = tuple([_WEEKDAYS[i] for i in sorted(_WEEKDAYS.keys())]) WEEKDAYS_ABBR = tuple([_WEEKDAYS_ABBR[i] for i in sorted(_WEEKDAYS_ABBR.keys())]) WEEKDAYS_SINGLE_LETTER = (_('M'), _('T'), _('W'), _('R'), _('F'), _('S'), _('U'))
def __init__(self, attrs=None, format=None, datepicker_class='datepicker', params=None): params = params or {} attrs = attrs or {} class_attr = attrs.get('class', datepicker_class) if datepicker_class not in class_attr: attrs.update({ 'class': '{0} {1}'.format(class_attr, datepicker_class), 'readonly': True, }) else: attrs.update({ 'class': 'datepicker', 'readonly': True, }) super(DatePickerWidget, self).__init__(attrs, format) self.params = { 'changeMonth': True, 'changeYear': True, 'yearRange': '2000:2050', } self.regional = { 'closeText': _('Close'), 'prevText': _('Previous'), 'nextText': _('Next'), 'currentText': _('Current'), 'monthNames': map(unicode, MONTHS_ALT.values()), 'monthNamesShort': map(unicode, MONTHS_AP.values()), 'dayNames': map(unicode, WEEKDAYS.values()), 'dayNamesShort': map(unicode, WEEKDAYS_ABBR.values()), 'dayNamesMin': map(unicode, WEEKDAYS_ABBR.values()), 'isRTL': get_language_bidi(), # weekHeader # dateFormat # firstDay # showMonthAfterYear # yearSuffix } # Update the datepicker parameters self.params.update(params) pattern = re.compile( r'(?<!\w)(' + '|'.join(PYTHON_TO_DATEPICKER_FORMAT.keys()) + r')\b' ) if params.get('beforeShowDay'): raise NotImplementedError( u'beforeShowDay is not supported. Please add the function to ' u'the template.' ) if not params.get('dateFormat'): self.params.update({ 'dateFormat': pattern.sub( lambda x: PYTHON_TO_DATEPICKER_FORMAT[x.group()], self.format ) }) import datetime min_date = self.params.get('minDate') if min_date: if isinstance(min_date, datetime.date): self.params.update({ 'minDate': self.params['minDate'].strftime( format=self.format ) }) elif isinstance(min_date, datetime.datetime): self.params.update({ 'maxDate': min_date.strftime( format=self.format ) }) max_date = self.params.get('maxDate') if max_date: if isinstance(max_date, datetime.date): self.params.update({ 'maxDate': max_date.strftime( format=self.format ) }) elif isinstance(max_date, datetime.datetime): self.params.update({ 'maxDate': max_date.strftime( format=self.format ) })
from django import forms from django.utils.safestring import mark_safe from django.utils.dates import WEEKDAYS_ABBR WEEKDAY_ABBRS = map(lambda t: t[1], sorted(list(WEEKDAYS_ABBR.iteritems()))) class WorkdaysWidget(forms.widgets.NumberInput): def render(self, name, value, attrs=None): boxes = [ # Create 7 checkboxes, checked for each workday in the week """<input type="checkbox" id="bit-{}" {} onChange="update_workdays({});" />""" .format(i, 'checked="checked"' if value & (1 << i) else '', i) for i in xrange(7) ] attrs.update({'type': 'hidden'}) html = super(WorkdaysWidget, self).render(name, value, attrs) js = u""" <script type="text/javascript"> function update_workdays(offset) { var initial = document.getElementById('id_workdays').value; var new_value = initial ^ (1 << offset); document.getElementById('id_workdays').value = new_value; } </script> """ html = u""" <div> <table> <tr><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th><th>{}</th></tr> <tr><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td><td>{}</td></tr> </table>