/KudaGo

task

Primary LanguagePython

KudaGo

Описание

Репозиторий состоит из 2 Django проектов:

  • Feeder - cодержит одно приложение Main, aормирует json/xml данные из модели SomeData
  • Receiver - cостоит из двух приложений
    • mapper - cобственно выполняет маппинг
    • Main - определяет возможную визуализацию работы с маппером, предоставляет модели для занесения данных

Feeder

Определено 4 варианта формируемых из модели данных:

  • rss - спомощью syndication /rssdata/
  • atom - спомощью syndication /atomdata/
  • чистый xml - спомощью Rest /xmldata/
  • json - спомощью Rest /jsondata/

Receiver

Основную логику 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() # Выполняется поиск подходящихъ моделей в текущем проекте, если есть, создаются их экземпляры и статистика маппинга