예제 #1
0
def get_current_events(calendar: Calendar, limit: int = 5) -> list:
    """Get upcoming events from a calendar (ICS) object.

    :param calendar: The calendar object
    :param limit: Count of events
    :return: List of upcoming events
    """
    i: int = 0
    events: list = []
    for event in calendar.timeline.start_after(timezone.now()):
        # Check for limit
        if i >= limit:
            break
        i += 1

        if event.all_day:
            # The last day in all day events is excluded
            event.end -= timedelta(days=1)

        # Create formatted dates and times for begin and end
        begin_date_formatted = formats.date_format(event.begin)
        end_date_formatted = formats.date_format(event.end)
        begin_time_formatted = formats.time_format(event.begin.time())
        end_time_formatted = formats.time_format(event.end.time())

        if event.begin.date() == event.end.date():
            # Event is only on one day
            formatted = begin_date_formatted

            if not event.all_day:
                # No all day event
                formatted += f" {begin_time_formatted}"

                if event.begin.time != event.end.time():
                    # Event has an end time
                    formatted += f" – {end_time_formatted}"

        else:
            # Event is on multiple days
            if event.all_day:
                # Event is all day
                formatted = f"{begin_date_formatted} – {end_date_formatted}"
            else:
                # Event has begin and end times
                formatted = (
                    f"{begin_date_formatted} {begin_time_formatted}"
                    f" – {end_date_formatted} {end_time_formatted}"
                )

        events.append(
            {
                "name": event.name,
                "begin_timestamp": event.begin.timestamp,
                "end_timestamp": event.end.timestamp,
                "date_formatted": formatted,
            }
        )

    return events
예제 #2
0
파일: views.py 프로젝트: tienne-B/tabbycat
    def get_tables(self):
        tables = []

        # notifications.sentmessage_set.first().emailstatus_set.first().latest_statuses will be a list
        notifications = self.tournament.bulknotification_set.select_related(
            'round',
        ).prefetch_related(Prefetch(
            'sentmessage_set',
            queryset=SentMessage.objects.select_related(
                'recipient',
            ).prefetch_related(Prefetch(
                'emailstatus_set',
                queryset=EmailStatus.objects.order_by('-timestamp'),
                to_attr='statuses',
            )),
        ))

        for notification in notifications:

            if notification.round is not None:
                subtitle = notification.round.name
            else:
                subtitle = _("@ %s") % formats.time_format(timezone.localtime(notification.timestamp), use_l10n=True)

            table = TabbycatTableBuilder(view=self, title=notification.get_event_display().capitalize(), subtitle=subtitle)

            emails_recipient = []
            emails_addresses = []
            emails_status = []
            emails_time = []

            for sentmessage in notification.sentmessage_set.all():
                emails_recipient.append(sentmessage.recipient.name if sentmessage.recipient else self.UNKNOWN_RECIPIENT_CELL)
                emails_addresses.append(sentmessage.email or self.UNKNOWN_RECIPIENT_CELL)

                if len(sentmessage.statuses) > 0:
                    latest_status = sentmessage.statuses[0]  # already ordered
                    status_cell = {
                        "text": latest_status.get_event_display(),
                        "class": self._get_event_class(latest_status.event),
                        "popover": {
                            "title": _("Timeline"),
                            "content": self._create_status_timeline(sentmessage.statuses),
                        },
                    }
                    emails_status.append(status_cell)
                    emails_time.append(formats.time_format(timezone.localtime(latest_status.timestamp), use_l10n=True))
                else:
                    emails_status.append(self.NA_CELL)
                    emails_time.append(self.NA_CELL)

            table.add_column({'key': 'name', 'tooltip': _("Participant"), 'icon': 'user'}, emails_recipient)
            table.add_column({'key': 'email', 'tooltip': _("Email address"), 'icon': 'mail'}, emails_addresses)
            table.add_column({'key': 'name', 'title': _("Status")}, emails_status)
            table.add_column({'key': 'name', 'title': _("Time")}, emails_time)

            tables.append(table)

        return tables
예제 #3
0
파일: views.py 프로젝트: hnejadi/EShop-2
 def get_ship_date_label(self, e_date, e_mission):
     start = e_mission.starts
     end = e_mission.ends
     date_str = date_format(e_date)
     start_str = time_format(start)
     end_str = time_format(end)
     return "%(date)s, %(start)s - %(end)s" % {
         'date': date_str,
         'start': start_str,
         'end': end_str}
예제 #4
0
 def get_ship_date_label(self, e_date, e_mission):
     start = e_mission.starts
     end = e_mission.ends
     date_str = date_format(e_date)
     start_str = time_format(start)
     end_str = time_format(end)
     return "%(date)s, %(start)s - %(end)s" % {
         'date': date_str,
         'start': start_str,
         'end': end_str
     }
예제 #5
0
def compute_schedule(self, organization_id):
    celery_id = self.request.id
    start = timezone.localtime(timezone.now())
    count = Organization.objects \
        .filter(pk=organization_id, celery_task_id=None) \
        .update(celery_task_id=celery_id, celery_start=start,
                message=_('Computation started at %(d)s, %(t)s') % {'d': date_format(start, use_l10n=True),
                                                                    't': time_format(start, use_l10n=True)})
    if count == 0:
        return
    organization = Organization.objects.get(pk=organization_id, celery_task_id=celery_id)
    schedule_run = ScheduleRun(organization=organization, celery_task_id=celery_id, celery_start=start)
    schedule_run.save()
    scheduler = Scheduler(organization)
    try:
        result_list = scheduler.solve(verbose=False, max_compute_time=organization.max_compute_time,
                                      schedule_run=schedule_run)
        result_dict = scheduler.result_by_agent(result_list)
        end = timezone.localtime(timezone.now())
        selected = bool(result_dict)
        if selected:
            apply_schedule(organization_id, result_dict)
            msg = _('Computation finished at %(d)s, %(t)s') % {'d': date_format(end, use_l10n=True),
                                                               't': time_format(end, use_l10n=True)}
            balancing = scheduler.compute_balancing(result_list)
            if balancing:
                balances = _(', ').join(['%s: %s' % (x[0], x[2]) for x in balancing.values()])
                schedule_msg = _('Balancing: %(b)s') % {'b': balances}
            else:
                schedule_msg = _('No balance required.')
            ScheduleRun.objects.filter(organization__id=organization_id).update(is_selected=False)
        else:
            schedule_msg = _('Unable to find a solution')
            msg = _('Unable to find a solution, maybe you should remove some constraints. '
                    'Computation finished at %(d)s, %(t)s') % {'d': date_format(end, use_l10n=True),
                                                               't': time_format(end, use_l10n=True)}
        serialized_result_dict = json.dumps(result_dict, cls=SetJSONEncoder)
        ScheduleRun.objects.filter(pk=schedule_run.pk).update(celery_end=end, process_id=None, status=bool(result_dict),
                                                              result_dict=serialized_result_dict, is_selected=selected,
                                                              message=schedule_msg)
    except subprocess.TimeoutExpired:
        end = timezone.localtime(timezone.now())
        msg = _('%(d)s, %(t)s: Unable to find a schedule in the allowed time.') % \
            {'d': date_format(end, use_l10n=True), 't': time_format(end, use_l10n=True)}
        ScheduleRun.objects.filter(pk=schedule_run.pk).update(celery_end=end, process_id=None, status=False)
    except Exception as e:
        end = timezone.localtime(timezone.now())
        msg = _('%(d)s, %(t)s: Unable to compute a schedule %(msg)s') % \
            {'msg': e, 'd': date_format(end, use_l10n=True), 't': time_format(end, use_l10n=True)}
        ScheduleRun.objects.filter(pk=schedule_run.pk).update(celery_end=end, process_id=None, status=False)

    Organization.objects.filter(pk=organization_id, celery_task_id=celery_id) \
        .update(celery_task_id=None, message=msg)
예제 #6
0
def _format_label(duration, start_time, end_time):
    """
    Formats a time block label.
    :param duration: Duration.
    :param start_time: Start time.
    :param end_time: End time.
    :return: Formatted string with duration, start, and end time.
    """
    return 'Asleep {} ({} to {})'.format(
        duration_string(duration),
        formats.time_format(start_time, 'TIME_FORMAT'),
        formats.time_format(end_time, 'TIME_FORMAT'))
예제 #7
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    if value in (None, u''):
        return u''
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return time_format(value, arg)
    except AttributeError:
        try:
            return time_format(value, arg)
        except AttributeError:
            return ''
