helpers.py
author Tero Marttila <terom@fixme.fi>
Mon, 09 Feb 2009 22:17:10 +0200
changeset 72 5ade0288f2ec
parent 71 e909bde831e7
child 73 5a7188bf2894
permissions -rw-r--r--
implement line-links as UTC timestamps
"""
    Some additional helpers
"""

import datetime, calendar

import qmsk.web.helpers

import preferences, urls

class Helpers (qmsk.web.helpers.Helpers) :
    """
        Our set of helpers, inheriting from base helpers
    """

    def tz_name (self, tz) :
        """
            Returns a string describing the given timezone
        """

        return self.now().strftime("%Z%z")

    def fmt_month (self, date) :
        """
            Formats a month
        """

        return date.strftime('%B %Y')
        
    def fmt_weekday (self, wday) :
        """
            Formats an abbreviated weekday name
        """

        return calendar.day_abbr[wday]

    def build_date (self, month, mday) :
        """
            Returns a datetime.date for the given (month.year, month.month, mday)
        """

        return datetime.date(month.year, month.month, mday)
    
    def now (self) :
        """
            Build current time
        """

        return self.ctx['prefs'][preferences.timezone].localize(datetime.datetime.now())

    def today (self) :
        """
            Build today's date
        """
        
        return self.now().date()

    def is_today (self, date) :
        """
            Checks if the given date is today
        """

        # construct current date
        return date == self.today()
    
    def is_this_month (self, month) :
        """
            Checks the given month is the current month
        """

        today = self.today()

        return (month.year == today.year and month.month == today.month)

    def prev_month_year (self, month) :
        """
            Returns the year of the month before the given one
        """

        if month.month == 1 :
            return month.year - 1

        else :
            return month.year
            
    def next_month_year (self, month) :
        """
            Returns the year of the month after the given one
        """

        if month.month == 12 :
            return month.year + 1

        else :
            return month.year

    def prev_month (self, month) :
        """
            Returns the month before the given one
        """

        if month.month == 1 :
            return 12

        else :
            return month.month - 1

    def next_month (self, month) :
        """
            Returns the month after the given one
        """

        if month.month == 12 :
            return 1

        else :
            return month.month + 1
    
    def fmt_time (self, time=None) :
        """
            Format given time, or current time
        """
        
        # defaults
        if not time :
            time = self.now()

        return time.strftime(self.ctx['prefs'][preferences.time_format])

    def fmt_date (self, date=None) :
        """
            Format given date, or current date
        """
        
        # defaults
        if not date :
            date = self.now()

        return date.strftime(self.ctx['prefs'][preferences.date_format])

    def build_url (self, url, **params) :
        """
            Build URL with our request object
        """

        return url.build(self.ctx['req'], **params)
    
    def utc_timestamp (self, dtz) :
        """
            Build an UTC timestamp from the given datetime
        """

        return urls.types['ts'].build(dtz)