Skip to main content

A tool to fill your database with random, but logical data

Project description

###Установка

pip install git+https://skycker@bitbucket.org/dvebukvy/sensei2.git@master

INSTALLED_APPS = (
...
'sensei2',
...
)

###Настройка

В `settings.py` проекта нужно определить два константы `SENSEI_PLUGINS` and `SENSEI_RULES`

Первая задает плагины и может быть пустой или отсутствовать. Вторая - обязательна и описывает как заполнять БД.

SENSEI_RULES = {
'topics': [
# {'app': 'web_site', 'model': 'TopicCategory', 'total': 1, 'presave_callback': lambda fields, rule, obj: tro(obj)},
{'app': 'web_site', 'model': 'TopicCategory', 'total': 1},
{'app': 'web_site', 'model': 'Topic', 'total': 1, 'plugins': {'title': 'sensei2.plugins.pretty_title'}}
],
'builders': [
{'app': 'web_site', 'model': 'Builder', 'total': 1,
'ignore': ['addresses', 'emails', 'web_sites', 'telephones']},
{'app': 'web_site', 'model': 'BuildAnnounce', 'total': 1}
],
'houses': [
{'app': 'web_site', 'model': 'HouseStatus', 'total': 1},
{'app': 'web_site', 'model': 'House', 'total': 3, 'override': {
'coordinates': lambda obj, field, sensei: '{0},{1}'.format(round(sensei.get_random_float(), 5),
round(sensei.get_random_float()), 5)}},
# {'app': 'web_site', 'model': 'Stage', 'total': 50},
# {'app': 'web_site', 'model': 'StageImage', 'total': 120}
],
'plans': [
{'app': 'web_site', 'model': 'FlatPlan', 'total': 300, 'ignore': ['total_price', 'total_area']},
{'app': 'web_site', 'model': 'FlatPlanParameter', 'total': 25},
{'app': 'web_site', 'model': 'Flat', 'total': 500},
]
}

###Использование

Как видите, правила заполнения разделены на группы, имя группы правил, которые нужно запустить,
передается аргументом менаджмент команды. Выполнение заполнения обернуто в декоратор `atomic` (работает одной транзакцией),
если что-то где-то падает, то в БД не записывается ничего для данной группы

./manage.py fill <rule_group_name>

Пример для объявления плагинов:

SENSEI_PLUGINS = ['sensei2.plugins.pretty_title', 'sensei2.plugins.independent_pretty_tittle']

### Расширенная документация

Полная документация доступна по ссылке http://wiki.dvebukvy.ru/page/42

Project details


Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page