You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2020/02/17 09:32:39 UTC

[GitHub] [incubator-superset] dpgaspar commented on issue #9077: [SIP-35] Proposal for Improving Superset’s Python Code Organization

dpgaspar commented on issue #9077: [SIP-35] Proposal for Improving Superset’s Python Code Organization
URL: https://github.com/apache/incubator-superset/issues/9077#issuecomment-586899389
 
 
   Adding my two cents here:
   
   Regarding blueprints: I'm inclined on delegating the actual registering to each module manager. We can still say that they occur within `app.py` but the specifics are encapsulated on the module manager itself.
   
   This way:
   - We would reduce the centralized complexity of `app.py`
   - Handle module specifics at the module level
   
   For example:
   ```
   - superset/
       - datasets/
           - manager.py (implements `register_views`)
           - commands/
             - CRUD (create.py, update.py, delete.py ...)
             - Custom (export.py, ...)
           - api.py
           - schemas.py
           - dao.py
       - dashboards/
         ...
       - charts/
       - databases/
       - commands/
          - base.py
            ....
       - api/
           - base.py
   ....
   ```
   
   So `app.py` would call each module's `manager.register_views()` with additional pre and post hooks. This kind of pattern can open up the app for external extensions, since additional modules can be independently installed (pip) and loaded in order using config, for example:
   
   ```
   ADDONS = [
       middleware1.Middleware1Manager,
       middleware2.Middleware2Manager,
       ...
   ]
   ```
   ```
   Just a thought, could db_engine_specs follow a similar pattern?
   
   The blueprints are handled by FAB's `BaseApi` or it's child `ModelRestApi` that creates a blueprint with all routes registered under the same API resource namespace, `api/v1/dataset/*`, `api/v1/databases` and OpenAPI spec tag/grouping. 
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org