I've simple Django project. i need to implement extended permissions to this project.
the new permissions i'm looking to achieve:
1- Add "view" permission, so user can view but not edit. (in addition to default permissions add/edit/delete)
2- Add custom field to user profile to select assign him to city, cities, or all (will be explained later).
3- Add 3 levels of users (groups?):
3-a- Contributor: Contributor can add content / edit his own content, he cannot see content submitted by other contributors. when submitting content, the content will be assigned to next user level: Editor. when the content assigned to Editor, the Contributor doesn't have access to that content anymore.
3-b- Editor: Editor can view/edit content submitted by Contributor, the limitation between Contributor and Editor is subject to "City" field. so the Editor will only have access to content submitted by Contributor has the same city.
John is contributor in "New York" city, John will submit Article-1
Tiffany is contributor in "Houston" city. Tiffany will submit Article-2
Albert is contributor in "California" city. Albert will submit Article-3
Adam is Editor in "New York", Adam will have permission to view/edit content submitted by John only.
Thomas is Editor in "Houston, California", Thomas will have permission to view/edit content submitted by Tiffany and Albert.
Austin is Editor in "New York, Houston", Austin will have permission to view/edit content submitted by John and Tiffany.
after viewing/editing the content, the Editor will either have to: send the content to the next user level "Reviewer", or send it back to the original contributor. (e.g. Adam send content back to John).
if Editor sent the content to Contributor or Reviewer, he won't have access to it edit it anymore, only view.
3-c- Reviewer: Reviewer has access to edit/view content, know which contributor created it, mark it as valid, or send it back to Editor to make requested changes.
if Reviewer sent back the content to Editor, he won't have access to edit it anymore, only view.