даты уроков лагеря сместились

remotes/origin/hotfix/camp-lessons-fix-24-06-19
gzbender 7 years ago
parent d4529714fe
commit b130591421
  1. 40
      apps/payment/models.py
  2. 2
      apps/school/views.py

@ -125,31 +125,45 @@ class Payment(PolymorphicModel):
ordering = ('created_at',)
@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_end = date(now().year, 5, 31)
camp_start = date(now().year, 6, 1)
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()
if isinstance(date_start, datetime):
date_start = date_start.date()
if is_camp:
if date_start < camp_start:
date_start = camp_start
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_start = cls.ajust_date_bounds(date_start=date_start, is_camp=is_camp)
if is_camp and date_start.month == 6 and date_start.day > 16:
date_start = date_start.replace(month=7, day=1)
date_end = arrow.get(date_start + timedelta(days=days), settings.TIME_ZONE).shift(months=months).date() - timedelta(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) \
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)
if is_camp:
if date_end > camp_end:
date_end = camp_end
elif school_end < date_end < school_start:
date_end = school_end
date_end = cls.ajust_date_bounds(date_end=date_end, is_camp=is_camp)
return [date_start, date_end]
@classmethod

@ -69,7 +69,7 @@ class DrawingCampLessonsView(ListView):
def get_queryset(self):
date_start = (now() - timedelta(days=7)).date()
date_start, date_end = DrawingCampPayment.get_date_range(date_start, days=23, is_camp=True)
date_start, date_end = DrawingCampPayment.ajust_date_bounds(date_start, date_start + timedelta(days=23), is_camp=True)
date_range = Q(
date__range=[date_start, date_end]
)

Loading…
Cancel
Save