Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_access_archive(hasRegister: bool, archive: Archive) -> str:
- """Получение доступа архива"""
- result = f''
- if not hasRegister and archive.is_archive_stat:
- result += f'<a class="btn-1 ml-auto mr-auto mt-2 event-reg-button"\
- href="/archive/registration/{archive.id}">Посмотреть видеозапись</a>'
- if archive.file:
- result += f'<a href="?download_file=True&archive_id={archive.id}" target="_blank" class="btn-1 color-f m_t">Скачать материалы</a>'
- return result
- def get_warning(archive: Archive = None, event: Event = None) -> str:
- """Возвращает предупреждение исходя из нужного уведомления"""
- warning = '''
- <span class="orange">%s при оплаченном %s</span>
- <a href="" type="button" class="mt-2" data-toggle="modal" data-target="#exampleModal">Нажимая на кнопку Оплатить, Вы соглашаетесь с условиями оплаты и возврата</a>
- '''
- if archive:
- return f'<a href="/payment?archive_id={archive.id}" class="btn-1 mt-2 payment-button">Оплатить ({archive.cost } руб.)</a>' + warning % ('Видеозапись и материалы доступны' if archive.file else 'Видеозапись доступна' , 'архиве')
- if event:
- return f'<a href="/payment?event_id={event.event.id}" class="btn-1 mt-2 payment-button">Оплатить ({event.event.cost } руб.)</a>' + warning % ('Видеозапись и материалы доступны' if event.file else 'Видеозапись доступна', 'вебинаре')
- @register.simple_tag(name='check_status_payed')
- def check_status_payed(user, archive_id, hasRegister):
- """Проверка на доступность архива"""
- result = f''
- """
- Получение архива
- """
- archive = Archive.objects.get(id = archive_id)
- if user.is_authenticated:
- """
- Проверка, авторизован ли пользователь
- """
- cycles = Cycle.objects.filter(events__id = archive.event.id)
- """ В данном блоке проверяем есть платные цыклы , и если хотя бы один оплаченный из платных циклов """
- if cycles.filter(is_commerc = True, end_date__gt = datetime.today()).exists():
- for cycle in cycles:
- if Payment.is_paid_cycle(cycle_id = cycle.id, user = user):
- """ Если хоть один оплачен выходим из цикла и разрешаем доступ """
- show_archive = True
- break
- else: show_archive = False
- if show_archive:
- """Если оплачен то Добро пожаловать если нет просим оплатить один из предложенных циклов"""
- result = get_access_archive(hasRegister, archive)
- else:
- result += f'Видеозапись будет доступна после оплаты цикла ПК: <br>'
- result += ' '.join([f'<a href="/cycles/{cycle.id}" class="orange" target="_blank">{cycle.title} (цикл ПК)</a>' for cycle in cycles if cycle.is_commerc]
- else:
- """
- Если ни один из связанных циклов не платный , то проверяем архив и меропреятие на платное событие
- """
- if archive.is_commerc:
- """ Если архив платный и он оплачен, то Добро пожаловать, если нет то оплати и лети """
- if Payment.is_paid_archive(user = user, archive_id = archive.id):
- result = get_access_archive(hasRegister, archive)
- else:
- result = get_warning(archive = archive, event = None)
- else:
- if archive.event.is_commerc:
- """ Если мероприятие платное и оно оплаченно, то Добро пожаловать, если нет то оплати и лети """
- if Payment.is_paid_event(user = user, event_id = archive.event.id):
- result = get_access_archive(hasRegister, archive)
- else:
- result = get_warning(archive = None, event = archive)
- else:
- result = get_access_archive(hasRegister, archive)
- else:
- """
- Если пользователь анонимный то покажи ему ссылку на регистрацию (архива , цикла , мероприятия )
- """
- archive = Archive.objects.get(id = archive_id)
- if archive.is_commerc:
- """ Если архив платный и он оплачен, то Добро пожаловать, если нет то оплати и лети """
- result = get_warning(archive = archive, event = None)
- else:
- if archive.event.is_commerc:
- """ Если мероприятие платное и оно оплаченно, то Добро пожаловать, если нет то оплати и лети """
- result = get_warning(archive = None, event = archive)
- else:
- cycle = Cycle.objects.filter(events__id = archive.event.id, end_date__gt = datetime.today(), is_commerc = True)
- """
- В данном блоке проверяем есть платные цыклы , и если хотя бы один оплаченный из платных циклов
- """
- if cycle.exists():
- result += f'Видеозапись будет доступна после оплаты цикла ПК: <br>'
- result += ' '.join([f'<a href="/cycles/{cycle.id}" class="orange" target="_blank">{cycle.title} (цикл ПК)</a>' for cycle in cycles if cycle.is_commerc]
- else:
- result = get_access_archive(hasRegister, archive)
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement