# Djember Model
This project is aimed at automatically generating EmberJS models from Django REST Framework serializer definitions.
This can be done in 2 different ways:
- on-the-fly generation
- on-disk files generation
Install using pip:
pip install djember_model
Add djember_model to your `INSTALLED_APPS`:
INSTALLED_APPS = (
### On-the-fly generation
In order to generate js files on the fly, you'll have import the urls from the project add add them to your urlpatterns.
from djember_model import urls as djember_urls, settings as djember_settings
urlpatterns = [
url(r'^models/', include(djember_urls, namespace=djember_settings.URL_NAMESPACE)),
For each `ViewSet` (Ember expects the same endpoint for CRUD operations, so it's better to use `ViewSet`'s) registered on your router, this will provide a corresponding ember js model.
If you have registered the following Viewset:
The corresponding (ES5) Ember model definition will now be available at http://localhost:8000/models/categories.js
This functionality is meant to be used with [ember-cli-dynamic-model](https://bitbucket.org/levit_scs/ember-cli-dynamic-model) and the recommended usage is to register all your `ViewSet`'s using the <app_name><model_name_correct_english_plural> as in `my_app/categories`.
### On-disk files generation
`djember_model` also provides a management command to generate (ES6) Ember models on disk:
```./manage.py export_to_ember route_registered_with_the_router```
So assuming you have registered the following ViewSet:
you can run:
```./manage.py export_to_ember sample/categories```
in order to generate the corresponding model.
This command will generate 3 files in you ember app:
- `app/models/sample/base/category.py` <- always generated
- `app/models/sample/category.py` <- only generate the file if it doen't exist yet
- `tests/unit/models/sample/category-test.py` <- always generated
The fields or attributes definition will be generated in `app/models/sample/base/category.py`; `app/models/sample/category.py` inherits from the first file and is the place where you should add any customization to your Ember model.
`djember_model` comes with a series of settings that can (should) be customized:
*Default value*: ``'urls.router'`
*Used by*: Dynamic & on-disk generation
The python path to the router on which you registered your `ViewSet`'s
*Default value*: `'djember'`
*Used by*: Dynamic generation only
The name of your ember application or `modulePrefix` (found in `config/environment.js` in your ember app folder)
*Default value*: `'../front'`
*Used by*: On-disk generation only
Relative path from your Django project base to your Ember application base
*Used by*: Dynamy & on-disk generation
Mapping from Django Model fields to ember-data attr types. Any missing mapping will be mapped as `string`. If you are using custom transforms in Ember, you probably want to update these mappings.
License information available [here](LICENSE.md).
Contributors code of conduct is available [here](COC.md). Note that this COC **will** be enforced.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.