예제 #8
0
    def test_use_24_hour_time_format_en(self):
        field = DateTimeField()
        supported_custom_examples = [
            '10/25/2006 2:30:59',
            '10/25/2006 2:30',
            '10/25/2006 14:30:59',
            '10/25/2006 14:30',
        ]

        for example in supported_custom_examples:
            try:
                result = field.to_python(example)
                self.assertIsInstance(result, datetime.datetime)
            except ValidationError:
                self.fail('Format of "{}" not recognized!'.format(example))

        with self.assertRaises(ValidationError):
            field.to_python('invalid date string!')

        dt = datetime.datetime(year=2011, month=11, day=4, hour=23, minute=5,
                               second=59)
        self.assertEqual(
            date_format(dt, 'DATETIME_FORMAT'), 'Nov. 4, 2011, 23:05:59')

        dt = datetime.datetime(year=2011, month=11, day=4, hour=2, minute=5,
                               second=59)
        self.assertEqual(
            date_format(dt, 'SHORT_DATETIME_FORMAT'), '11/04/2011 2:05:59')

        t = datetime.time(hour=16, minute=2, second=25)
        self.assertEqual(time_format(t), '16:02:25')
예제 #9
0
    def test_date_changed(self):
        event = EventFactory(
            title='Test Title',
            status='open',
            location=GeolocationFactory.create(position=Point(20.0, 10.0)),
            start=now() + timedelta(days=4),
        )

        ParticipantFactory.create_batch(3, activity=event, status='new')
        ParticipantFactory.create(activity=event, status='withdrawn')

        mail.outbox = []

        event.start = event.start + timedelta(days=1)
        event.save()

        recipients = [message.to[0] for message in mail.outbox]

        self.assertTrue(
            event.local_timezone_name in mail.outbox[0].body
        )

        self.assertTrue(
            formats.time_format(event.local_start) in mail.outbox[0].body
        )

        for participant in event.contributions.instance_of(Participant):
            if participant.status == 'new':
                self.assertTrue(participant.user.email in recipients)
            else:
                self.assertFalse(participant.user.email in recipients)
예제 #10
0
def publication_date_time(value):
    """
    Alternative implementation to the built-in `date` template filter which also accepts the
    date string in iso-8601 as passed in by the REST serializers.
    """
    if value in (None, ''):
        return ''

    if not (isinstance(value, datetime) or isinstance(value, datetime_date)):
        value = from_iso8601(value)

    if is_naive(value):
        value = datetime_to_local(value)

    time_str = formats.time_format(value, 'H:i')

    format_pattern = '<span class="time">{}</span><span class="date">&nbsp;&mdash;&nbsp;{}</span>'

    if value.date() == datetime.now().date():
        result = (format_pattern).format(time_str, _('Today'))
    elif value.year == datetime.today().year:
        result = (format_pattern).format(time_str,
                                         dateformat.format(value, 'd E'))
    else:
        result = (format_pattern).format(time_str,
                                         dateformat.format(value, 'd E Y'))

    return result
예제 #11
0
def apply_schedule_run(request, schedule_run_pk):
    obj = get_object_or_404(ScheduleRun, pk=schedule_run_pk)
    organization_id = obj.organization_id
    get_object_or_404(Organization.query(request), pk=organization_id)  # only used to check rights
    # required to get the URL of the "administration change page"
    # noinspection PyProtectedMember
    model_admin = admin.site._registry[Organization]
    assert isinstance(model_admin, OrganizationAdmin)
    # noinspection PyProtectedMember
    opts = model_admin.model._meta

    result_dict = json.loads(obj.result_dict)
    end = obj.celery_end
    d = '%(d)s, %(t)s' % {'d': date_format(end, use_l10n=True), 't': time_format(end, use_l10n=True)}
    if not result_dict:
        messages.error(request, _('Unable to apply the invalid schedule "%(d)s".') % {'d': d})
    else:
        try:
            apply_schedule(organization_id, result_dict)
            Organization.objects.filter(pk=organization_id).update(current_schedule=obj.pk)
            ScheduleRun.objects.filter(organization__id=organization_id).exclude(pk=schedule_run_pk)\
                .update(is_selected=False)
            ScheduleRun.objects.filter(pk=schedule_run_pk).update(is_selected=True)
            messages.success(request, _('Schedule "%(d)s" has been applied.') % {'d': d})
        except ValueError as e:
            messages.error(request, _('Unable to apply the invalid schedule "%(d)s": %(e)s.') % {'d': d, 'e': e})

    new_url = reverse('admin:%s_%s_change' % (opts.app_label, opts.model_name),
                      args=(quote(organization_id),), current_app=model_admin.admin_site.name)
    return HttpResponseRedirect(new_url)
예제 #12
0
 def values(self):
     """
     Returns a list of values for this field for this instance. It's a list
     so we can accomodate many-to-many fields.
     """
     # This import is deliberately inside the function because it causes
     # some settings to be imported, and we don't want to do that at the
     # module level.
     if self.field.rel:
         if isinstance(self.field.rel, models.ManyToOneRel):
             objs = getattr(self.instance.instance, self.field.name)
         elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel
             return list(getattr(self.instance.instance, self.field.name).all())
     elif self.field.choices:
         objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)
     elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):
         if self.raw_value:
             if isinstance(self.field, models.DateTimeField):
                 objs = capfirst(formats.date_format(self.raw_value, 'DATETIME_FORMAT'))
             elif isinstance(self.field, models.TimeField):
                 objs = capfirst(formats.time_format(self.raw_value, 'TIME_FORMAT'))
             else:
                 objs = capfirst(formats.date_format(self.raw_value, 'DATE_FORMAT'))
         else:
             objs = EMPTY_VALUE
     elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
         objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value]
     else:
         objs = self.raw_value
     return [objs]
 def values(self):
     """
     Returns a list of values for this field for this instance. It's a list
     so we can accomodate many-to-many fields.
     """
     # This import is deliberately inside the function because it causes
     # some settings to be imported, and we don't want to do that at the
     # module level.
     if self.field.rel:
         if isinstance(self.field.rel, models.ManyToOneRel):
             objs = getattr(self.instance.instance, self.field.name)
         elif isinstance(self.field.rel, models.ManyToManyRel): # ManyToManyRel
             return list(getattr(self.instance.instance, self.field.name).all())
     elif self.field.choices:
         objs = dict(self.field.choices).get(self.raw_value, EMPTY_VALUE)
     elif isinstance(self.field, models.DateField) or isinstance(self.field, models.TimeField):
         if self.raw_value:
             if isinstance(self.field, models.DateTimeField):
                 objs = capfirst(formats.date_format(self.raw_value, 'DATETIME_FORMAT'))
             elif isinstance(self.field, models.TimeField):
                 objs = capfirst(formats.time_format(self.raw_value, 'TIME_FORMAT'))
             else:
                 objs = capfirst(formats.date_format(self.raw_value, 'DATE_FORMAT'))
         else:
             objs = EMPTY_VALUE
     elif isinstance(self.field, models.BooleanField) or isinstance(self.field, models.NullBooleanField):
         objs = {True: 'Yes', False: 'No', None: 'Unknown'}[self.raw_value]
     else:
         objs = self.raw_value
     return [objs]
예제 #14
0
def nicevalue(value):
    if isinstance(value,datetime):
        return '%s %s' % (date_format(value.date()),time_format(value.time()))
    elif isinstance(value,date):
        return date_format(value)
    else:
        return value
예제 #15
0
    def _command_buatagenda(chat_id, arg, **kwargs):
        args = arg.split('\n', maxsplit=1)
        if len(args) != 2:
            return '''\
/buatagenda <WAKTU>[<ZONA WAKTU>]↩️
<JUDUL AGENDA>↩️
[<DESKRIPSI TAMBAHAN>]

Jika zona waktu tidak ditentukan, dianggap +0700, wakni WIB.
Contoh:

/buatagenda 31-12-2016 16.00
Rapat Akhir Tahun (format Indonesia)

/buatagenda 2016-12-31 16:00
Rapat Akhir Tahun (format waktu ISO)

/buatagenda 31-12-2016 16.00+0900
Rapat Akhir Tahun (zona WIT)
Catatan tambahan: Bawa konsumsi masing-masing'''

        arg_time, arg_text = args
        t = parse_date_time(arg_time.strip())
        if not t:
            return 'Maaf, format waktunya salah, ane nggak ngerti.'
        reminder_t = (t.replace(hour=21, minute=0, second=0) - timedelta(days=1)).astimezone(timezone.UTC())
        message = '📅 %s ⌚ %s\n✒ %s' % (date_format(t), time_format(t), arg_text)
        try:
            Reminder.objects.create(year=reminder_t.year, month=reminder_t.month, mday=reminder_t.day,
                                    hour=reminder_t.hour, message=message, subscriber_id=chat_id, type=Reminder.EVENT)
            return 'Agenda ditambahkan.'
        except IntegrityError:
            return 'Afwan, saat ini agenda cuma dapat digunakan di dalam grup.'
