Использование Workflow для реализации квоты - PullRequest
5 голосов
/ 04 июля 2011

Требуется руководство по наилучшей практике для внедрения простой системы квот.

Я хотел бы ограничить количество раз, когда участник может добавлять пользовательский тип контента (называемый токеном) в свою папку участника (ятакже создал пользовательскую папку участника).

Вариант использования (ограничение количества токенов, добавляемых участником):

Предположим, что наш пользовательский тип содержимого называется «Token».Должна быть возможность установить ограничение на количество токенов, которые можно добавить.Например, ограничение установлено на 2. После добавления двух токенов в личный кабинет у них больше нет разрешения на добавление дополнительных токенов.

Что я рассматриваю

Я смотрю на DCWorkflow иинтересно, может ли быть какое-то условие охраны.Я также посмотрел на исходный код дополнения под названием «quota», в котором используется директива class / require zcml (код здесь: http://svn.plone.org/svn/collective/quota/trunk/configure.zcml).

Кажется, что мне может понадобиться настроить папку участника, а нерабочий процесс на самом «токене». Буду признателен за любые указания / рекомендации по этому вопросу.

Ответы [ 3 ]

5 голосов
/ 04 июля 2011

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

2 голосов
/ 07 июля 2011

Вы также можете переопределить метод allowContentTypes вашей папки участника.

Вы можете отфильтровать из возвращенного списка любой тип AT на основе того, что вы хотите.

Хорошо, что вы также получаете классическое выпадающее меню «Добавить новое» со списком добавляемых типов.

Я сделал это в проекте, где мне нужно было ограничить количество элементов по группе / роли.

2 голосов
/ 05 июля 2011

Вы можете отслеживать количество добавленных объектов типа контента с событиями и отзывать разрешение на добавление, когда количество объектов превышает ваш лимит.

Документация по событию: http://plone.org/products/dexterity/documentation/manual/five.grok/core-components/events

Отзыв разрешений может быть сделан, например, с группами. Просто удалите пользователя из группы, которой разрешено добавлять контент.

...