Я относительно новичок в django -гарианском и django -потоке, все еще пытаюсь обернуться вокруг вещей. Недавно я пытался внедрить систему документооборота для получения разрешений на определенные документы. В качестве такового я выбрал просмотр потока рабочего процесса.
Рабочий процесс, который мне поручено разрабатывать, на самом деле довольно простой и линейный. Однако на каждом контрольном пункте должен присутствовать другой человек со специальной ролью для проверки документов. Есть 4 роли, 1 составитель, 2 проверяющий, 3 казначейство и 4 директор.
Поскольку я не могу, чтобы кто-то проверял самого Директора, существует необходимость в контроле пользователя на основе ролей. Таким образом, я принял django опекуна, чтобы сделать эту работу. Вот мой код, демонстрирующий, как я это сделал:
Flows.py
class Pipeline(Flow):
process_class = PaymentVoucherProcess
lock_impl = lock.select_for_update_lock
#process starts here
start = flow.Start(
CreateProcessView,
fields=["paymentVoucher"],
task_title="Processing New Voucher"
).Permission("can_start_voucher", auto_create=True
).Next(this.documents)
#preparer will upload supporting documents
documents = flow.View(
UploadView,
task_title="Receiving Supporting Documents"
).Permission("preparer", auto_create=True
).Next(this.preparer)
#i wont go in detail as it isn't relevant
Models.py
, где я определил свои разрешения в сам процесс.
class PaymentVoucherProcess(Process):
paymentVoucher = models.ForeignKey('PaymentVoucher',on_delete=models.CASCADE)
preparer = models.BooleanField(default=False)
verifier = models.BooleanField(default=False)
treasury = models.BooleanField(default=False)
director = models.BooleanField(default=False)
remarks = models.TextField(null=True)
class Meta:
permissions = (
('can_start_voucher', 'Can start Voucher'),
('preparer', 'preparer'),
('verifier', 'verifier'),
('director', 'director'),
)
Итак, каждому из моих пользователей будут назначены права доступа в зависимости от их роли. Например, подготовителю будет предоставлено разрешение «can_start_voucher» и «preparer». Пока эта система работает, однако, поскольку я незнаком с django -viewflow и django -guardian, я боюсь, что это неправильный способ ограничения потока для определенных пользователей.
Здесь обсуждается проблема с чем-то похожим на то, что я делаю: django -guardian и viewflow
, поэтому я хотел бы искать Из мнения старших здесь, я был бы очень признателен за любые комментарии! Спасибо