Перезапись правил Django не применяется

Мы используем абстрактный класс модели, чтобы установить некоторые базовые правила, которые должны быть переписаны реальными моделями в Django ( более подробно в предыдущем вопросе). В данном случае большинство классов имеют типичный сценарий использования, поэтому они наследуют те же разрешения от базового класса, но в случае с образцовым Ticket следует добавить предикат is_public.

class BaseModel(RulesModel):
    ...

    class Meta:
        abstract = True

    @classmethod
    def preprocess_rules_permissions(cls, perms):
        perms.update({
            "can_create": can_create_in_company | is_superuser,
            "can_view": can_view_in_company | is_author | is_superuser,
        })


class Ticket(BaseModel):
    ...

    @classmethod
    def preprocess_rules_permissions(cls, perms):
        perms.update({
            "can_view": can_view_in_company | is_author | is_superuser | is_public,
        })

При реализации этого метода предикат не применяется при попытке получить доступ к публичному билету. Все ли правила перезаписываются методом update, или мы можем обновить только один предикат? Даже при добавлении оператора print в препроцесс Tickets он не выполняется, так что перезапись, очевидно, не работает. В документации ничего не говорится об этом.

Вернуться на верх