lhermann / langify-docs

Documentation for the open translation system langify
4 stars 1 forks source link

Organization / Responsible entity #11

Open dgilge opened 6 years ago

dgilge commented 6 years ago

The responsible entity of a work can be an organization or a private person. I see two possible ways to implement it: Require a special responsible entity object (Responsible) for every work or make it optional and call it Organization.

The reasons to have this object are:

  1. to have a unique identifier to include in the URL (e.g. /dgilge/xyz/ where xyz is the work)
  2. define the people who maintain the work, i.e. upload text to be translated, decide if they're private, make users trustees, etc.
  3. to decide which users may see and contribute to private works
  4. to decide which users are trustees (i.e. can do the final review and declare a translation as completed)

Here is a comparison of the two options (required means always having a responsible entity object, optional means you could also do it without):

Reason required optional
identifier code field in Responsible code field in Organization or username field in User
maintainers staff field in Responsible staff field in Organization or owner field in Work (one person only, that way a user can still be an owner of an organization work, like on GitHub)
access private members field in Responsible members fields in Organization and Work or permission groups (you optionally could invite users per work*)
trustees trustees field in Responsible trustees fields in Organization and Work or permission groups (you optionally could decide per work who the trustees are*)

* = I think this actually is quite handy

(I'm not sure whether to use Django permissions which are more bound to the user by design and maybe more flexible or implement direct relations to the users which might be clearer from a Work perspective. But this issue isn't as important as the above.)