Camp redirect has to account for an ongoing camp.
This commit is contained in:
parent
385e98d84f
commit
dd9ef2380a
|
@ -12,32 +12,42 @@ logger = logging.getLogger("bornhack.%s" % __name__)
|
|||
class CampRedirectView(CampViewMixin, View):
|
||||
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
# find the closest camp in the past
|
||||
prevcamp = Camp.objects.filter(
|
||||
camp__endswith__lt=timezone.now()
|
||||
).order_by('-camp')[0]
|
||||
now = timezone.now()
|
||||
|
||||
# find the closest upcoming camp
|
||||
nextcamp = Camp.objects.filter(
|
||||
camp__startswith__gt=timezone.now()
|
||||
try:
|
||||
camp = Camp.objects.get(
|
||||
camp__contains=now
|
||||
)
|
||||
|
||||
logger.debug("Redirecting to camp '%s' for page '%s' because it is now!" % (camp.slug, kwargs['page']))
|
||||
except Camp.DoesNotExist:
|
||||
# find the closest camp in the past
|
||||
prevcamp = Camp.objects.filter(
|
||||
camp__endswith__lt=now
|
||||
).order_by('-camp')[0]
|
||||
|
||||
# find the closest upcoming camp
|
||||
nextcamp = Camp.objects.filter(
|
||||
camp__startswith__gt=now
|
||||
).order_by('camp')[0]
|
||||
|
||||
# find the number of days between the two camps
|
||||
daysbetween = (nextcamp.camp.lower - prevcamp.camp.upper).days
|
||||
# find the number of days between the two camps
|
||||
daysbetween = (nextcamp.camp.lower - prevcamp.camp.upper).days
|
||||
|
||||
# find the number of days since the last camp ended
|
||||
dayssinceprevcamp = (timezone.now() - prevcamp.camp.lower).days
|
||||
# find the number of days since the last camp ended
|
||||
dayssinceprevcamp = (timezone.now() - prevcamp.camp.lower).days
|
||||
|
||||
# find the percentage of time passed
|
||||
percentpassed = (dayssinceprevcamp / daysbetween) * 100
|
||||
# find the percentage of time passed
|
||||
percentpassed = (dayssinceprevcamp / daysbetween) * 100
|
||||
|
||||
# do the redirect
|
||||
if percentpassed > settings.CAMP_REDIRECT_PERCENT:
|
||||
camp = nextcamp
|
||||
else:
|
||||
camp = prevcamp
|
||||
# do the redirect
|
||||
if percentpassed > settings.CAMP_REDIRECT_PERCENT:
|
||||
camp = nextcamp
|
||||
else:
|
||||
camp = prevcamp
|
||||
|
||||
logger.debug("Redirecting to camp '%s' for page '%s' because %s%% of the time between the camps passed" % (camp.slug, kwargs['page'], int(percentpassed)))
|
||||
|
||||
logger.debug("Redirecting to camp '%s' for page '%s' because %s%% of the time between the camps passed" % (camp.slug, kwargs['page'], int(percentpassed)))
|
||||
return redirect(kwargs['page'], camp_slug=camp.slug)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue