helpers.py
changeset 140 6db2527b67cf
parent 139 9c7769850195
child 141 65c98c9e1716
--- a/helpers.py	Sun Sep 13 00:49:55 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-"""
-    Some additional helpers
-"""
-
-import datetime
-import calendar as _calendar
-
-import qmsk.web.helpers
-
-import preferences, urls, config, version
-
-class Helpers (qmsk.web.helpers.Helpers) :
-    """
-        Our set of helpers, inheriting from base helpers
-    """
-
-    # set contructor...
-    set = set
-
-    # reference to calendar instance
-    calendar = _calendar.Calendar()
-
-    # list of (month_num, month_name) for the months in the year
-    months = list(enumerate(_calendar.month_name))[1:]
-    
-    def version_link (self) :
-        """
-            Returns a <a href> representing this version of the software
-        """
-
-        return version.version_link_hg(config.HGWEB_URL, config.HG_WC_PATH)
-
-    def tz_name (self, tz) :
-        """
-            Returns a string describing the given timezone
-        """
-
-        return self.now().strftime(config.TIMEZONE_FMT)
-
-    def fmt_month (self, date) :
-        """
-            Formats a month
-        """
-
-        return date.strftime(config.MONTH_FMT)
-        
-    def fmt_weekday (self, wday) :
-        """
-            Formats an abbreviated weekday name
-        """
-
-        return _calendar.day_abbr[wday]
-
-    def build_date (self, month, mday) :
-        """
-            Returns a datetime.datetime for the given (month.year, month.month, mday)
-        """
-
-        return self.ctx['prefs'][preferences.timezone].localize(datetime.datetime(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, dt) :
-        """
-            Checks if the given datetime.datetime is today
-        """
-
-        # compare with current date
-        return dt.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)
-
-    @staticmethod
-    def _wrap_year (year, month) :
-        """
-            Wraps month to between [1, 12], spilling overflow/underflow by to year.
-
-            Returns (year, month)
-        """
-        
-        # underflow?
-        if month == 0 :
-            # wrap to previous year
-            return (year - 1, 12)
-        
-        # overflow?
-        elif month == 13 :
-            # wrap to next year
-            return (year + 1, 1)
-        
-        # sane value
-        elif 1 <= month <= 12 :
-            return (year, month)
-        
-        # insane value
-        else :
-            assert False, "invalid year/month: %d/%d" % (year, month)
-
-    def prev_month (self, month) :
-        """
-            Returns the month preceding the given one (as a datetime.datetime)
-        """
-        
-        # previous month
-        y, m = self._wrap_year(month.year, month.month - 1)
-        
-        # build datetime
-        return datetime.datetime(year=y, month=m, day=1, tzinfo=month.tzinfo)
-
-    def next_month (self, month) :
-        """
-            Returns the month following the given one (as a datetime.datetime)
-        """
-        
-        # previous month
-        y, m = self._wrap_year(month.year, month.month + 1)
-        
-        # build datetime
-        return datetime.datetime(year=y, month=m, day=1, tzinfo=month.tzinfo)
-    
-    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 url (self, url, **params) :
-        """
-            Build URL with our request object
-        """
-
-        return url.build(self.ctx['req'], **params)
-
-    # old name
-    build_url = url
-
-    def utc_timestamp (self, dtz) :
-        """
-            Build an UTC timestamp from the given datetime
-        """
-
-        return urls.types['ts'].build(dtz)
-    
-    def skip_next (self, count, skip) :
-        """
-            Return skip offset for next page
-        """
-
-        return count + skip
-    
-    def skip_page (self, count, page) :
-        """
-            Skip to page
-        """
-
-        if page :
-            return count * page
-
-        else :
-            return None
-
-    def skip_prev (self, count, skip) :
-        """
-            Return skip offset for previous page, None for first page
-        """
-
-        if skip > count :
-            return skip - count
-
-        else :
-            return None
-
-    def max (self, *values) :
-        """
-            Returns the largest of the given values
-        """
-
-        return max(values)
-    
-    def select_options (self, key_values, selected_key=None) :
-        """
-            Render a series of <option> tags for <select>.
-
-            The given key_values is an iterable of (key, value) pairs, key may be None if it's the same as value.
-        """
-
-        return '\n'.join(
-            '\t<option%s%s>%s</option>' % (
-                ' value="%s"' % key if key is not None else '',
-                ' selected="selected"' if (key if key is not None else value) == selected_key else '',
-                value
-            ) for key, value in key_values
-        )
-    
-    def prev_date (self, date) :
-        """
-            Returns the previous date for the given datetime-date
-        """
-
-        return datetime.datetime(date.year, date.month, date.day, tzinfo=date.tzinfo) - datetime.timedelta(days=1)
-
-    def next_date (self, date) :
-        """
-            Returns the previous date for the given datetime-date
-        """
-
-        return datetime.datetime(date.year, date.month, date.day, tzinfo=date.tzinfo) + datetime.timedelta(days=1)
-