Обработка лицензионной системы с Django - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь найти способ справиться с лицензиями для домашнего проекта в Джанго. Скажем, я хотел, чтобы клиенты платили за лицензию, и это позволяет им получать доступ к веб-сайту до истечения срока действия этой лицензии.

Существуют ли встроенные инструменты для обработки чего-то подобного в Django?

Сейчас все, что я могу придумать, - это создать новую модель "лицензии" с внешним ключом для моей модели клиента и полем даты и времени, а затем расширить модель клиента, чтобы проверить, действительна ли еще лицензия:

class License(models.Model): 
    customer = models.ForeignKey(
    license_end = models.DateTimeField(default=timezone.now)

Тогда я бы расширил модель клиента этим методом:

def has_license(self, license):
    try:
        license = self.license.get(license=license)
    except Exception:
        return False

    return license.license_end > timezone.now()

И я предполагаю, что в каждом представлении, ограниченном лицензией, мне нужно будет проверить if customer.has_license(license): (передавая действующий объект лицензии).

Хотя может показаться, что я буду писать одни и те же несколько строк снова и снова для каждого представления, которое необходимо защитить.

Был бы более простой способ настроить это (или что-то подобное)?

Хотя это немного актуально, мне также пришлось бы придумать решение для лицензионных ключей и их аутентификации, это совершенно новый вопрос, поэтому я не буду включать его в этот вопрос.

...