def test_internet(self): for contract in self.contracts: self.client.post('/login', {'contract': contract.contract, 'password': contract.password}) response = self.client.get('/internet') service = Service(contract=contract) if service.is_internet_activated(): title_exist = True if 'Произошла ошибка!' in response.content else False message_exist = True if 'Данная услуга у вас не привязана к данному логину. Предварительно осуществите привязку.' in response.content else False self.assertEqual(title_exist, False) self.assertEqual(message_exist, False) promise_pay_header_exist = True if '<li><a href="#promise_pay">Обещанный платёж</a></li>' in response.content else False promise_pay_error_title_exist = True if 'Услуга "Обещанный платёж" не доступна!' in response.content else False promise_pay_bad_balance_exist = True if 'Текущий баланс не положителен.' in response.content else False promise_pay_already_used_exist = True if 'Данная услуга уже была активирована в текущем месяце.' in response.content else False promise_pay_not_blocked_exist = True if 'Интернет на текущий момент не заблокирован.' in response.content else False promise_pay_manual_limit_exist = True if 'Понижение лимита уже было произведено вручную.' in response.content else False promise_pay_corporate_exist = True if 'Данный договор представляет юридическое лицо.' in response.content else False limit_down = LimitDown(contract=contract) if limit_down.can_make(): self.assertEqual(promise_pay_header_exist, True) self.assertEqual(promise_pay_error_title_exist, False) self.assertEqual(promise_pay_bad_balance_exist, False) self.assertEqual(promise_pay_already_used_exist, False) self.assertEqual(promise_pay_not_blocked_exist, False) self.assertEqual(promise_pay_manual_limit_exist, False) self.assertEqual(promise_pay_corporate_exist, False) else: self.assertEqual(promise_pay_error_title_exist, True) if limit_down.get_trust_pay_not_available_reason()['message'] == u'Текущий баланс не положителен.': self.assertEqual(promise_pay_bad_balance_exist, True) if limit_down.get_trust_pay_not_available_reason()['message'] == u'Данная услуга уже была активирована в текущем месяце.': self.assertEqual(promise_pay_already_used_exist, True) if limit_down.get_trust_pay_not_available_reason()['message'] == u'Интернет на текущий момент не заблокирован.': self.assertEqual(promise_pay_not_blocked_exist, True) if limit_down.get_trust_pay_not_available_reason()['message'] == u'Понижение лимита уже было произведено вручную.': self.assertEqual(promise_pay_manual_limit_exist, True) if limit_down.get_trust_pay_not_available_reason()['message'] == u'Данный договор представляет юридическое лицо.': self.assertEqual(promise_pay_corporate_exist, True) #logout self.client.post('/logout')
def worker(req): contract = req.params()['service_contract'] if contract: #уведомляем админов проекта о попытке активации услуги notify(u'Попытка активации доверенного платежа', u'Контракт: %s в %s попытался активировать услугу "Доверенный платёж"' % (contract.contract, datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) #проверяем не было ли уже понижений в текущем месяце, если были то понижение невозможно limit_down = LimitDown(contract=contract) duration = limit_down.get_trust_days_duration() #на сколько дней включить Интернет if limit_down.can_make(): tariff = Tariff(contract=contract) #обновляем лимит и статус услуги абонента summa = tariff.get_limit() contract.status = settings.CONTRACT_STATUS['active'] #включаем услугу contract.limit = summa contract.save() #понижаем лимит абоненту ContractLimit.objects.create(contract=contract, summa=summa, days=duration) #создаём таску для восстановления лимита биллингом TaskLimitRestoration.objects.create(contract=contract, summa=summa, date=datetime.now() + timedelta(days=duration)) #откладываем изменение статуса в лог ContractStatusLog.objects.create( \ contract=contract, \ status=settings.CONTRACT_STATUS['active'], \ start_date=date.today(), end_date=date.today() + timedelta(days=duration - 1), comment=u'Включение услуги при понижении лимита через личный кабинет' \ ) #обрабатываем предыдущие статусы контракта в текущем месяце processing_contract_statuses(contract) #создаём запись о том что услуга включена через обещанный платёж ContractStatus.objects.create( \ contract=contract, \ status=settings.CONTRACT_STATUS['active'], \ start_date=date.today(), \ end_date=date.today() + timedelta(days=duration - 1), \ comment=u'Включение услуги при понижении лимита через личный кабинет' \ ) #уведомляем админов проекта об успешной активации услуги notify(u'Уведомление', u'Контракт: %s в %s успешно активировал услугу "Доверенный платёж"' % (contract.contract, datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) return {'success': True, \ 'title': u'Интернет включён на %i дня' % duration, \ 'message': u'Не забудьте внести оплату в течении указанного периода.<br><br><b>Важно: для активации вашего тарифа, завершите текущее соединение с интернетом и через 5-10 минут подключитесь заново</b>.<br><br>Если подключение осуществляется через WiFi оборудование (роутер), то необходимо отключить его от сети на 5-10 минут.' } else: #уведомляем админа проекта о том что активации услуги не возможна notify(u'Уведомление', u'Контракт: %s в %s не может активировать услугу "Доверенный платёж", т.к. "%s"' % (contract.contract, datetime.now().strftime("%Y-%m-%d %H:%M:%S"), limit_down.get_trust_pay_not_available_reason()['message'])) return {'success': False, \ 'title': limit_down.get_trust_pay_not_available_reason()['title'], \ 'message': limit_down.get_trust_pay_not_available_reason()['message'] } else: return {'success': False, \ 'title': u'Произошла ошибка!', \ 'message': u'Услуга Интернет у вас не привязана к данному логину. Предварительно осуществите привязку.' }