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
Beispiel #2
0
 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)
Beispiel #3
0
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')
Beispiel #5
0
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
Beispiel #6
0
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
                    )
                })
Beispiel #8
0
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>