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
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sensei2-1.1.2.tar.gz
(6.6 MB
view hashes)