Я использую django -fsm для реализации конечного автомата. Код выглядит как
def user_ok_to_check_me( instance, user):
...
class Job( models.Model):
# ... many screenfulls of code
@transition( field=state, target=BOOKING, source=CHECKING, permission=user_ok_to_check_me)
def fail_checking(self, **kwargs):
...
и работает. Читаемость кода ухудшается из-за того, что эта маленькая служебная функция находится вне класса, к которому она принадлежит, поэтому я попробовал
class Job( models.Model):
# ... many screenfulls of code
@staticmethod
def user_ok_to_check_me( instance, user):
...
@transition( field=state, target=BOOKING, source=CHECKING, permission=user_ok_to_check_me)
def fail_checking(self, **kwargs):
, который не работает. Не уверен, что теперь делает user_ok_to_check_me
, он ведет себя как неактивная функция, всегда возвращающая True, даже когда все это return False
Почему? И есть ли способ объявить эту маленькую функцию внутри класса? (Это слишком долго, чтобы использовать lambda instance, user:
)