The current abstract models cannot be imported and extended independently by third-party apps because they are located in the same python file as the concrete ones, so if a third party tries to import one of the abstract models, the concrete model will be loaded as well and django will complain that django_netjsongraph is not in INSTALLED_APPS.
We need to make many parts reusable to avoid repetition in "OpenWISP Network Topology":
models
admin
AppConfig
API views
API urls
A good example of a similar work is django-netjsonconfig, see Extending django-netjsonconfig and check out how each reusable class / function is implemented.
The current abstract models cannot be imported and extended independently by third-party apps because they are located in the same python file as the concrete ones, so if a third party tries to import one of the abstract models, the concrete model will be loaded as well and django will complain that
django_netjsongraph
is not inINSTALLED_APPS
.We need to make many parts reusable to avoid repetition in "OpenWISP Network Topology":
A good example of a similar work is django-netjsonconfig, see Extending django-netjsonconfig and check out how each reusable class / function is implemented.