예제 #16
0
파일: models.py 프로젝트: nipal/api-django
    def get_simple_display_date(self):
        tz = timezone.get_current_timezone()
        start_time = self.start_time.astimezone(tz)

        return _("le {date} à {time}").format(
            date=formats.date_format(start_time, "DATE_FORMAT"),
            time=formats.time_format(start_time, "TIME_FORMAT"),
        )
예제 #17
0
파일: tests.py 프로젝트: adamfisk/SoChange
    def test_l10n_disabled(self):
        """
        Catalan locale with format i18n disabled translations will be used,
        but not formats
        """
        settings.USE_L10N = False
        activate('ca')
        try:
            self.assertEqual('N j, Y', get_format('DATE_FORMAT'))
            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'10:15 a.m.', time_format(self.t))
            self.assertEqual(u'des. 31, 2009', date_format(self.d))
            self.assertEqual(u'desembre 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual('No localizable', localize('No localizable'))
            self.assertEqual(decimal.Decimal('66666.666'), localize(self.n))
            self.assertEqual(99999.999, localize(self.f))
            self.assertEqual(datetime.date(2009, 12, 31), localize(self.d))
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), localize(self.dt))
            self.assertEqual(u'66666.666', Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999.999', Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'2009-12-31', Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'2009-12-31 20:50:00', Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(u'66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(u'10:15 a.m.', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u'12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u'12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))

            form = I18nForm({
                'decimal_field': u'66666,666',
                'float_field': u'99999,999',
                'date_field': u'31/12/2009',
                'datetime_field': u'31/12/2009 20:50',
                'time_field': u'20:50',
                'integer_field': u'1.234',
            })
            self.assertEqual(False, form.is_valid())
            self.assertEqual([u'Introdu\xefu un n\xfamero.'], form.errors['float_field'])
            self.assertEqual([u'Introdu\xefu un n\xfamero.'], form.errors['decimal_field'])
            self.assertEqual([u'Introdu\xefu una data v\xe0lida.'], form.errors['date_field'])
            self.assertEqual([u'Introdu\xefu una data/hora v\xe0lides.'], form.errors['datetime_field'])
            self.assertEqual([u'Introdu\xefu un n\xfamero sencer.'], form.errors['integer_field'])

            form2 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form2.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
            )
        finally:
            deactivate()
예제 #18
0
def log_date_privacy(log_date, threshold_days):
    """Removes time from datetimes older than threshold_days days."""
    now = timezone.now()
    delta = now - log_date
    if delta.days >= threshold_days:
        return formats.date_format(log_date, "SHORT_DATE_FORMAT")
    else:
        return (formats.date_format(log_date, "SHORT_DATE_FORMAT") + ' ' +
                formats.time_format(log_date, settings.TIME_WITH_SECONDS_FORMAT))
예제 #19
0
def _timeFormat(when, formatStr):
    """
    Format a single time, e.g. 10am
    """
    if formatStr:
        retval = _Formatter(when).format(formatStr)
    else:
        retval = formats.time_format(when)
    return retval
예제 #20
0
파일: pdf.py 프로젝트: garinm90/ephios
    def get_story(self):
        story = [
            Paragraph(f"{self.event.type}: {self.event.title}",
                      self.style["Heading1"]),
            Spacer(height=0.5 * cm, width=19 * cm),
        ]

        tz = pytz.timezone(settings.TIME_ZONE)
        start_time = self.event.get_start_time().astimezone(tz)
        end_time = self.event.get_end_time().astimezone(tz)
        end_date = (
            f"- {formats.date_format(end_time, 'l')}, {formats.date_format(end_time, 'SHORT_DATE_FORMAT')}"
            if end_time.date() > start_time.date() else "")
        event_date = f"{formats.date_format(start_time, 'l')}, {formats.date_format(start_time, 'SHORT_DATE_FORMAT')} {end_date}"
        data = [
            [_("Location"), self.event.location],
            [_("Date"), event_date],
            [_("Description"),
             Paragraph(self.event.description)],
        ]
        table = Table(data, colWidths=[6 * cm, 13 * cm])
        table.setStyle([("VALIGN", (0, -1), (-1, -1), "TOP")])
        story.append(table)

        for shift in self.event.shifts.all():
            story.append(Spacer(height=1 * cm, width=19 * cm))
            story.append(
                Paragraph(shift.get_start_end_time_display(),
                          self.style["Heading2"]))
            data = [
                [
                    _("Meeting time"),
                    formats.time_format(shift.meeting_time.astimezone(tz))
                ],
            ] + [[
                Paragraph(key), Paragraph(value)
            ] for key, value in shift.signup_method.get_signup_info().items()]
            story.append(Table(data, colWidths=[6 * cm, 13 * cm]))

            if participation_info := shift.signup_method.get_participation_display(
            ):
                story.append(
                    Paragraph(_("Participants"), self.style["Heading3"]))
                col_count = len(participation_info[0])
                table = Table(
                    [[[Paragraph(entry)] for entry in participation]
                     for participation in participation_info],
                    hAlign="LEFT",
                    colWidths=[185 * mm / col_count] * col_count,
                )
                table.setStyle(
                    TableStyle([
                        ("INNERGRID", (0, 0), (-1, -1), 0.25, colors.black),
                        ("BOX", (0, 0), (-1, -1), 0.25, colors.black),
                    ]))
                story.append(table)
예제 #21
0
파일: tests.py 프로젝트: farcaller/django
    def test_l10n_disabled(self):
        """
        Catalan locale with format i18n disabled translations will be used,
        but not formats
        """
        settings.USE_L10N = False
        activate("ca")
        try:
            self.assertEqual("N j, Y", get_format("DATE_FORMAT"))
            self.assertEqual(0, get_format("FIRST_DAY_OF_WEEK"))
            self.assertEqual(".", get_format("DECIMAL_SEPARATOR"))
            self.assertEqual(u"10:15 a.m.", time_format(self.t))
            self.assertEqual(u"des. 31, 2009", date_format(self.d))
            self.assertEqual(u"desembre 2009", date_format(self.d, "YEAR_MONTH_FORMAT"))
            self.assertEqual(u"12/31/2009 8:50 p.m.", date_format(self.dt, "SHORT_DATETIME_FORMAT"))
            self.assertEqual("No localizable", localize("No localizable"))
            self.assertEqual(decimal.Decimal("66666.666"), localize(self.n))
            self.assertEqual(99999.999, localize(self.f))
            self.assertEqual(datetime.date(2009, 12, 31), localize(self.d))
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), localize(self.dt))
            self.assertEqual(u"66666.666", Template("{{ n }}").render(self.ctxt))
            self.assertEqual(u"99999.999", Template("{{ f }}").render(self.ctxt))
            self.assertEqual(u"2009-12-31", Template("{{ d }}").render(self.ctxt))
            self.assertEqual(u"2009-12-31 20:50:00", Template("{{ dt }}").render(self.ctxt))
            self.assertEqual(u"66666.67", Template("{{ n|floatformat:2 }}").render(self.ctxt))
            self.assertEqual(u"100000.0", Template("{{ f|floatformat }}").render(self.ctxt))
            self.assertEqual(u"10:15 a.m.", Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u"12/31/2009", Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u"12/31/2009 8:50 p.m.", Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt)
            )

            form = I18nForm(
                {
                    "decimal_field": u"66666,666",
                    "float_field": u"99999,999",
                    "date_field": u"31/12/2009",
                    "datetime_field": u"31/12/2009 20:50",
                    "time_field": u"20:50",
                }
            )
            self.assertEqual(False, form.is_valid())
            self.assertEqual([u"Introdu\xefu un n\xfamero."], form.errors["float_field"])
            self.assertEqual([u"Introdu\xefu un n\xfamero."], form.errors["decimal_field"])
            self.assertEqual([u"Introdu\xefu una data v\xe0lida."], form.errors["date_field"])
            self.assertEqual([u"Introdu\xefu una data/hora v\xe0lides."], form.errors["datetime_field"])

            form2 = SelectDateForm({"date_field_month": u"12", "date_field_day": u"31", "date_field_year": u"2009"})
            self.assertEqual(True, form2.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form2.cleaned_data["date_field"])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render("mydate", datetime.date(2009, 12, 31)),
            )
        finally:
            deactivate()
예제 #22
0
def humantime(time):
    formatting = 'H:i'
    try:
        formatted = formats.time_format(time, formatting)
    except AttributeError:
        try:
            formatted = time_format(time, formatting)
        except AttributeError:
            formatted = ''
    return _("{date} at {time}").format(date=humandate(time), time=formatted)
예제 #23
0
 def get_times_list(self):
     return '{start}{separator}{end}'.format(
         start = (date_format(datetime.combine(self.start_date, self.start_time), 'SHORT_DATETIME_FORMAT')
                  if self.start_time else date_format(self.start_date, 'SHORT_DATE_FORMAT')),
         separator = ' - ' if self.start_date != self.end_date or self.end_time is not None else '',
         end = ((time_format(self.end_time, 'TIME_FORMAT') if self.end_time else '')
                if self.start_date == self.end_date
                else (date_format(datetime.combine(self.end_date, self.end_time), 'SHORT_DATETIME_FORMAT')
                      if self.end_time else date_format(self.end_date, 'SHORT_DATE_FORMAT'))),
     )
예제 #24
0
    def get_display_date(self):
        tz = timezone.get_current_timezone()
        start_time = self.start_time.astimezone(tz)
        end_time = self.end_time.astimezone(tz)

        if start_time.date() == end_time.date():
            date = formats.date_format(start_time, "DATE_FORMAT")
            return _("le {date}, de {start_hour} à {end_hour}").format(
                date=date,
                start_hour=formats.time_format(start_time, "TIME_FORMAT"),
                end_hour=formats.time_format(end_time, "TIME_FORMAT"),
            )

        return _("du {start_date}, {start_time} au {end_date}, {end_time}").format(
            start_date=formats.date_format(start_time, "DATE_FORMAT"),
            start_time=formats.date_format(start_time, "TIME_FORMAT"),
            end_date=formats.date_format(end_time, "DATE_FORMAT"),
            end_time=formats.date_format(end_time, "TIME_FORMAT"),
        )
예제 #25
0
def log_date_privacy(log_date, threshold_days):
    """Removes time from datetimes older than threshold_days days."""
    now = timezone.now()
    delta = now - log_date
    if delta.days >= threshold_days:
        return formats.date_format(log_date, "SHORT_DATE_FORMAT")
    else:
        return (
            formats.date_format(log_date, "SHORT_DATE_FORMAT") + ' ' +
            formats.time_format(log_date, settings.TIME_WITH_SECONDS_FORMAT))
예제 #26
0
def get_comments(request, post_id):
    post = get_object_or_404(Post, pk=post_id)
    return_json = []
    for comment in post.comment_set.all():
        comment_json = {}
        comment_json['text'] = comment.text
        comment_json['user'] = comment.user.username
        comment_json['date'] = "%s %s" % (formats.date_format(comment.pub_date), 
                formats.time_format(comment.pub_date))
        return_json.append(comment_json)
    return HttpResponse(json.dumps(return_json), content_type='application/json')
예제 #27
0
파일: views.py 프로젝트: tienne-B/tabbycat
 def _create_status_timeline(self, status):
     statuses = []
     for s in status:
         text = _("%(status)s @ %(time)s") % {
             'status': s.get_event_display(),
             'time': formats.time_format(timezone.localtime(s.timestamp), use_l10n=True),
         }
         statuses.append({
             'text': '<span class="%s">%s</span>' % (self._get_event_class(s.event), text),
         })
     return statuses
def time(value, arg=None):
    """Format a time according to the given format."""
    if value in (None, ''):
        return ''
    try:
        return formats.time_format(value, arg)
    except (AttributeError, TypeError):
        try:
            return time_format(value, arg)
        except (AttributeError, TypeError):
            return ''
예제 #29
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    if value in (None, ''):
        return ''
    try:
        return formats.time_format(value, arg)
    except (AttributeError, TypeError):
        try:
            return time_format(value, arg)
        except (AttributeError, TypeError):
            return ''
예제 #30
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    if value in (None, ''):
        return ''
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return time_format(value, arg)
        except AttributeError:
            return ''
예제 #31
0
    def get_display_date(self):
        start_time = self.local_start_time
        end_time = self.local_end_time

        if start_time.date() == end_time.date():
            date = formats.date_format(start_time, "DATE_FORMAT")
            return _("le {date}, de {start_hour} à {end_hour} ({tz})").format(
                date=date,
                start_hour=formats.time_format(start_time, "TIME_FORMAT"),
                end_hour=formats.time_format(end_time, "TIME_FORMAT"),
                tz=self.timezone,
            )

        return _(
            "du {start_date}, {start_time} au {end_date}, {end_time} ({tz})"
        ).format(
            start_date=formats.date_format(start_time, "DATE_FORMAT"),
            start_time=formats.date_format(start_time, "TIME_FORMAT"),
            end_date=formats.date_format(end_time, "DATE_FORMAT"),
            end_time=formats.date_format(end_time, "TIME_FORMAT"),
            tz=self.timezone,
        )
def time(value, arg=None):
    """Formats a time according to the given format."""
    from django.utils import dateformat
    if value in (None, u''):
        return u''
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return dateformat.time_format(value, arg)
        except AttributeError:
            return ''
예제 #33
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    from django.utils import dateformat
    if value in (None, u''):
        return u''
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return dateformat.time_format(value, arg)
        except AttributeError:
            return ''
예제 #34
0
 def event_date(self):
     return '{start}{separator}{end}'.format(
         start=(date_format(
             datetime.combine(self.start_date, self.start_time),
             'SHORT_DATETIME_FORMAT') if self.start_time else date_format(
                 self.start_date, 'SHORT_DATE_FORMAT')),
         separator=' - ' if self.start_date != self.end_date
         or self.end_time is not None else '',
         end=((time_format(self.end_time, 'TIME_FORMAT') if self.end_time
               else '') if self.start_date == self.end_date else
              (date_format(datetime.combine(self.end_date, self.end_time),
                           'SHORT_DATETIME_FORMAT') if self.end_time else
               date_format(self.end_date, 'SHORT_DATE_FORMAT'))),
     )
예제 #35
0
    def get_time_programed(self):
        string = ''
        if self.date_programed not in (None, ''):
            try:
                hour, minute = self.date_programed.hour, self.date_programed.minute
            except:
                date, time = self.date_programed.split(' ')
                hour, minute = time.split(':')
            finally:
                string = str(
                    format(
                        formats.time_format(
                            datetime.time(int(hour), int(minute)), "h:i A")))

        return string
예제 #36
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    if value is None or isinstance(value, Undefined):
        return u''
    from django.conf import settings
    from django.utils import formats
    from django.utils.dateformat import time_format
    if arg is None:
        arg = settings.TIME_FORMAT
    try: 
        return formats.time_format(value, arg) 
    except AttributeError:
        try: 
            return time_format(value, arg) 
        except AttributeError:
            return ''
예제 #37
0
def time(value, arg=None):
    """Formats a time according to the given format."""
    if value is None or isinstance(value, Undefined):
        return u''
    from django.conf import settings
    from django.utils import formats
    from django.utils.dateformat import time_format
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return time_format(value, arg)
        except AttributeError:
            return ''
예제 #38
0
 def _death_time(self, obj):
     remaining_life = obj.death_time - timezone.now()
     percentage_remaining = remaining_life / JobLifeLength.objects.get(
     ).life_length
     if percentage_remaining < 0.2:
         color = "red"
     elif percentage_remaining < 0.5:
         color = "orange"
     elif percentage_remaining < 0.7:
         color = "#b3b300"
     else:
         color = "green"
     return format_html(u'<span style="color:{}">{}, {}</span>'.format(
         color,
         formats.date_format(obj.death_time),
         formats.time_format(obj.death_time),
     ))
예제 #39
0
def time(value, arg=None):
    """
    Alternative implementation to the built-in `time` template filter which also accepts the
    date string in iso-8601 as passed in by the REST serializers.
    """
    if value in (None, ''):
        return ''
    if not isinstance(value, datetime):
        value = from_iso8601(value)
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return time_format(value, arg)
        except AttributeError:
            return ''
예제 #40
0
def time(value, arg=None):
    """
    Alternative implementation to the built-in `time` template filter which also accepts the
    date string in iso-8601 as passed in by the REST serializers.
    """
    if value in (None, ''):
        return ''
    if not isinstance(value, datetime):
        value = from_iso8601(value)
    if arg is None:
        arg = settings.TIME_FORMAT
    try:
        return formats.time_format(value, arg)
    except AttributeError:
        try:
            return time_format(value, arg)
        except AttributeError:
            return ''
예제 #41
0
def get_local_format(_obj) :

	# Imports
	from django.conf import settings
	from django.utils.formats import date_format
	from django.utils.formats import time_format
	import datetime

	output = _obj
	if _obj and settings.USE_L10N == True :
		if isinstance(_obj, datetime.datetime) :
			output = date_format(_obj, 'd/m/Y H:i:s')
		elif isinstance(_obj, datetime.date) :
			output = date_format(_obj, 'd/m/Y')
		elif isinstance(_obj, datetime.time) :
			output = time_format(_obj, 'H:M:S')	

	return output
