Mochinov

Untitled

Aug 3rd, 2021
800
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. def get_access_archive(hasRegister: bool, archive: Archive) -> str:
  3.     """Получение доступа архива"""
  4.     result = f''
  5.     if not hasRegister and archive.is_archive_stat:
  6.         result += f'<a class="btn-1 ml-auto mr-auto mt-2 event-reg-button"\
  7.                href="/archive/registration/{archive.id}">Посмотреть видеозапись</a>'
  8.     if archive.file:
  9.         result += f'<a href="?download_file=True&archive_id={archive.id}" target="_blank" class="btn-1 color-f m_t">Скачать материалы</a>'
  10.     return result
  11.  
  12. def get_warning(archive: Archive = None, event: Event = None) -> str:
  13.     """Возвращает предупреждение исходя из нужного уведомления"""
  14.     warning = '''
  15.        <span class="orange">%s при оплаченном %s</span>
  16.        <a href="" type="button" class="mt-2" data-toggle="modal" data-target="#exampleModal">Нажимая на кнопку Оплатить, Вы соглашаетесь с условиями оплаты и возврата</a>
  17.    '''
  18.     if archive:
  19.         return f'<a href="/payment?archive_id={archive.id}" class="btn-1 mt-2 payment-button">Оплатить ({archive.cost } руб.)</a>' + warning % ('Видеозапись и материалы доступны' if archive.file else 'Видеозапись доступна' , 'архиве')
  20.     if event:
  21.         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 'Видеозапись доступна', 'вебинаре')
  22.  
  23. @register.simple_tag(name='check_status_payed')
  24. def check_status_payed(user, archive_id, hasRegister):
  25.     """Проверка на доступность архива"""
  26.     result = f''
  27.  
  28.     """
  29.    Получение архива
  30.    """
  31.     archive = Archive.objects.get(id = archive_id)
  32.     if user.is_authenticated:
  33.         """
  34.        Проверка, авторизован ли пользователь
  35.        """
  36.         cycles = Cycle.objects.filter(events__id = archive.event.id)
  37.         """ В данном блоке проверяем есть платные цыклы , и если хотя бы один оплаченный из платных циклов """
  38.         if cycles.filter(is_commerc = True, end_date__gt = datetime.today()).exists():
  39.             for cycle in cycles:
  40.                 if Payment.is_paid_cycle(cycle_id = cycle.id, user = user):
  41.                     """ Если хоть один оплачен выходим из цикла и разрешаем доступ """
  42.                     show_archive = True
  43.                     break
  44.                 else: show_archive = False
  45.             if show_archive:
  46.                 """Если оплачен то Добро пожаловать если нет просим оплатить один из предложенных циклов"""
  47.                 result = get_access_archive(hasRegister, archive)
  48.             else:
  49.                 result += f'Видеозапись будет доступна после оплаты цикла ПК: <br>'
  50.                 result += ' '.join([f'<a href="/cycles/{cycle.id}" class="orange" target="_blank">{cycle.title} (цикл ПК)</a>' for cycle in cycles if cycle.is_commerc]
  51.         else:
  52.             """
  53.            Если ни один из связанных циклов не платный , то проверяем архив и меропреятие на платное событие
  54.            """
  55.             if archive.is_commerc:
  56.                 """ Если архив платный и он оплачен, то Добро пожаловать, если нет то оплати и лети """
  57.                 if Payment.is_paid_archive(user = user, archive_id = archive.id):
  58.                     result = get_access_archive(hasRegister, archive)
  59.                 else:
  60.                     result = get_warning(archive = archive, event = None)
  61.             else:
  62.                 if archive.event.is_commerc:
  63.                 """ Если мероприятие платное и оно оплаченно, то Добро пожаловать, если нет то оплати и лети """
  64.                     if Payment.is_paid_event(user = user, event_id = archive.event.id):
  65.                         result = get_access_archive(hasRegister, archive)
  66.                     else:
  67.                         result = get_warning(archive = None, event = archive)
  68.                 else:
  69.                     result = get_access_archive(hasRegister, archive)
  70.     else:
  71.         """
  72.        Если пользователь анонимный то покажи ему ссылку на регистрацию (архива , цикла , мероприятия )
  73.        """
  74.         archive = Archive.objects.get(id = archive_id)
  75.         if archive.is_commerc:
  76.             """ Если архив платный и он оплачен, то Добро пожаловать, если нет то оплати и лети """
  77.             result = get_warning(archive = archive, event = None)
  78.         else:
  79.             if archive.event.is_commerc:
  80.                 """ Если мероприятие платное и оно оплаченно, то Добро пожаловать, если нет то оплати и лети """
  81.                 result = get_warning(archive = None, event = archive)
  82.             else:
  83.                 cycle = Cycle.objects.filter(events__id = archive.event.id, end_date__gt = datetime.today(), is_commerc = True)
  84.  
  85.                 """
  86.                В данном блоке проверяем есть платные цыклы , и если хотя бы один оплаченный из платных циклов
  87.                """
  88.                 if cycle.exists():
  89.                     result += f'Видеозапись будет доступна после оплаты цикла ПК: <br>'
  90.                     result += ' '.join([f'<a href="/cycles/{cycle.id}" class="orange" target="_blank">{cycle.title} (цикл ПК)</a>' for cycle in cycles if cycle.is_commerc]
  91.                 else:
  92.                     result = get_access_archive(hasRegister, archive)
  93.     return result
RAW Paste Data