def get_time_left_string(self): delta = self.end_date - now() #Если аукцион закончился, возвращаем нули if total_seconds(delta) < 0: days = 0 hours = 0 minutes = 0 seconds = 0 else: delta_no_days = total_seconds(delta) - delta.days * 3600 * 24 hours, remainder = divmod(delta_no_days, 3600) minutes, seconds = divmod(remainder, 60) days = delta.days return mark_safe( '<div class="countdown"><span class="days">%d</span> дней и <strong><span class="hours">%02d</span>:<span class="minutes">%02d</span>:<span class="seconds">%02d</span> час.</strong></div>' % ( days, hours, minutes, seconds))
def clean_birth_date(self): birth_date = self.cleaned_data.get('birth_date') cur_date = now().date() birth_delta = cur_date - birth_date years = total_seconds(birth_delta) / (365.25*24*60*60) if years < 18: raise forms.ValidationError('Вам еще не исполнилось 18 лет.') if years > 90: raise forms.ValidationError('Вы правда старше 90 лет? Проверьте правильность даты рождения') return birth_date
def get_time_passed_percent(self): """ Возвращает в процентах, какой период акции уже прошел """ start_date = self.start_date end_date = self.end_date cur_time = now() if cur_time < start_date: #Акция еще даже не начиналась. Возвращаем 0 return 0 if cur_time > end_date: #Акция уже закончилась. Возвращаем 100 return 100 total_duration = end_date - start_date total_duration = float(total_seconds(total_duration)) time_passed = cur_time - start_date time_passed = float(total_seconds(time_passed)) time_passed_percent = time_passed / (total_duration / 100) time_passed_percent = int(round(time_passed_percent)) return time_passed_percent
def clean_amount(self): min_bid_interval = Settings.objects.get(key='AUCTIONS_BID_MIN_INTERVAL').value amount = self.cleaned_data['amount'] if amount > self.request.user.get_profile().get_money_ballance(): raise forms.ValidationError('У вас недостаточно денег на счету') if amount < self.auction.get_actual_price(): raise forms.ValidationError('Сумма ставки не соответствует текущей стоимости лота') if self.auction.get_latest_user_bid(self.request.user): bid_delta = now() - self.auction.get_latest_user_bid(self.request.user).add_date if total_seconds(bid_delta) < int(min_bid_interval): raise forms.ValidationError(u'Вы не можете делать ставки чаще, чем раз в %s секунд' % (min_bid_interval, )) return amount
def home(request, show_login=False): #Проверяем, пришел ли юзер по приглашению друга. if not request.user.is_authenticated(): refered_by = request.GET.get('refered_by') if refered_by and refered_by != request.session.get('refered_by'): request.session['refered_by'] = refered_by context = RequestContext(request) if request.method == 'POST': action = request.POST.get('action') if action == 'login': login_form = LoginForm(request.POST) register_form = RegisterForm() if login_form.is_valid(): login(request, login_form.user) redirect_url = request.GET.get('next') if redirect_url is None: redirect_url = settings.LOGIN_REDIRECT_URL return redirect(redirect_url) elif action == 'register': login_form = LoginForm() register_form = RegisterForm(request.POST) if register_form.is_valid(): user = register_form.save() login(request, user) user.get_profile().deposit_bonuses(amount=settings.REGISTER_BONUS, comment='50 бонусов при регистрации') return redirect('home') else: login_form = LoginForm() register_form = RegisterForm() context['login_form'] = login_form context['register_form'] = register_form context['is_home'] = True context['top3'] = get_top_users(3) shortest_offer = Offers.objects.order_by('end_date')[:1] cur_time = now() if shortest_offer.count(): context['shortest_offer'] = shortest_offer[0] delta = context['shortest_offer'].end_date - cur_time total_secs = int(total_seconds(delta)) hours = int(math.floor(total_secs/3600)) remainder = total_secs % 3600 minutes = int(math.floor(remainder/60)) seconds = remainder % 60 if hours > 99: hours = 99 minutes = 59 seconds = 59 else: if hours < 10: hours = str(hours) if minutes < 10: minutes = str(minutes) if seconds < 10: seconds = str(seconds) context['shortest_offer_hours_left'] = hours context['shortest_offer_minutes_left'] = minutes context['shortest_offer_seconds_left'] = seconds try: context['home_page'] = FlatPage.objects.get(pk=settings.HOME_PAGE_ID) except: pass cur_time -= timedelta(hours=cur_time.hour, minutes=cur_time.minute, seconds=cur_time.second, microseconds=cur_time.microsecond) context['top_yesterday'] = get_top_users(1, cur_time-timedelta(days=1), cur_time) context['top_week'] = get_top_users(1, cur_time - timedelta(days=7), cur_time) context['show_login_overlay'] = show_login return render_to_response('home.html', context)