예제 #42
0
def kill_schedule(self, celery_task_id):
    # noinspection PyUnusedLocal
    self = self
    app.control.revoke(celery_task_id)
    all_process_ids = []
    for values in ScheduleRun.objects.filter(celery_task_id=celery_task_id).values_list('process_id'):
        if values[0]:
            # noinspection PyBroadException
            try:
                os.kill(values[0], signal.SIGKILL)
                all_process_ids.append(values[0])
            except:
                pass
    end = timezone.localtime(timezone.now())
    ScheduleRun.objects.filter(celery_task_id=celery_task_id, process_id__in=all_process_ids) \
        .update(process_id=None, celery_end=end)
    Organization.objects.filter(celery_task_id=celery_task_id) \
        .update(celery_task_id=None, celery_end=end,
                message=_('Computation killed at %(d)s, %(t)s') % {'d': date_format(end, use_l10n=True),
                                                                   't': time_format(end, use_l10n=True)})
예제 #43
0
def home(request, course_key_string):
    course_module = get_course(course_key_string)

    if not request.user.is_staff and not request.user.is_superuser:
        # Are we in a deactivation period?
        now = timezone.now()
        deactivations = VideoUploaderDeactivationPeriod.objects.filter(
            start_time__lte=now, end_time__gte=now
        ).order_by('-end_time')
        if deactivations:
            deactivation = deactivations[0]
            end_date = date_format(deactivation.end_time)
            end_time = time_format(deactivation.end_time)
            return render_to_response('videoupload/deactivated.html', {
                "context_course": course_module,
                "end_date": end_date,
                "end_time": end_time,
            })
    return render_to_response('videoupload/index.html', {
        "context_course": course_module,
    })
예제 #44
0
def home(request, course_key_string):
    course_module = get_course(course_key_string)

    if not request.user.is_staff and not request.user.is_superuser:
        # Are we in a deactivation period?
        now = timezone.now()
        deactivations = VideoUploaderDeactivationPeriod.objects.filter(
            start_time__lte=now, end_time__gte=now).order_by('-end_time')
        if deactivations:
            deactivation = deactivations[0]
            end_date = date_format(deactivation.end_time)
            end_time = time_format(deactivation.end_time)
            return render_to_response(
                'videoupload/deactivated.html', {
                    "context_course": course_module,
                    "end_date": end_date,
                    "end_time": end_time,
                })
    return render_to_response('videoupload/index.html', {
        "context_course": course_module,
    })
예제 #45
0
    def test_use_24_hour_time_format(self):
        update_en_gb_date_formats()
        field = DateTimeField()
        supported_custom_examples = [
            "25/10/2006 2:30:59",
            "25/10/2006 2:30",
            "25/10/2006 14:30:59",
            "25/10/2006 14:30",
        ]

        for example in supported_custom_examples:
            try:
                result = field.to_python(example)
                self.assertIsInstance(result, datetime.datetime)
            except ValidationError:
                self.fail('Format of "{}" not recognized!'.format(example))

        with self.assertRaises(ValidationError):
            field.to_python("invalid date string!")

        dt = datetime.datetime(year=2011,
                               month=11,
                               day=4,
                               hour=23,
                               minute=5,
                               second=59)
        self.assertEqual(date_format(dt, "DATETIME_FORMAT"),
                         "4 November 2011 23:05:59")

        dt = datetime.datetime(year=2011,
                               month=11,
                               day=4,
                               hour=2,
                               minute=5,
                               second=59)
        self.assertEqual(date_format(dt, "SHORT_DATETIME_FORMAT"),
                         "04/11/2011 02:05")

        t = datetime.time(hour=16, minute=2, second=25)
        self.assertEqual(time_format(t), "16:02")
예제 #46
0
    def _command_jadwalshalat(arg, **kwargs):
        location_name = arg.strip() or 'Jakarta'
        try:
            l = Location.objects.get(city__iexact=location_name)
        except (Location.DoesNotExist, Location.MultipleObjectsReturned):
            return 'Afwan, ane belum tahu lokasi "%s" ada dimana.' % location_name

        date = timezone.now().astimezone(timezone.FixedOffset(l.tz * 60))
        t = salat.TimeCalculator().date(date). \
            location(l.lat, l.lng, l.alt, l.tz). \
            method('muhammadiyah').calculate()
        return '''🕌 Jadwal shalat {} untuk {}
(koordinat {}, {}; ketinggian {} mdpl; zona waktu {}):

Shubuh - {}
Syuruq - {}
Zhuhur - {}
Ashar - {}
Maghrib - {}
Isya - {}'''.format(date_format(date), l.city, number_format(l.lat), number_format(l.lng), number_format(l.alt, -2),
                    timezone_format(l.tz),
                    *[time_format(t.get_time(i)) for i in range(salat.N)])
예제 #47
0
    def process_export_transactions(self, transactions):
        """
        Convert raw object list transactions into format as per template
        TODO would be neater to use same template for both HTML and CSV
        """
        processed_transactions = []

        for trans in transactions:
            amount = round(float(trans.amount), 2)
            amount = "%s%s" % (intcomma(int(amount)), ("%0.2f" % amount)[-3:])
            try:
                sender = trans.sender.get_profile().full_name
            except:
                try:
                    sender = trans.sender.cc3_profile.full_name
                except:
                    sender = trans.sender

            try:
                receiver = trans.recipient.get_profile().full_name
            except:
                try:
                    receiver = trans.recipient.cc3_profile.full_name
                except:
                    receiver = trans.recipient

            trans_dict = SortedDict()
            trans_dict["date"] = "%s %s" % (
                date_format(trans.created, use_l10n=True),
                time_format(trans.created, use_l10n=True)
            )
            trans_dict["from"] = sender
            trans_dict["to"] = receiver
            trans_dict["description"] = trans.description
            trans_dict["amount"] = "%s %s" % (amount, settings.CURRENCY_SYMBOL)

            processed_transactions.append(trans_dict)

        return processed_transactions
예제 #48
0
    def get(self, request, *args, **kwargs):
        transactions = self.get_queryset()

        processed_transactions = []

        for trans in transactions:
            # TODO Add support for currencies with decimal points
            amount = int(trans.amount)

            trans_dict = SortedDict()
            trans_dict['date'] = "%s %s" % (date_format(
                trans.date_created,
                use_l10n=True), time_format(trans.date_created, use_l10n=True))
            trans_dict['operator'] = trans.operator.name
            if trans.operator.business == trans.receiver:
                trans_dict['amount +'] = "%s" % amount
                trans_dict['amount -/-'] = ""
            else:
                trans_dict['amount +'] = ""
                trans_dict['amount -/-'] = "-%s" % amount

            processed_transactions.append(trans_dict)

        if not processed_transactions:
            processed_transactions = [[]]
            headings = None
        else:
            headings = [
                ugettext('date'),
                ugettext('operator'),
                ugettext('amount +'),
                ugettext('amount -/-')
            ]

        return ExcelResponse(processed_transactions,
                             force_csv=True,
                             output_name=self.report_output_name,
                             header_override=headings)
예제 #49
0
def post_comment(request):
    return_json = {}
    formatted_date = ""
    if request.user.is_authenticated:
        post_id = request.POST['post']
        text = request.POST['text']
        try:
            post = get_object_or_404(Post, pk=int(post_id))
        except ValueError:
            return_json = {'status': 0, 'error': u'Не существует такой записи'}
            return HttpResponse(json.dumps(return_json), mimetype='application/json')
        if text and len(text.strip()) > 0:
            comment = Comment(user=request.user, 
                    pub_date=datetime.datetime.now(), 
                    text=text, 
                    post=post)
            comment.save()
            return_json = {'status': 1, 'date': "%s %s" % (formats.date_format(comment.pub_date), 
                    formats.time_format(comment.pub_date))}
        else:
            return_json = {'status': 0, 'error': u'Текст комментария не может быть пустым'}
    else:
        return_json = {'status': 0, 'error': u'Вы должны быть зарегистрированы, чтобы оставить комментарий'}
    return HttpResponse(json.dumps(return_json), content_type='application/json')
예제 #50
0
def format_datetime(value):
    return "%s, %s" % (formats.date_format(value), formats.time_format(value))
예제 #51
0
파일: models.py 프로젝트: ceasaro/jeslee
 def start_time_f(self):
     return formats.time_format(self.start_time, "TIME_FORMAT")
