From 511312bb288ce6faa9914b90094748af341106d7 Mon Sep 17 00:00:00 2001 From: michail Date: Fri, 4 Oct 2019 16:20:04 +0500 Subject: [PATCH] added transfer.py to partner --- apps/collection/transfer.py | 6 +- apps/establishment/transfer.py | 26 +++---- apps/gallery/transfer.py | 26 +++++++ apps/location/transfer.py | 2 + apps/news/transfer.py | 58 ++++++++++++++ apps/notification/transfer.py | 46 +++++++++++ apps/partner/transfer.py | 40 ++++++++++ apps/transfer/models.py | 138 +++++++++++++++++++++++++++++++++ docker-compose.yml | 20 ++--- 9 files changed, 336 insertions(+), 26 deletions(-) create mode 100644 apps/gallery/transfer.py create mode 100644 apps/news/transfer.py create mode 100644 apps/notification/transfer.py create mode 100644 apps/partner/transfer.py diff --git a/apps/collection/transfer.py b/apps/collection/transfer.py index e0c091c1..aac4a6a2 100644 --- a/apps/collection/transfer.py +++ b/apps/collection/transfer.py @@ -20,7 +20,7 @@ card = { } }, "relations": { - "country": "Country", + # "country": "Country", } }, "Guide": { @@ -32,8 +32,8 @@ card = { } }, "relations": { - "parent": "Guide", - "collection": "Collection" + # "parent": "Guide", + # "collection": "Collection" } } } diff --git a/apps/establishment/transfer.py b/apps/establishment/transfer.py index fca4619c..2305602d 100644 --- a/apps/establishment/transfer.py +++ b/apps/establishment/transfer.py @@ -29,17 +29,17 @@ card = { }, }, "relations": { - "address": "Address", - # "establishment_type": "EstablishmentType", - # "establishment_subtypes": "EstablishmentSubType", - "collections": "Collection", - # TODO: нашел schedules в legacy - # "schedule": "Timetable", - "award": "Award", - # "tags": "MetaDataContent", - "reviews": "Review", - # "comments": "Comment", - # "favorites": "Favorites" + # "address": "Address", + # # "establishment_type": "EstablishmentType", + # # "establishment_subtypes": "EstablishmentSubType", + # "collections": "Collection", + # # TODO: нашел schedules в legacy + # # "schedule": "Timetable", + # "award": "Award", + # # "tags": "MetaDataContent", + # "reviews": "Review", + # # "comments": "Comment", + # # "favorites": "Favorites" } }, @@ -51,7 +51,7 @@ card = { } }, "relations": { - "establishment": "Establishment" + # "establishment": "Establishment" } }, "ContactPhone": { @@ -61,7 +61,7 @@ card = { "phone": "phone" }, "relations": { - "establishment": "Establishment" + # "establishment": "Establishment" } } } diff --git a/apps/gallery/transfer.py b/apps/gallery/transfer.py new file mode 100644 index 00000000..50d99830 --- /dev/null +++ b/apps/gallery/transfer.py @@ -0,0 +1,26 @@ +""" +Структура fields: +key - поле в таблице postgres +value - поле или группа полей в таблице legacy + +В случае передачи группы полей каждое поле представляет собой кортеж, где: +field[0] - название аргумента +field[1] - название поля в таблице legacy +Опционально: field[2] - тип данных для преобразования + +""" + +card = { + "Image": { + "data_type": "objects", + "dependencies": None, + "fields": { + "MercuryImages": { + "image": "attachment_file_name" + } + } + }, + +} + +used_apps = None diff --git a/apps/location/transfer.py b/apps/location/transfer.py index 64334b28..8cff5d55 100644 --- a/apps/location/transfer.py +++ b/apps/location/transfer.py @@ -102,3 +102,5 @@ card = { } } + +used_apps = None diff --git a/apps/news/transfer.py b/apps/news/transfer.py new file mode 100644 index 00000000..06ee549d --- /dev/null +++ b/apps/news/transfer.py @@ -0,0 +1,58 @@ +""" +Структура 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) +""" + +card = { + # нету аналога для NewsType + "News": { + "data_type": "objects", + "dependencies": ("NewsType", "MetaDataContent", "Country", "Address"), + "fields": { + "NewsOlds": { + "title": ("title", "TJSONField"), + + # в NewsOlds нету аналога для поля subtitle модели News, также нет аналогов для полей start, end, playlist + # "subtitle": "" + + + # Поле "description" модели News имеет тип JSONField(где ключ - это язык, а значение - новость + # на языке который указан ключом), а поле "body" NewsOlds имеет тип html-разметки + # с вставками шаблонизатора Ruby + # "description" : "body" + }, + "relations":[ + # "address": "", + # "country": "", + # "tags": "", + # "news_type": "" + # отложено до выяснения Уточнения и вопросы по мигратору(Как поступать со сбором данных) + ] + } + }, +} + +used_apps = ("location", "main", ) diff --git a/apps/notification/transfer.py b/apps/notification/transfer.py new file mode 100644 index 00000000..b2cb97cc --- /dev/null +++ b/apps/notification/transfer.py @@ -0,0 +1,46 @@ +""" +Структура 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) +""" + +card = { + # нету аналога для NewsType + "News": { + "data_type": "objects", + "dependencies": ("User", ), + "fields": { + "EmailAddresses": { + "email": "email", + }, + "relations": [ + # отложено до выяснения Уточнения и вопросы по мигратору(Как поступать со сбором данных) + # "user": "" + ] + } + }, +} + +used_apps = ("account", ) diff --git a/apps/partner/transfer.py b/apps/partner/transfer.py new file mode 100644 index 00000000..393a5a85 --- /dev/null +++ b/apps/partner/transfer.py @@ -0,0 +1,40 @@ +""" +Структура 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 + + +""" + +card = { + "Partner": { + "data_type": "objects", + "dependencies": None, + "fields": { + "EstablishmentBacklinks": { + "url": "backlink_url", + }, + } + }, +} + +used_apps = None diff --git a/apps/transfer/models.py b/apps/transfer/models.py index 86d96532..3bb3d90c 100644 --- a/apps/transfer/models.py +++ b/apps/transfer/models.py @@ -10,6 +10,87 @@ from django.contrib.gis.db import models from transfer.mixins import MigrateMixin +class Ezuser(MigrateMixin): + using = 'legacy' + + contentobject_id = models.IntegerField(primary_key=True) + email = models.CharField(max_length=150) + login = models.CharField(max_length=150) + password_hash = models.CharField(max_length=50, blank=True, null=True) + password_hash_type = models.IntegerField() + facebook_id = models.BigIntegerField() + #TODO: в legacy нету таблицы 'CadLevel' + + # level = models.ForeignKey('CadLevel', models.DO_NOTHING) + points = models.IntegerField() + publish_fb_activity = models.IntegerField() + + class Meta: + managed = False + db_table = 'ezuser' + + +class Accounts(MigrateMixin): + using = 'legacy' + + uuid = models.CharField(max_length=24) + nickname = models.CharField(max_length=128, blank=True, null=True) + locale = models.CharField(max_length=5, blank=True, null=True) + country_code = models.CharField(max_length=3, blank=True, null=True) + city = models.CharField(max_length=32, blank=True, null=True) + role = models.CharField(max_length=16, blank=True, null=True) + consent_purpose = models.CharField(max_length=255, blank=True, null=True) + consent_at = models.DateTimeField(blank=True, null=True) + last_seen_at = models.DateTimeField(blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + email = models.CharField(unique=True, max_length=255) + is_admin = models.IntegerField(blank=True, null=True) + ezuser_id = models.IntegerField(blank=True, null=True) + ez_user_id = models.IntegerField(blank=True, null=True) + encrypted_password = models.CharField(max_length=255) + reset_password_token = models.CharField(unique=True, max_length=255, blank=True, null=True) + reset_password_sent_at = models.DateTimeField(blank=True, null=True) + remember_created_at = models.DateTimeField(blank=True, null=True) + sign_in_count = models.IntegerField() + current_sign_in_at = models.DateTimeField(blank=True, null=True) + last_sign_in_at = models.DateTimeField(blank=True, null=True) + current_sign_in_ip = models.CharField(max_length=255, blank=True, null=True) + last_sign_in_ip = models.CharField(max_length=255, blank=True, null=True) + confirmation_token = models.CharField(max_length=255, blank=True, null=True) + confirmed_at = models.DateTimeField(blank=True, null=True) + confirmation_sent_at = models.DateTimeField(blank=True, null=True) + unconfirmed_email = models.CharField(max_length=255, blank=True, null=True) + webpush_subscription = models.CharField(max_length=5000, blank=True, null=True) + + class Meta: + managed = False + db_table = 'accounts' + + +class Profiles(MigrateMixin): + using = 'legacy' + + firstname = models.CharField(max_length=255, blank=True, null=True) + lastname = models.CharField(max_length=255, blank=True, null=True) + gender = models.CharField(max_length=255, blank=True, null=True) + dob = models.DateField(blank=True, null=True) + email = models.CharField(max_length=255, blank=True, null=True) + phone = models.CharField(max_length=255, blank=True, null=True) + site_id = models.IntegerField(blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + unique_key = models.CharField(max_length=255, blank=True, null=True) + account = models.ForeignKey(Accounts, models.DO_NOTHING, blank=True, null=True) + state = models.CharField(max_length=255, blank=True, null=True) + requester_id = models.IntegerField(blank=True, null=True) + available_for_events = models.IntegerField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'profiles' + + class Cities(MigrateMixin): using = 'legacy' @@ -428,3 +509,60 @@ class Schedules(MigrateMixin): class Meta: managed = False db_table = 'schedules' + + +class MercuryImages(MigrateMixin): + using = 'legacy' + + attachment_file_name = models.CharField(max_length=255, blank=True, null=True) + attachment_content_type = models.CharField(max_length=255, blank=True, null=True) + attachment_file_size = models.IntegerField(blank=True, null=True) + attachment_updated_at = models.DateTimeField(blank=True, null=True) + created_at = models.DateTimeField(blank=True, null=True) + updated_at = models.DateTimeField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'mercury_images' + + +class NewsOlds(MigrateMixin): + using = 'legacy' + + title = models.CharField(max_length=255, blank=True, null=True) + body = models.TextField(blank=True, null=True) + slug = models.CharField(max_length=255, blank=True, null=True) + template = models.CharField(max_length=255, blank=True, null=True) + account = models.ForeignKey("Accounts", models.DO_NOTHING, blank=True, null=True) + # site = models.ForeignKey('Sites', models.DO_NOTHING, blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + image_file_name = models.CharField(max_length=255, blank=True, null=True) + image_content_type = models.CharField(max_length=255, blank=True, null=True) + image_file_size = models.IntegerField(blank=True, null=True) + image_updated_at = models.DateTimeField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'news_olds' + + +class EmailAddresses(MigrateMixin): + using = 'legacy' + + account = models.ForeignKey("Accounts", models.DO_NOTHING, blank=True, null=True) + partner_notification = models.IntegerField(blank=True, null=True) + ip = models.CharField(max_length=255, blank=True, null=True) + country_code = models.CharField(max_length=3, blank=True, null=True) + city = models.CharField(max_length=255, blank=True, null=True) + locale = models.CharField(max_length=5, blank=True, null=True) + created_at = models.DateTimeField() + updated_at = models.DateTimeField() + email = models.CharField(max_length=255, blank=True, null=True) + site_id = models.IntegerField(blank=True, null=True) + state = models.CharField(max_length=255, blank=True, null=True) + + class Meta: + managed = False + db_table = 'email_addresses' + diff --git a/docker-compose.yml b/docker-compose.yml index 3fb05f98..2ccd6de3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,8 +12,8 @@ services: - POSTGRES_DB=postgres ports: - "5436:5432" - networks: - - db-net +# networks: +# - db-net volumes: - gm-db:/var/lib/postgresql/data/ elasticsearch: @@ -28,8 +28,8 @@ services: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - discovery.type=single-node - xpack.security.enabled=false - networks: - - app-net +# networks: +# - app-net # RabbitMQ rabbitmq: image: rabbitmq:latest @@ -83,18 +83,18 @@ services: - worker - worker_beat - elasticsearch - networks: - - app-net - - db-net +# networks: +# - app-net +# - db-net volumes: - .:/code - gm-media:/media-data ports: - "8000:8000" -networks: - app-net: - db-net: +#networks: +# app-net: +# db-net: volumes: gm-db: