Skip to content
Snippets Groups Projects
utils.py 1.45 KiB
Newer Older
# coding=utf-8
from django.utils import timezone
import datetime, time
from datetime import timedelta

def timeit(method):
    def timed(*args, **kw):
        ts = time.time()
        result = method(*args, **kw)
        te = time.time()
        if 'log_time' in kw:
            name = kw.get('log_name', method.__name__.upper())
            kw['log_time'][name] = int((te - ts) * 1000)
        else:
            print '%r  %2.2f ms' % \
                  (method.__name__, (te - ts) * 1000)
        return result
    return timed

def get_today_midnight_date():
	today = timezone.now()
	today_midnight = datetime.datetime(today.year, today.month, today.day, tzinfo=today.tzinfo)
	return today_midnight

def get_weekdays_in_period(fromdate, todate):
    '''
    fromdate and todate must be generated using datetime.date or datetime.datetime like:
    
    from datetime import date
    fromdate = date(2010,1,1)
    todate = date(2010,3,31)

    fromdate = datetime.datetime(2018, 10, 3, 15, 00, 00)
    todate = datetime.datetime.today()

Carlos Vega's avatar
Carlos Vega committed
    but both dates must have the same format ! 
    todate is not included in the range
    
    Weekdays are returned as isoweekdays like the form described in week_choices from constants.py (starting at 1)
    '''
    if todate < fromdate:
        return set([])
    day_generator = (fromdate + timedelta(day) for day in xrange((todate - fromdate).days))
    weekdays = set([date.isoweekday() for date in day_generator])
    return weekdays