예제 #52
0
    def test_l10n_enabled(self):
        """
        Catalan locale
        """
        settings.USE_L10N = True
        activate('ca')
        try:
            self.assertEqual('j \de F \de Y', get_format('DATE_FORMAT'))
            self.assertEqual(1, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual(',', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'10:15:48', time_format(self.t))
            self.assertEqual(u'31 de desembre de 2009', date_format(self.d))
            self.assertEqual(u'desembre del 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'31/12/2009 20:50', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual('No localizable', localize('No localizable'))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66.666,666', localize(self.n))
            self.assertEqual(u'99.999,999', localize(self.f))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666,666', localize(self.n))
            self.assertEqual(u'99999,999', localize(self.f))
            self.assertEqual(u'31 de desembre de 2009', localize(self.d))
            self.assertEqual(u'31 de desembre de 2009 a les 20:50', localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66.666,666', Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99.999,999', Template('{{ f }}').render(self.ctxt))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666,666', Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999,999', Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'31 de desembre de 2009', Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'31 de desembre de 2009 a les 20:50', Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(u'66666,67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000,0', Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(u'10:15:48', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u'31/12/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u'31/12/2009 20:50', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))

            form3 = I18nForm({
                'decimal_field': u'66666,666',
                'float_field': u'99999,999',
                'date_field': u'31/12/2009',
                'datetime_field': u'31/12/2009 20:50',
                'time_field': u'20:50'
            })
            self.assertEqual(True, form3.is_valid())
            self.assertEqual(decimal.Decimal('66666.666'), form3.cleaned_data['decimal_field'])
            self.assertEqual(99999.999, form3.cleaned_data['float_field'])
            self.assertEqual(datetime.date(2009, 12, 31), form3.cleaned_data['date_field'])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form3.cleaned_data['datetime_field'])
            self.assertEqual(datetime.time(20, 50), form3.cleaned_data['time_field'])

            form4 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form4.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form4.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
            )
        finally:
            deactivate()

        # English locale

        settings.USE_L10N = True
        activate('en')
        try:
            self.assertEqual('N j, Y', get_format('DATE_FORMAT'))
            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'Dec. 31, 2009', date_format(self.d))
            self.assertEqual(u'December 2009', date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'12/31/2009 8:50 p.m.', date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual('No localizable', localize('No localizable'))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66,666.666', localize(self.n))
            self.assertEqual(u'99,999.999', localize(self.f))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666.666', localize(self.n))
            self.assertEqual(u'99999.999', localize(self.f))
            self.assertEqual(u'Dec. 31, 2009', localize(self.d))
            self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.', localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66,666.666', Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99,999.999', Template('{{ f }}').render(self.ctxt))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666.666', Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999.999', Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'Dec. 31, 2009', Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.', Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(u'66666.67', Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000.0', Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(u'12/31/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u'12/31/2009 8:50 p.m.', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))

            form5 = I18nForm({
                'decimal_field': u'66666.666',
                'float_field': u'99999.999',
                'date_field': u'12/31/2009',
                'datetime_field': u'12/31/2009 20:50',
                'time_field': u'20:50'
            })
            self.assertEqual(True, form5.is_valid())
            self.assertEqual(decimal.Decimal('66666.666'), form5.cleaned_data['decimal_field'])
            self.assertEqual(99999.999, form5.cleaned_data['float_field'])
            self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data['date_field'])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form5.cleaned_data['datetime_field'])
            self.assertEqual(datetime.time(20, 50), form5.cleaned_data['time_field'])

            form6 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form6.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render('mydate', datetime.date(2009, 12, 31))
            )
        finally:
            deactivate()
예제 #53
0
    def render(self, data, media_type=None, renderer_context=None):
        renderer_context = renderer_context or {}
        day = renderer_context.get('day')

        include_resources_without_reservations = renderer_context.get('include_resources_without_reservations')
        document = self.create_document()

        first_resource = True
        atleast_one_reservation = False

        current_language = get_language()

        def get_translated_prop(obj, prop_name):
            prop = obj.get(prop_name, {})
            val = prop.get(current_language)
            if not val:
                return prop.get(FALLBACK_LANGUAGE)
            return val

        for resource in data:
            reservations = [rv for rv in resource['reservations'] if rv['state'] == Reservation.CONFIRMED]
            reservation_count = len(reservations)
            if reservation_count == 0 and not include_resources_without_reservations:
                continue

            atleast_one_reservation = True

            # every resource on it's own page, a bit easier to add linebreak here than at the end
            if not first_resource:
                document.add_page_break()
            else:
                first_resource = False

            document.add_heading(get_translated_prop(resource, 'name'), 1)
            document.add_heading(formats.date_format(day, format='D j.n.Y'), 2)

            if reservation_count == 0:
                run = document.add_paragraph().add_run(_('No reservations.'))
                run.font.size = Pt(20)

            for reservation in reservations:
                # the time
                begin = iso_to_dt(reservation['begin'])
                end = iso_to_dt(reservation['end'])
                range_str = formats.time_format(localtime(begin)) + '–' + formats.time_format(localtime(end))
                time_paragraph = document.add_heading(range_str, 3)
                time_paragraph.paragraph_format.space_before = Cm(1)

                # collect attributes from the reservation, skip empty ones
                attrs = [(field, reservation.get(field)) for field in (
                    'event_subject',
                    'reserver_name',
                    'host_name',
                    'number_of_participants',
                ) if reservation.get(field)]

                if not attrs:
                    document.add_paragraph(_('No information available'))
                    continue

                table = document.add_table(rows=0, cols=2)
                # build the attribute table
                for attr in attrs:
                    row_cells = table.add_row().cells
                    row_cells[0].text = Reservation._meta.get_field(attr[0]).verbose_name + ':'
                    row_cells[1].text = str(attr[1])

        if not atleast_one_reservation:
            document.add_heading(_('No reservations'), 1)

        output = io.BytesIO()
        document.save(output)

        return output.getvalue()
예제 #54
0
 def l10n_end_time(self):
     if self.end:
         return unicode(formats.time_format(self.naive_end))
     else:
         return ''
