|
|
|
@ -125,31 +125,45 @@ class Payment(PolymorphicModel): |
|
|
|
ordering = ('created_at',) |
|
|
|
ordering = ('created_at',) |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
@classmethod |
|
|
|
def get_date_range(cls, date_start=None, days=0, months=0, is_camp=False): |
|
|
|
def ajust_date_bounds(cls, date_start=None, date_end=None, is_camp=False): |
|
|
|
school_start = date(now().year, 9, 1) |
|
|
|
school_start = date(now().year, 9, 1) |
|
|
|
school_end = date(now().year, 5, 31) |
|
|
|
school_end = date(now().year, 5, 31) |
|
|
|
camp_start = date(now().year, 6, 1) |
|
|
|
camp_start = date(now().year, 6, 1) |
|
|
|
camp_end = date(now().year, 8, 31) |
|
|
|
camp_end = date(now().year, 8, 31) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if date_start: |
|
|
|
|
|
|
|
if is_camp: |
|
|
|
|
|
|
|
if date_start < camp_start: |
|
|
|
|
|
|
|
date_start = camp_start |
|
|
|
|
|
|
|
elif school_end < date_start < school_start: |
|
|
|
|
|
|
|
date_start = school_start |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if date_end: |
|
|
|
|
|
|
|
if is_camp: |
|
|
|
|
|
|
|
if date_end > camp_end: |
|
|
|
|
|
|
|
date_end = camp_end |
|
|
|
|
|
|
|
elif school_end < date_end < school_start: |
|
|
|
|
|
|
|
date_end = school_end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if date_start and date_end: |
|
|
|
|
|
|
|
return [date_start, date_end] |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
return date_start or date_end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
|
|
|
def get_date_range(cls, date_start=None, days=0, months=0, is_camp=False): |
|
|
|
date_start = date_start or now().date() |
|
|
|
date_start = date_start or now().date() |
|
|
|
if isinstance(date_start, datetime): |
|
|
|
if isinstance(date_start, datetime): |
|
|
|
date_start = date_start.date() |
|
|
|
date_start = date_start.date() |
|
|
|
if is_camp: |
|
|
|
date_start = cls.ajust_date_bounds(date_start=date_start, is_camp=is_camp) |
|
|
|
if date_start < camp_start: |
|
|
|
if is_camp and date_start.month == 6 and date_start.day > 16: |
|
|
|
date_start = camp_start |
|
|
|
date_start = date_start.replace(month=7, day=1) |
|
|
|
if date_start.month == 6 and date_start.day > 16: |
|
|
|
|
|
|
|
date_start = date_start.replace(month=7, day=1) |
|
|
|
|
|
|
|
elif school_end < date_start < school_start: |
|
|
|
|
|
|
|
date_start = school_start |
|
|
|
|
|
|
|
date_end = arrow.get(date_start + timedelta(days=days), settings.TIME_ZONE).shift(months=months).date() - timedelta(1) |
|
|
|
date_end = arrow.get(date_start + timedelta(days=days), settings.TIME_ZONE).shift(months=months).date() - timedelta(1) |
|
|
|
if months == 1: |
|
|
|
if months == 1: |
|
|
|
if is_camp or (date_start.month == 2 and date_start.day >= 28) or (date_start.day == 31 and date_end.day <= 30) \ |
|
|
|
if is_camp or (date_start.month == 2 and date_start.day >= 28) or (date_start.day == 31 and date_end.day <= 30) \ |
|
|
|
or (date_start.month == 1 and date_start.day >= 29 and date_end.day == 28): |
|
|
|
or (date_start.month == 1 and date_start.day >= 29 and date_end.day == 28): |
|
|
|
date_end = date_start.replace(day=1, month=date_start.month + 1) - timedelta(1) |
|
|
|
date_end = date_start.replace(day=1, month=date_start.month + 1) - timedelta(1) |
|
|
|
if is_camp: |
|
|
|
date_end = cls.ajust_date_bounds(date_end=date_end, is_camp=is_camp) |
|
|
|
if date_end > camp_end: |
|
|
|
|
|
|
|
date_end = camp_end |
|
|
|
|
|
|
|
elif school_end < date_end < school_start: |
|
|
|
|
|
|
|
date_end = school_end |
|
|
|
|
|
|
|
return [date_start, date_end] |
|
|
|
return [date_start, date_end] |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
@classmethod |
|
|
|
|