Configure django_coverage and fix bug in settings

1. Add required libs in requirements
2. ignore coverage html output
2. change settings accordingly
[ci skip]
Add factory for test

1. add factory boy
2. convert current test to use factory
3. small change on coding style
4. split test into modules
[ci skip]