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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sensei2, version 1.1.2
Filename, size File type Python version Upload date Hashes
Filename, size sensei2-1.1.2.tar.gz (6.6 MB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page