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:
to have a unique identifier to include in the URL (e.g. /dgilge/xyz/ where xyz is the work)
define the people who maintain the work, i.e. upload text to be translated, decide if they're private, make users trustees, etc.
to decide which users may see and contribute to private works
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.)
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 itOrganization
.The reasons to have this object are:
/dgilge/xyz/
where xyz is the work)Here is a comparison of the two options (required means always having a responsible entity object, optional means you could also do it without):
code
field inResponsible
code
field inOrganization
orusername
field inUser
staff
field inResponsible
staff
field inOrganization
orowner
field inWork
(one person only, that way a user can still be an owner of an organization work, like on GitHub)members
field inResponsible
members
fields inOrganization
andWork
or permission groups (you optionally could invite users per work*)trustees
field inResponsible
trustees
fields inOrganization
andWork
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.)