end of day
This commit is contained in:
parent
435a4d6afd
commit
8f206269fa
1 changed files with 25 additions and 2 deletions
|
|
@ -1,5 +1,3 @@
|
|||
from cgitb import handler
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import models, transaction
|
||||
from django.db.models import F
|
||||
|
|
@ -13,23 +11,44 @@ from utils.models import BaseModel
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class EventQuerySet(models.QuerySet):
|
||||
pass
|
||||
|
||||
class Event(BaseModel):
|
||||
actor = None
|
||||
target = None
|
||||
label = None
|
||||
details = {}
|
||||
|
||||
objects = EventQuerySet.as_manager()
|
||||
|
||||
def analyze(self):
|
||||
for plan in Plan.objects.get_related_to_event(self):
|
||||
plan.process_event(self)
|
||||
|
||||
|
||||
class PlanQuerySet(models.QuerySet):
|
||||
def calculate(self, user, application=None):
|
||||
for plan in self.filter(application=application)[:10]:
|
||||
if not Promotion.objects.used(user):
|
||||
plan.calculate(user)
|
||||
|
||||
def get_related_to_event(self, event):
|
||||
return self.filter(event_list__icontains=event.label)
|
||||
|
||||
|
||||
class Plan(BaseModel):
|
||||
# user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
|
||||
application = models.ForeignKey(oauth2_settings.APPLICATION_MODEL, on_delete=models.PROTECT,
|
||||
related_name='+', null=True, blank=True)
|
||||
event_list = models.JSONField(default=list)
|
||||
title = models.CharField(max_length=255, verbose_name=_('title'), db_index=True)
|
||||
description = models.TextField(verbose_name=_('description'), blank=True)
|
||||
promotion_type = models.CharField(max_length=64, verbose_name=_('promotion type'), db_index=True, choices=PromotionTypeChoices.choices)
|
||||
policy = models.JSONField(default=dict, verbose_name=_('policy'), null=True, blank=True)
|
||||
balance = models.IntegerField(verbose_name=_('balance'), default=0)
|
||||
|
||||
|
||||
objects = PlanQuerySet.as_manager()
|
||||
|
||||
def __str__(self):
|
||||
|
|
@ -57,6 +76,10 @@ class Plan(BaseModel):
|
|||
)
|
||||
return updated
|
||||
|
||||
def process_event(self, event=None):
|
||||
promotion, created = Promotion.objects.get_or_create()
|
||||
promotion.promote()
|
||||
|
||||
|
||||
class PromotionQuerySet(models.QuerySet):
|
||||
def used(self, user):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue