예제 #1
0
파일: models.py 프로젝트: stden/bonushouse
 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))
예제 #2
0
파일: forms.py 프로젝트: stden/bonushouse
 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
예제 #3
0
파일: models.py 프로젝트: stden/bonushouse
 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
예제 #4
0
파일: forms.py 프로젝트: stden/bonushouse
 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
예제 #5
0
파일: views.py 프로젝트: stden/bonushouse
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)