def test_get_formatted_date_datetime(self): # Test some dates from different locales dt = datetime(2005, 02, 01, 19, 13) fd = localdatetime.get_formatted_date( dt, size="short", locale="nl") self.assertEquals(u'1-2-05 19:13', fd) fd = localdatetime.get_formatted_date( dt, size="medium", locale="nl") self.assertEquals(u'1-feb-2005 19:13:00', fd) fd = localdatetime.get_formatted_date( dt, size="long", locale="nl") self.assertEquals(u'1 februari 2005 19:13:00 +000', fd)
def test_get_formatted_date_invalid_locale(self): """If the local is invalid, it should fallback to english. """ dt = datetime(2005, 02, 01, 19, 13) # Test invalid local fd = localdatetime.get_formatted_date( dt, size="long", locale="u1") self.assertEquals(u'February 1, 2005 7:13:00 PM +000', fd)
def introduction(self): # XXX Should not be done with the method of the Service (who # manages settings on how to display the date ?) date = localdatetime.get_formatted_date( self.selected_day, size="full", request=self.request, display_time=False) if self._day_events: return _(u"Events for ${date}", mapping=dict(date=date)) return _(u"No events for ${date}", mapping=dict(date=date))
def test_get_formatted_date_tuple(self): # test some dates from different locales dt = [int(p) for p in DateTime('2005-02-01 19:13').parts()[:6]] fd = localdatetime.get_formatted_date( dt, size="short", locale="nl") self.assertEquals(u'1-2-05 19:13', fd) fd = localdatetime.get_formatted_date( dt, size="medium", locale="nl") self.assertEquals(u'1-feb-2005 19:13:00', fd) fd = localdatetime.get_formatted_date( dt, size="long", locale="nl") self.assertEquals(u'1 februari 2005 19:13:00 +000', fd) fd = localdatetime.get_formatted_date( dt, size="full", locale="nl") self.assertEquals(u'dinsdag 1 februari 2005 19:13:00 uur +000', fd) fd = localdatetime.get_formatted_date( dt, size="short", locale="en") self.assertEquals(u'2/1/05 7:13 PM', fd) fd = localdatetime.get_formatted_date( dt, size="short", locale="en-za") self.assertEquals(u'2005/02/01 7:13 PM', fd)
def format_date(self, dt, display_time=True): """returns a formatted datetime string takes the service's locale setting into account """ if not dt: return '' if not isinstance(dt, datetime): dt = dt.asdatetime() return localdatetime.get_formatted_date( dt, size=self._date_format, locale=self._locale, display_time=display_time)
def render(self, item): content = item.getObject() # XXX we should use publication_datetime on publishable, but # it is currently broken date = content.get_modification_datetime() datestr = '' if date: if hasattr(date, 'asdatetime'): date = date.asdatetime() datestr = localdatetime.get_formatted_date( date, size="medium", locale=self.locale) return '<span class="searchresult-date">%s</span>' % datestr return None
def render(self, item): content = item.getObject() # XXX we should use publication_datetime on publishable, but # it is currently broken date = content.get_modification_datetime() datestr = '' if date: if hasattr(date, 'asdatetime'): date = date.asdatetime() datestr = localdatetime.get_formatted_date(date, size="medium", locale=self.locale) return '<span class="searchresult-date">%s</span>' % datestr return None
def update(self, answer=None): need(IPollQuestionResources) # This code is too complicated and would need # simplification. This is all the logic that was in the # template before. now = datetime.now() locale_opts = { 'size': 'full', 'locale': get_locale_info(self.request), 'display_time': False } self.question = self.content.get_question() self.has_voted = self.content.has_voted(self.request) self.show_results_not_ready = False if self.is_preview: # Preview: show poll and results self.show_poll_not_ready = False self.show_poll = True self.show_results = True self.show_outdated = False else: # Public view: show corresponding section depending of the # current time start_date = self.content.question_start_datetime() end_date = self.content.question_end_datetime() self.show_poll_not_ready = start_date is not None and start_date > now if self.show_poll_not_ready: self.poll_start_date = get_formatted_date( start_date, **locale_opts) self.show_poll = ((start_date is not None and start_date < now) and (end_date is None or end_date > now)) start_date = self.content.result_start_datetime() end_date = self.content.result_end_datetime() self.show_outdated = end_date is not None and end_date < now self.show_results = ((start_date is not None and start_date < now) and (end_date is None or end_date > now)) if self.show_poll: # We want to show the poll. if self.has_voted: # The user already voted, don't show the poll, even if # the dates are ok. self.show_poll = False else: if answer is not None: # User just voted, register the code, and don't # show the poll. answer = str(answer, 'utf-8') self.content.vote(self.request, answer) self.has_voted = True self.show_poll = False else: # The user didn't vote yet. Really show poll. self.answers = [] for index, answer in enumerate(self.content.get_answers()): self.answers.append({ 'title': answer, 'id': 'answer-%02d' % index }) if self.show_results: all_votes = self.content.get_votes() self.total_votes = sum(all_votes) self.results = [] for answer, votes in zip(self.content.get_answers(), all_votes): percentage = 0 if self.total_votes: percentage = round((votes * 100.0) / self.total_votes) self.results.append({ 'answer': answer, 'votes': votes, 'percentage': percentage }) elif self.has_voted: # The user voted, but cannot see the results yet. Tell him # when he will be able to see them. # The result start and end date and the last fetch into # start_date, and end_date. Preview code doesn't fetch # them, but in preview the results are always shown. self.show_results_not_ready = True self.show_results_start_date = get_formatted_date( start_date, **locale_opts) self.show_results_end_date = None if end_date is not None: self.show_results_end_date = get_formatted_date( end_date, **locale_opts)
def update(self, answer=None): need(IPollQuestionResources) # This code is too complicated and would need # simplification. This is all the logic that was in the # template before. now = datetime.now() locale_opts = {'size': 'full', 'locale': get_locale_info(self.request), 'display_time': False} self.question = self.content.get_question() self.has_voted = self.content.has_voted(self.request) self.show_results_not_ready = False if self.is_preview: # Preview: show poll and results self.show_poll_not_ready = False self.show_poll = True self.show_results = True self.show_outdated = False else: # Public view: show corresponding section depending of the # current time start_date = self.content.question_start_datetime() end_date = self.content.question_end_datetime() self.show_poll_not_ready = start_date is not None and start_date > now if self.show_poll_not_ready: self.poll_start_date = get_formatted_date( start_date, **locale_opts) self.show_poll = ( (start_date is not None and start_date < now) and (end_date is None or end_date > now)) start_date = self.content.result_start_datetime() end_date = self.content.result_end_datetime() self.show_outdated = end_date is not None and end_date < now self.show_results = ( (start_date is not None and start_date < now) and (end_date is None or end_date > now)) if self.show_poll: # We want to show the poll. if self.has_voted: # The user already voted, don't show the poll, even if # the dates are ok. self.show_poll = False else: if answer is not None: # User just voted, register the code, and don't # show the poll. answer = unicode(answer, 'utf-8') self.content.vote(self.request, answer) self.has_voted = True self.show_poll = False else: # The user didn't vote yet. Really show poll. self.answers = [] for index, answer in enumerate(self.content.get_answers()): self.answers.append({'title': answer, 'id': 'answer-%02d' % index}) if self.show_results: all_votes = self.content.get_votes() self.total_votes = sum(all_votes) self.results = [] for answer, votes in zip(self.content.get_answers(), all_votes): percentage = 0 if self.total_votes: percentage = round((votes * 100.0)/ self.total_votes) self.results.append({'answer': answer, 'votes': votes, 'percentage': percentage}) elif self.has_voted: # The user voted, but cannot see the results yet. Tell him # when he will be able to see them. # The result start and end date and the last fetch into # start_date, and end_date. Preview code doesn't fetch # them, but in preview the results are always shown. self.show_results_not_ready = True self.show_results_start_date = get_formatted_date( start_date, **locale_opts) self.show_results_end_date = None if end_date is not None: self.show_results_end_date = get_formatted_date( end_date, **locale_opts)