예제 #55
0
    def test_l10n_enabled(self):
        """
        Catalan locale
        """
        settings.USE_L10N = True
        activate("ca")
        try:
            self.assertEqual("j \de F \de Y", get_format("DATE_FORMAT"))
            self.assertEqual(1, get_format("FIRST_DAY_OF_WEEK"))
            self.assertEqual(",", get_format("DECIMAL_SEPARATOR"))
            self.assertEqual(u"10:15:48", time_format(self.t))
            self.assertEqual(u"31 de desembre de 2009", date_format(self.d))
            self.assertEqual(u"desembre del 2009", date_format(self.d, "YEAR_MONTH_FORMAT"))
            self.assertEqual(u"31/12/2009 20:50", date_format(self.dt, "SHORT_DATETIME_FORMAT"))
            self.assertEqual("No localizable", localize("No localizable"))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u"66.666,666", localize(self.n))
            self.assertEqual(u"99.999,999", localize(self.f))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u"66666,666", localize(self.n))
            self.assertEqual(u"99999,999", localize(self.f))
            self.assertEqual(u"31 de desembre de 2009", localize(self.d))
            self.assertEqual(u"31 de desembre de 2009 a les 20:50", localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u"66.666,666", Template("{{ n }}").render(self.ctxt))
            self.assertEqual(u"99.999,999", Template("{{ f }}").render(self.ctxt))

            form3 = I18nForm(
                {
                    "decimal_field": u"66.666,666",
                    "float_field": u"99.999,999",
                    "date_field": u"31/12/2009",
                    "datetime_field": u"31/12/2009 20:50",
                    "time_field": u"20:50",
                    "integer_field": u"1.234",
                }
            )
            self.assertEqual(True, form3.is_valid())
            self.assertEqual(decimal.Decimal("66666.666"), form3.cleaned_data["decimal_field"])
            self.assertEqual(99999.999, form3.cleaned_data["float_field"])
            self.assertEqual(datetime.date(2009, 12, 31), form3.cleaned_data["date_field"])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form3.cleaned_data["datetime_field"])
            self.assertEqual(datetime.time(20, 50), form3.cleaned_data["time_field"])
            self.assertEqual(1234, form3.cleaned_data["integer_field"])

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u"66666,666", Template("{{ n }}").render(self.ctxt))
            self.assertEqual(u"99999,999", Template("{{ f }}").render(self.ctxt))
            self.assertEqual(u"31 de desembre de 2009", Template("{{ d }}").render(self.ctxt))
            self.assertEqual(u"31 de desembre de 2009 a les 20:50", Template("{{ dt }}").render(self.ctxt))
            self.assertEqual(u"66666,67", Template("{{ n|floatformat:2 }}").render(self.ctxt))
            self.assertEqual(u"100000,0", Template("{{ f|floatformat }}").render(self.ctxt))
            self.assertEqual(u"10:15:48", Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u"31/12/2009", Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(u"31/12/2009 20:50", Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))

            form4 = I18nForm(
                {
                    "decimal_field": u"66666,666",
                    "float_field": u"99999,999",
                    "date_field": u"31/12/2009",
                    "datetime_field": u"31/12/2009 20:50",
                    "time_field": u"20:50",
                    "integer_field": u"1234",
                }
            )
            self.assertEqual(True, form4.is_valid())
            self.assertEqual(decimal.Decimal("66666.666"), form4.cleaned_data["decimal_field"])
            self.assertEqual(99999.999, form4.cleaned_data["float_field"])
            self.assertEqual(datetime.date(2009, 12, 31), form4.cleaned_data["date_field"])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form4.cleaned_data["datetime_field"])
            self.assertEqual(datetime.time(20, 50), form4.cleaned_data["time_field"])
            self.assertEqual(1234, form4.cleaned_data["integer_field"])

            form5 = SelectDateForm({"date_field_month": u"12", "date_field_day": u"31", "date_field_year": u"2009"})
            self.assertEqual(True, form5.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data["date_field"])
            self.assertEqual(
                u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render("mydate", datetime.date(2009, 12, 31)),
            )
        finally:
            deactivate()

        # English locale

        settings.USE_L10N = True
        activate("en")
        try:
            self.assertEqual("N j, Y", get_format("DATE_FORMAT"))
            self.assertEqual(0, get_format("FIRST_DAY_OF_WEEK"))
            self.assertEqual(".", get_format("DECIMAL_SEPARATOR"))
            self.assertEqual(u"Dec. 31, 2009", date_format(self.d))
            self.assertEqual(u"December 2009", date_format(self.d, "YEAR_MONTH_FORMAT"))
            self.assertEqual(u"12/31/2009 8:50 p.m.", date_format(self.dt, "SHORT_DATETIME_FORMAT"))
            self.assertEqual("No localizable", localize("No localizable"))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u"66,666.666", localize(self.n))
            self.assertEqual(u"99,999.999", localize(self.f))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u"66666.666", localize(self.n))
            self.assertEqual(u"99999.999", localize(self.f))
            self.assertEqual(u"Dec. 31, 2009", localize(self.d))
            self.assertEqual(u"Dec. 31, 2009, 8:50 p.m.", localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u"66,666.666", Template("{{ n }}").render(self.ctxt))
            self.assertEqual(u"99,999.999", Template("{{ f }}").render(self.ctxt))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u"66666.666", Template("{{ n }}").render(self.ctxt))
            self.assertEqual(u"99999.999", Template("{{ f }}").render(self.ctxt))
            self.assertEqual(u"Dec. 31, 2009", Template("{{ d }}").render(self.ctxt))
            self.assertEqual(u"Dec. 31, 2009, 8:50 p.m.", Template("{{ dt }}").render(self.ctxt))
            self.assertEqual(u"66666.67", Template("{{ n|floatformat:2 }}").render(self.ctxt))
            self.assertEqual(u"100000.0", Template("{{ f|floatformat }}").render(self.ctxt))
            self.assertEqual(u"12/31/2009", Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u"12/31/2009 8:50 p.m.", Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt)
            )

            form5 = I18nForm(
                {
                    "decimal_field": u"66666.666",
                    "float_field": u"99999.999",
                    "date_field": u"12/31/2009",
                    "datetime_field": u"12/31/2009 20:50",
                    "time_field": u"20:50",
                    "integer_field": u"1234",
                }
            )
            self.assertEqual(True, form5.is_valid())
            self.assertEqual(decimal.Decimal("66666.666"), form5.cleaned_data["decimal_field"])
            self.assertEqual(99999.999, form5.cleaned_data["float_field"])
            self.assertEqual(datetime.date(2009, 12, 31), form5.cleaned_data["date_field"])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50), form5.cleaned_data["datetime_field"])
            self.assertEqual(datetime.time(20, 50), form5.cleaned_data["time_field"])
            self.assertEqual(1234, form5.cleaned_data["integer_field"])

            form6 = SelectDateForm({"date_field_month": u"12", "date_field_day": u"31", "date_field_year": u"2009"})
            self.assertEqual(True, form6.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31), form6.cleaned_data["date_field"])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render("mydate", datetime.date(2009, 12, 31)),
            )
        finally:
            deactivate()
예제 #56
0
파일: models.py 프로젝트: hnejadi/EShop-2
 def __unicode__(self):
     return _(u"%(start)s - %(end)s, %(day)s") % {
         'day': unicode(self.calendar_day),
         'start': time_format(self.starts),
         'end': time_format(self.ends)
     }
예제 #57
0
파일: tests.py 프로젝트: t0ster/django
    def test_l10n_enabled(self):
        settings.USE_L10N = True
        # Catalan locale
        activate('ca')
        try:
            self.assertEqual('j \de F \de Y', get_format('DATE_FORMAT'))
            self.assertEqual(1, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual(',', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'10:15:48', time_format(self.t))
            self.assertEqual(u'31 de desembre de 2009', date_format(self.d))
            self.assertEqual(u'desembre del 2009',
                             date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'31/12/2009 20:50',
                             date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual('No localizable', localize('No localizable'))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66.666,666', localize(self.n))
            self.assertEqual(u'99.999,999', localize(self.f))
            self.assertEqual(u'10.000', localize(self.l))
            self.assertEqual(u'True', localize(True))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666,666', localize(self.n))
            self.assertEqual(u'99999,999', localize(self.f))
            self.assertEqual(u'10000', localize(self.l))
            self.assertEqual(u'31 de desembre de 2009', localize(self.d))
            self.assertEqual(u'31 de desembre de 2009 a les 20:50',
                             localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66.666,666',
                             Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99.999,999',
                             Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'10.000', Template('{{ l }}').render(self.ctxt))

            form3 = I18nForm({
                'decimal_field': u'66.666,666',
                'float_field': u'99.999,999',
                'date_field': u'31/12/2009',
                'datetime_field': u'31/12/2009 20:50',
                'time_field': u'20:50',
                'integer_field': u'1.234',
            })
            self.assertEqual(True, form3.is_valid())
            self.assertEqual(decimal.Decimal('66666.666'),
                             form3.cleaned_data['decimal_field'])
            self.assertEqual(99999.999, form3.cleaned_data['float_field'])
            self.assertEqual(datetime.date(2009, 12, 31),
                             form3.cleaned_data['date_field'])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50),
                             form3.cleaned_data['datetime_field'])
            self.assertEqual(datetime.time(20, 50),
                             form3.cleaned_data['time_field'])
            self.assertEqual(1234, form3.cleaned_data['integer_field'])

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666,666',
                             Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999,999',
                             Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'31 de desembre de 2009',
                             Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'31 de desembre de 2009 a les 20:50',
                             Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(
                u'66666,67',
                Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000,0',
                             Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(
                u'10:15:48',
                Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u'31/12/2009',
                Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u'31/12/2009 20:50',
                Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(
                    self.ctxt))

            form4 = I18nForm({
                'decimal_field': u'66666,666',
                'float_field': u'99999,999',
                'date_field': u'31/12/2009',
                'datetime_field': u'31/12/2009 20:50',
                'time_field': u'20:50',
                'integer_field': u'1234',
            })
            self.assertEqual(True, form4.is_valid())
            self.assertEqual(decimal.Decimal('66666.666'),
                             form4.cleaned_data['decimal_field'])
            self.assertEqual(99999.999, form4.cleaned_data['float_field'])
            self.assertEqual(datetime.date(2009, 12, 31),
                             form4.cleaned_data['date_field'])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50),
                             form4.cleaned_data['datetime_field'])
            self.assertEqual(datetime.time(20, 50),
                             form4.cleaned_data['time_field'])
            self.assertEqual(1234, form4.cleaned_data['integer_field'])

            form5 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form5.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31),
                             form5.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render(
                    'mydate', datetime.date(2009, 12, 31)))
        finally:
            deactivate()

        # Russian locale (with E as month)
        activate('ru')
        try:
            self.assertEqual(
                u'<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_month" id="id_mydate_month">\n<option value="1">\u042f\u043d\u0432\u0430\u0440\u044c</option>\n<option value="2">\u0424\u0435\u0432\u0440\u0430\u043b\u044c</option>\n<option value="3">\u041c\u0430\u0440\u0442</option>\n<option value="4">\u0410\u043f\u0440\u0435\u043b\u044c</option>\n<option value="5">\u041c\u0430\u0439</option>\n<option value="6">\u0418\u044e\u043d\u044c</option>\n<option value="7">\u0418\u044e\u043b\u044c</option>\n<option value="8">\u0410\u0432\u0433\u0443\u0441\u0442</option>\n<option value="9">\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c</option>\n<option value="10">\u041e\u043a\u0442\u044f\u0431\u0440\u044c</option>\n<option value="11">\u041d\u043e\u044f\u0431\u0440\u044c</option>\n<option value="12" selected="selected">\u0414\u0435\u043a\u0430\u0431\u0440\u044c</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render(
                    'mydate', datetime.date(2009, 12, 31)))
        finally:
            deactivate()

        # English locale
        activate('en')
        try:
            self.assertEqual('N j, Y', get_format('DATE_FORMAT'))
            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual('.', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'Dec. 31, 2009', date_format(self.d))
            self.assertEqual(u'December 2009',
                             date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'12/31/2009 8:50 p.m.',
                             date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual(u'No localizable', localize('No localizable'))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66,666.666', localize(self.n))
            self.assertEqual(u'99,999.999', localize(self.f))
            self.assertEqual(u'10,000', localize(self.l))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666.666', localize(self.n))
            self.assertEqual(u'99999.999', localize(self.f))
            self.assertEqual(u'10000', localize(self.l))
            self.assertEqual(u'Dec. 31, 2009', localize(self.d))
            self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.', localize(self.dt))

            settings.USE_THOUSAND_SEPARATOR = True
            self.assertEqual(u'66,666.666',
                             Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99,999.999',
                             Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'10,000', Template('{{ l }}').render(self.ctxt))

            settings.USE_THOUSAND_SEPARATOR = False
            self.assertEqual(u'66666.666',
                             Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999.999',
                             Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'Dec. 31, 2009',
                             Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'Dec. 31, 2009, 8:50 p.m.',
                             Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(
                u'66666.67',
                Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000.0',
                             Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(
                u'12/31/2009',
                Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u'12/31/2009 8:50 p.m.',
                Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(
                    self.ctxt))

            form5 = I18nForm({
                'decimal_field': u'66666.666',
                'float_field': u'99999.999',
                'date_field': u'12/31/2009',
                'datetime_field': u'12/31/2009 20:50',
                'time_field': u'20:50',
                'integer_field': u'1234',
            })
            self.assertEqual(True, form5.is_valid())
            self.assertEqual(decimal.Decimal('66666.666'),
                             form5.cleaned_data['decimal_field'])
            self.assertEqual(99999.999, form5.cleaned_data['float_field'])
            self.assertEqual(datetime.date(2009, 12, 31),
                             form5.cleaned_data['date_field'])
            self.assertEqual(datetime.datetime(2009, 12, 31, 20, 50),
                             form5.cleaned_data['datetime_field'])
            self.assertEqual(datetime.time(20, 50),
                             form5.cleaned_data['time_field'])
            self.assertEqual(1234, form5.cleaned_data['integer_field'])

            form6 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form6.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31),
                             form6.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12" selected="selected">December</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render(
                    'mydate', datetime.date(2009, 12, 31)))
        finally:
            deactivate()
