12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import datetime
- from django.contrib.auth.models import User
- from djangotools.common.types import parse_date
- from djangotools.models import UserPreferenceManager
- from baby.app.context.base import UserPrefences
- from baby.app.models.regle import Regle
- def get_user(user=None, pref_class=UserPrefences):
- if user is None:
- try:
- user = User.objects.create_user("user")
- except User.DoesNotExist:
- user = User.objects.get(username="user")
- if isinstance(pref_class, UserPreferenceManager):
- user.pref = pref_class
- if callable(pref_class):
- user.pref = pref_class(user)
- else:
- user.pref = UserPreferenceManagerMocker(user, pref_class)
- return user
- def create_regles(lengthes, delta=0, today=None, user=None, pref_class=UserPrefences):
- user = get_user(user, pref_class=pref_class)
- if isinstance(today, str):
- today = parse_date(today)
- curr = today or datetime.date.today()
- if isinstance(delta, int):
- curr = curr - datetime.timedelta(days=delta)
- elif isinstance(delta, datetime.timedelta):
- curr = curr - delta
- else:
- raise Exception()
- Regle.objects.create(user, curr)
- for duration in reversed(lengthes):
- curr -= datetime.timedelta(days=duration)
- Regle.objects.create(user, curr)
- return user
- class UserPreferenceManagerMocker(UserPreferenceManager):
- def __init__(self, user, data, profile="default"):
- super().__init__(user, profile)
- self.data = data
- def get(self, key, default=None):
- return self.data.get(key, default)
- def prefs(data, classe=UserPrefences):
- class Classe(classe):
- def __init__(self, user, profile="default", data=data):
- super().__init__(user, profile)
- self.data = data
- def get(self, key, default=None):
- return self.data.get(key, default)
- return Classe
- class Request:
- def __init__(self, method, user, get=None, post=None, body=None, headers=None, pref_class=UserPrefences):
- self.method = method
- self.GET = get or {}
- self.POST = post or {}
- self.body = body
- self.headers = headers if headers is not None else {}
- self.user = get_user(user, pref_class)
- def test(self, Context, **kwargs):
- ctx = Context()
- return ctx.get_context(self, **kwargs)
|