Continuing the discussion from Platform to publish modules:
I would like to revive this idea because I think it will indeed solve Add in Heptapod a location to push the nonofficial module in a more general way.
The idea is to develop a website with (of course) Tryton as backend and Flask/Bootstrap with flask-tryton (until REST API for user application) using web_user
module.
Model
User
Users are based on web.user
. A Party is created and link to the Web User with a unique constraint.
Organization
An organization regroup users. It is the publisher of modules.
A user can be in multiple organization.
A user can create organization to which he is attached.
A user of an organization can add other users to the organization using their emails.
A user can leave an organization except if he is the last user.
An organization contains:
name
* (unique)homepage_url
description
(ReST format)
Module
A module describe a Tryton module with:
organization
* (the organization publishing the module)module_name
* (the name inir.module
)name
* (same asmodule_name
by default)package_name
(the unique name of the package that contains the module in PyPI)license
* (from a predefined list with an “Other” option)repository_url
(the URL of the repository)documentation_url
(the URL of the documentation)description
(ReST format)
Module - Series
Store for each release, the supported Tryton series of a module.
The information is extracted from the requires_dist
of the JSON API of PyPI on trytond
package.
At least the one of the package_name
or the repository_url
must be filled.
If the package_name
is filled on submission, the other empty field are filled with data from PyPI.
Web Pages
index
Display a search form, t last 5 modules released, last 5 modules added and 5 random modules.
module
Using the route /modules/<organization>/<module_name>
.
Display the name, the different links, the link to the organization and the releases with the Tryton series.
organization
Using the route /organizations/<name>
Display the name, the users and the modules.
user
Using the route /users/<name>
Display public information about the user.
profile
Using the route /profile
Form to update current user information
misc
Of course we have the different login/signup/logout pages, the error pages etc.
Scheduled Task
- for each module, fetch weekly information about new releases (using Simple API with JSON).
- remove monthly modules that have no releases for any supported series (except module without package name)
Protections
In order to protect against Spam. In addition to have his email addresses validated, the first module publication of an organization must be validated by the administrator (using the Tryton backend).
Future
We may add later:
- count users of modules based on declaration (of validated users)
- comments
- rating