Репозиторий состоит из 2 Django проектов:
- Feeder - cодержит одно приложение Main, aормирует json/xml данные из модели SomeData
- Receiver - cостоит из двух приложений
- mapper - cобственно выполняет маппинг
- Main - определяет возможную визуализацию работы с маппером, предоставляет модели для занесения данных
Определено 4 варианта формируемых из модели данных:
- rss - спомощью syndication /rssdata/
- atom - спомощью syndication /atomdata/
- чистый xml - спомощью Rest /xmldata/
- json - спомощью Rest /jsondata/
Основную логику mapper содержит в mapper.main
- Mapper - класс, который формирует объеты выполняющие маппинг данных
- url - адрес на который посылает запрос для получения данных
- trash_fields - список бесполезных оберточных полей (например для application/xml это ['root','list-item'])
- data - возвращает десериализованные данные, для корректного поиска и заполнения моделей необходимо производить очистку от оберточных полей, представляют собой список (или 1) словарей
- fill_model() - заполняет подходящие модели данными, формирует в бд запись содержащую различную информацию о текущем маппинге на основе модели MapperStat
$ cd ./Feeder
$ python manage.py runserver 8000
$ cd ../Receiver
$ python manage.py runserver 8080
$ python manage.py shell
>>> from mapper.main import *
>>> map1 = Mapper(url='http://localhost:8000/xmldata/', trash_fields=['root', 'list-item'])
>>> map1.data # Получаем десериализованные данные очищенные от trash_fields
>>> map1.fill_model() # Выполняется поиск подходящихъ моделей в текущем проекте, если есть, создаются их экземпляры и статистика маппинга