# coding=utf-8 from django.utils import timezone import datetime from datetime import timedelta from web.algorithm import VerhoeffAlgorithm, LuhnAlgorithm def is_valid_social_security_number(number): if number is not None and number != '': if len(number) != 13: return False if not number.isdigit(): return False if not LuhnAlgorithm.is_luhn_valid(number[:12]): return False if not VerhoeffAlgorithm.is_valid_verhoeff(number[:11] + number[12]): return False return True 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() 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