Edited transfer.py for news, partner, reviews, comment.
Added transfer.py for recipe.
This commit is contained in:
parent
4cc9fabd73
commit
b2b8798c6c
|
|
@ -25,21 +25,23 @@ psql_field_type - тип уникального поля в postgresql
|
|||
"""
|
||||
|
||||
card = {
|
||||
# как работать с GenericForeignKey(content_type) - ?
|
||||
"Comment": {
|
||||
"data_type": "objects",
|
||||
"dependencies": ("User",),
|
||||
"fields": {
|
||||
"text": "comment",
|
||||
"mark": "mark"
|
||||
# как работать с GenericForeignKey - ?
|
||||
# "content_object" : ""
|
||||
"Comments": {
|
||||
"text": "comment",
|
||||
"mark": ("mark", "PositiveIntegerField")
|
||||
# как работать с GenericForeignKey - ?
|
||||
# "content_object" : ""
|
||||
},
|
||||
},
|
||||
"relations": {
|
||||
# нужен ответ по вопросу Как поступать со сбором данных
|
||||
# "Accounts": [
|
||||
# (("account_id", "account_id"),
|
||||
# ("User", "id", "user", "PositiveIntegerField"))
|
||||
# ]
|
||||
"Accounts": [
|
||||
(("account", None),
|
||||
("User", "user", None, None))
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,12 +28,29 @@ NOTE: среди legacy таблиц совпадение для таблицы
|
|||
|
||||
card = {
|
||||
# нету аналога для NewsType
|
||||
"NewsType": {
|
||||
"data_type": "dictionaries",
|
||||
"dependencies": None,
|
||||
"fields": {
|
||||
"Pages": {
|
||||
# будет только один тип новости "News"
|
||||
# значения для поля "name" берутся из поля "type" legacy модели "Pages", притом type="News"
|
||||
# Mysql - select distinct(type) from pages;
|
||||
"name": "name"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"News": {
|
||||
"data_type": "objects",
|
||||
"dependencies": ("NewsType", "MetaDataContent", "Country", "Address"),
|
||||
"fields": {
|
||||
"NewsOlds": {
|
||||
"title": ("title", "TJSONField"),
|
||||
# нету аналогов для start, end, playlist
|
||||
"Pages": {
|
||||
"state": ("state", "PositiveSmallIntegerField"),
|
||||
"template": ("template", "PositiveIntegerField"),
|
||||
"image_url": ("attachment_file_name", "URLField"),
|
||||
"preview_image_url": ("attachment_file_name", "URLField"),
|
||||
|
||||
# в NewsOlds нету аналога для поля subtitle модели News, также нет аналогов для полей start, end, playlist
|
||||
# "subtitle": ""
|
||||
|
|
@ -44,12 +61,22 @@ card = {
|
|||
# с вставками шаблонизатора Ruby
|
||||
# "description" : "body"
|
||||
},
|
||||
"relations":[
|
||||
# "address": "",
|
||||
# "country": "",
|
||||
# "tags": "",
|
||||
# "news_type": ""
|
||||
# отложено до выяснения Уточнения и вопросы по мигратору(Как поступать со сбором данных)
|
||||
"relations": {
|
||||
"PageTexts": {
|
||||
"key": "page_id",
|
||||
"fields": {
|
||||
"title": ("title", "TJSONField"),
|
||||
"description": ("body", "TJSONField"),
|
||||
"slug": ("slug", "SlugField")
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
# нету аналога для поля tags
|
||||
"relations": {
|
||||
"Pages": [
|
||||
((None, "type"),
|
||||
("NewsType", "news_type", "name", "CharField"))
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ card = {
|
|||
"data_type": "objects",
|
||||
"dependencies": None,
|
||||
"fields": {
|
||||
# из EstablishmentBacklinks выбирать только те у которых type="Partner"
|
||||
"EstablishmentBacklinks": {
|
||||
"url": "backlink_url",
|
||||
},
|
||||
|
|
|
|||
86
apps/recipe/transfer.py
Normal file
86
apps/recipe/transfer.py
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
"""
|
||||
|
||||
Структура записи в card:
|
||||
Название таблицы в postgresql: {
|
||||
"data_type": "тип данных в таблице (словарь, объект, дочерний объект и так далее)",
|
||||
"dependencies": кортеж с зависимостями от других таблиц в postgresql,
|
||||
"fields": список полей для таблицы postgresql, пример:
|
||||
{
|
||||
"название legacy таблицы": {
|
||||
список полей для переноса, пример структуры описан далее
|
||||
},
|
||||
"relations": список зависимостей legacy-таблицы, пример:
|
||||
{
|
||||
# имеет внешний ключ на "название legacy таблицы" из "fields"
|
||||
"название legacy таблицы": {
|
||||
"key": ключ для связи. Строка, если тип поля в legacy таблице - ForeignKey, или кортеж из названия поля
|
||||
в дочерней таблице и названия поля в родительской таблице в ином случае
|
||||
"fields": {
|
||||
список полей для переноса, пример структуры описан далее
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"relations": список внешних ключей таблицы postgresql, пример структуры описан далее
|
||||
{
|
||||
"Cities": [(
|
||||
(None, "region_code"),
|
||||
("Region", "region", "code", "CharField")),
|
||||
((None, "country_code_2"),
|
||||
("Country", "country", "code", "CharField"))
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Структура fields:
|
||||
key - поле в таблице postgres
|
||||
value - поле или группа полей в таблице legacy
|
||||
|
||||
В случае передачи группы полей каждое поле представляет собой кортеж, где:
|
||||
field[0] - название аргумента
|
||||
field[1] - название поля в таблице legacy
|
||||
Опционально: field[2] - тип данных для преобразования
|
||||
|
||||
Структура внешних ключей:
|
||||
"legacy_table" - спикок кортежей для сопоставления полей
|
||||
"legacy_table": [
|
||||
(("legacy_key", "legacy_field"),
|
||||
("psql_table", "psql_key", "psql_field", "psql_field_type"))
|
||||
], где:
|
||||
legacy_table - название модели legacy
|
||||
legacy_key - ForeignKey в legacy
|
||||
legacy_field - уникальное поле в модели legacy для сопоставления с postgresql
|
||||
psql_table - название модели psql
|
||||
psql_key - ForeignKey в postgresql
|
||||
psql_field - уникальное поле в модели postgresql для сопоставления с legacy
|
||||
psql_field_type - тип уникального поля в postgresql
|
||||
|
||||
|
||||
NOTE: среди legacy таблиц совпадение для таблицы Address не найдено (Возможно для Address подходит Locations в legacy)
|
||||
"""
|
||||
|
||||
# значения берутся из legacy модели "Pages", притом type="Recipe"
|
||||
card = {
|
||||
"Recipe": {
|
||||
"data_type": "objects",
|
||||
"dependencies": None,
|
||||
"fields": {
|
||||
"Pages": {
|
||||
"state": ("state", "PositiveSmallIntegerField")
|
||||
},
|
||||
"relations": {
|
||||
"PageTexts": {
|
||||
"key": "page_id",
|
||||
"fields": {
|
||||
"title": ("title", "TJSONField"),
|
||||
"description": ("body", "TJSONField")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
used_apps = None
|
||||
|
|
@ -26,33 +26,39 @@ psql_field_type - тип уникального поля в postgresql
|
|||
"""
|
||||
|
||||
card = {
|
||||
# как работать с GenericForeignKey(content_type) - ?
|
||||
# как работать с ForeignKey на самого себя(self), поле "child"
|
||||
# вопрос с внешним ключом language на таблицу Language
|
||||
"Review": {
|
||||
"data_type": "objects",
|
||||
"dependencies": ("User",),
|
||||
"dependencies": ("User", "Language", "Review"),
|
||||
"fields": {
|
||||
"Reviews": {
|
||||
"published_at": "published_at",
|
||||
"vintage": "vintage",
|
||||
# как работать с GenericForeignKey - ?
|
||||
"status": ("aasm_state", "PositiveSmallIntegerField")
|
||||
|
||||
# "content_object": ""
|
||||
},
|
||||
"ReviewTexts": {
|
||||
# полу text в модели Review имеет тип TJSONField, а поле text в модели ReviewTexts имеет тип TextField
|
||||
# при их сопоставлении использовать поле locale модели ReviewTexts
|
||||
"text": "text"
|
||||
}
|
||||
"relations": {
|
||||
"ReviewTexts": {
|
||||
"key": "review",
|
||||
"fields": {
|
||||
# полу text в модели Review имеет тип TJSONField, а поле text в модели ReviewTexts имеет тип TextField
|
||||
# при их сопоставлении использовать поле locale модели ReviewTexts
|
||||
"text": ("text", "TJSONField")
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
"relations": {
|
||||
# вопрос с внешним ключом language
|
||||
|
||||
# нужен ответ по вопросу как поступать со сбором данных
|
||||
# "Accounts": [
|
||||
# (("account_id", "account_id"),
|
||||
# ("User", "id", "reviewer", "PositiveIntegerField"))
|
||||
# ]
|
||||
"Accounts": [
|
||||
(("account", None),
|
||||
("User", "reviewer", None, None))
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
used_apps = ("account", )
|
||||
used_apps = ("account", "translation")
|
||||
Loading…
Reference in New Issue
Block a user