def get_trust_days_duration(self): ''' если до конца месяца больше/равно 3х дней - вернём 3 дня иначе вернём разницу в днях ''' today = date.today() last_day = getLastDay().date() delta_days = (last_day - today).days + 1 if delta_days >= settings.TRUST_PAY_MAX_DURATION: return settings.TRUST_PAY_MAX_DURATION else: return delta_days
def get(self): if self.period_start and self.period_end: #получаем платежи за выбранные периоды payments = Payment.objects.filter(contract=self.contract, date__gte=self.getFirstDay(), date__lte=self.getLastDay()).order_by('date') else: #получаем платежи за последний период payments = Payment.objects.filter(contract=self.contract, date__gte=getFirstDay(), date__lte=getLastDay()).order_by('-date') data = [] for payment in payments: data.append(payment.list()) return data
def not_used_trust_pay(self): #проверяем было ли понижение лимита в текущем месяце limit_down_count = ContractLimit.objects.filter(contract=self.contract, date__gte=getFirstDay(), date__lte=getLastDay()).count() if limit_down_count == 0: return True else: return False
def test_enable_internet(self): i = 0 for contract in self.contracts: service = Service(contract=contract) if service.is_internet_activated(): internet_contract = contract.get_service_contract(self.service) if internet_contract: #выключаем интернет абоненту - имитируя блокировку интернет за неуплату if internet_contract.status == settings.CONTRACT_STATUS['active']: internet_contract.status = settings.CONTRACT_STATUS['closed'] internet_contract.save() limit_down = LimitDown(contract=contract) if limit_down.can_make(): self.client.post('/login', {'contract': contract.contract, 'password': contract.password}) response = self.client.get('/enable_internet') self.assertEqual(json.loads(response.content)['success'], True) self.assertEqual(json.loads(response.content)['title'], u'Интернет включён на %s дня' % limit_down.get_trust_days_duration()) self.assertEqual(json.loads(response.content)['message'], u'Не забудьте внести оплату в течении указанного периода. Важно: для активации вашего тарифа, завершите текущее соединение с интернетом и через пять минут подключитесь заново.') #проверяем ContractLimit contract_limit = ContractLimit.objects.get(contract=internet_contract, date__gte=getFirstDay(), date__lte=getLastDay()) self.assertEqual(contract_limit.summa, settings.TRUST_PAY_LIMIT) self.assertEqual(contract_limit.days, unicode(limit_down.get_trust_days_duration())) #проверяем TaskLimitRestoration task_limit_restoration = TaskLimitRestoration.objects.get( \ contract=internet_contract, \ date=datetime.now() + timedelta(days=limit_down.get_trust_days_duration())) self.assertEqual(task_limit_restoration.summa, settings.TRUST_PAY_LIMIT) #проверяем ContractStatusLog contract_status_log = ContractStatusLog.objects.get(contract=internet_contract, start_date=date.today(), comment=u'Включение услуги при понижении лимита через личный кабинет') self.assertEqual(contract_status_log.status, settings.CONTRACT_STATUS['active']) #проверяем что статусы об отключении при недостатке средств убраны #contract_statuses = ContractStatus.objects.filter(contract=contract, status=settings.CONTRACT_STATUS['closed'], start_date__gte=getFirstDay()) #self.assertEqual(len(contract_statuses), 0) #проверяем что создана запись о том что услуга включена через обещанный платёж contract_status = ContractStatus.objects.get(contract=internet_contract, status=settings.CONTRACT_STATUS['active'], start_date=date.today(), comment=u'Включение услуги при понижении лимита через личный кабинет') self.assertEqual(contract_status.end_date, date.today() + timedelta(days=limit_down.get_trust_days_duration() - 1)) #проверяем что текущий лимит абонента понижен internet_contract = Contract.objects.get(contract=internet_contract) self.assertEqual(internet_contract.limit, settings.TRUST_PAY_LIMIT) #logout self.client.post('/logout') i = i + 1 print u"Test: <test_enable_internet>. Всего договоров: %i, Обработано: %i" % (len(self.contracts), i)