예제 #58
0
파일: tests.py 프로젝트: t0ster/django
    def test_l10n_disabled(self):
        """
        Catalan locale with format i18n disabled translations will be used,
        but not formats
        """
        settings.USE_L10N = False
        activate('ca')
        try:
            self.assertEqual(u'N j, Y', get_format('DATE_FORMAT'))
            self.assertEqual(0, get_format('FIRST_DAY_OF_WEEK'))
            self.assertEqual(u'.', get_format('DECIMAL_SEPARATOR'))
            self.assertEqual(u'10:15 a.m.', time_format(self.t))
            self.assertEqual(u'des. 31, 2009', date_format(self.d))
            self.assertEqual(u'desembre 2009',
                             date_format(self.d, 'YEAR_MONTH_FORMAT'))
            self.assertEqual(u'12/31/2009 8:50 p.m.',
                             date_format(self.dt, 'SHORT_DATETIME_FORMAT'))
            self.assertEqual(u'No localizable', localize('No localizable'))
            self.assertEqual(u'66666.666', localize(self.n))
            self.assertEqual(u'99999.999', localize(self.f))
            self.assertEqual(u'10000', localize(self.l))
            self.assertEqual(u'des. 31, 2009', localize(self.d))
            self.assertEqual(u'des. 31, 2009, 8:50 p.m.', localize(self.dt))
            self.assertEqual(u'66666.666',
                             Template('{{ n }}').render(self.ctxt))
            self.assertEqual(u'99999.999',
                             Template('{{ f }}').render(self.ctxt))
            self.assertEqual(u'des. 31, 2009',
                             Template('{{ d }}').render(self.ctxt))
            self.assertEqual(u'des. 31, 2009, 8:50 p.m.',
                             Template('{{ dt }}').render(self.ctxt))
            self.assertEqual(
                u'66666.67',
                Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000.0',
                             Template('{{ f|floatformat }}').render(self.ctxt))
            self.assertEqual(
                u'10:15 a.m.',
                Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u'12/31/2009',
                Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
            self.assertEqual(
                u'12/31/2009 8:50 p.m.',
                Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(
                    self.ctxt))

            form = I18nForm({
                'decimal_field': u'66666,666',
                'float_field': u'99999,999',
                'date_field': u'31/12/2009',
                'datetime_field': u'31/12/2009 20:50',
                'time_field': u'20:50',
                'integer_field': u'1.234',
            })
            self.assertEqual(False, form.is_valid())
            self.assertEqual([u'Introdu\xefu un n\xfamero.'],
                             form.errors['float_field'])
            self.assertEqual([u'Introdu\xefu un n\xfamero.'],
                             form.errors['decimal_field'])
            self.assertEqual([u'Introdu\xefu una data v\xe0lida.'],
                             form.errors['date_field'])
            self.assertEqual([u'Introdu\xefu una data/hora v\xe0lides.'],
                             form.errors['datetime_field'])
            self.assertEqual([u'Introdu\xefu un n\xfamero sencer.'],
                             form.errors['integer_field'])

            form2 = SelectDateForm({
                'date_field_month': u'12',
                'date_field_day': u'31',
                'date_field_year': u'2009'
            })
            self.assertEqual(True, form2.is_valid())
            self.assertEqual(datetime.date(2009, 12, 31),
                             form2.cleaned_data['date_field'])
            self.assertEqual(
                u'<select name="mydate_month" id="id_mydate_month">\n<option value="1">gener</option>\n<option value="2">febrer</option>\n<option value="3">mar\xe7</option>\n<option value="4">abril</option>\n<option value="5">maig</option>\n<option value="6">juny</option>\n<option value="7">juliol</option>\n<option value="8">agost</option>\n<option value="9">setembre</option>\n<option value="10">octubre</option>\n<option value="11">novembre</option>\n<option value="12" selected="selected">desembre</option>\n</select>\n<select name="mydate_day" id="id_mydate_day">\n<option value="1">1</option>\n<option value="2">2</option>\n<option value="3">3</option>\n<option value="4">4</option>\n<option value="5">5</option>\n<option value="6">6</option>\n<option value="7">7</option>\n<option value="8">8</option>\n<option value="9">9</option>\n<option value="10">10</option>\n<option value="11">11</option>\n<option value="12">12</option>\n<option value="13">13</option>\n<option value="14">14</option>\n<option value="15">15</option>\n<option value="16">16</option>\n<option value="17">17</option>\n<option value="18">18</option>\n<option value="19">19</option>\n<option value="20">20</option>\n<option value="21">21</option>\n<option value="22">22</option>\n<option value="23">23</option>\n<option value="24">24</option>\n<option value="25">25</option>\n<option value="26">26</option>\n<option value="27">27</option>\n<option value="28">28</option>\n<option value="29">29</option>\n<option value="30">30</option>\n<option value="31" selected="selected">31</option>\n</select>\n<select name="mydate_year" id="id_mydate_year">\n<option value="2009" selected="selected">2009</option>\n<option value="2010">2010</option>\n<option value="2011">2011</option>\n<option value="2012">2012</option>\n<option value="2013">2013</option>\n<option value="2014">2014</option>\n<option value="2015">2015</option>\n<option value="2016">2016</option>\n<option value="2017">2017</option>\n<option value="2018">2018</option>\n</select>',
                SelectDateWidget(years=range(2009, 2019)).render(
                    'mydate', datetime.date(2009, 12, 31)))

            # We shouldn't change the behavior of the floatformat filter re:
            # thousand separator and grouping when USE_L10N is False even
            # if the USE_THOUSAND_SEPARATOR, NUMBER_GROUPING and
            # THOUSAND_SEPARATOR settings are specified
            settings.USE_THOUSAND_SEPARATOR = True
            settings.NUMBER_GROUPING = 1
            settings.THOUSAND_SEPARATOR = '!'
            self.assertEqual(
                u'66666.67',
                Template('{{ n|floatformat:2 }}').render(self.ctxt))
            self.assertEqual(u'100000.0',
                             Template('{{ f|floatformat }}').render(self.ctxt))
        finally:
            deactivate()
예제 #59
0
 def __unicode__(self):
     return date_format(self.scheduled_at) + ", " + time_format(self.scheduled_at)
예제 #60
0
 def get_cell_value(self, rec):
     value = super().get_cell_value(rec)
     if isinstance(value, datetime.date):  # date also match datetime
         return formats.time_format(value, self.time_format)
     return value