diff --git a/apps/collection/management/commands/import_collection.py b/apps/collection/management/commands/import_collection.py index 0b85e7da..c3b5d978 100644 --- a/apps/collection/management/commands/import_collection.py +++ b/apps/collection/management/commands/import_collection.py @@ -10,97 +10,97 @@ class Command(BaseCommand): help = 'Import collection' def handle(self, *args, **kwargs): - # raw_qs = Collections.objects.raw(''' - # select - # distinct - # a.id, - # a.collection_id, - # -- a.establishment_id, - # a.title, - # a.tag_name, - # a.slug, - # -- a.attachment_file_name, - # -- a.attachment_content_type, - # -- a.attachment_file_size, - # -- a.attachment_suffix_url, - # -- active as is_publish, - # a.country_code, - # -- a.geometries, - # a.description, - # min(a.start) AS start - # from - # ( - # select distinct - # c.id, - # c.id as collection_id, - # m.establishment_id, - # c.title, c.tag_name, - # c.slug, c.attachment_file_name, - # c.attachment_content_type, c.attachment_file_size, - # c.attachment_suffix_url, - # active, - # s.country_code_2 as country_code, - # c.geometries, - # c.title as description, - # m.created_at as start - # from collections as c - # join metadata m on m.value = c.tag_name - # join establishments e on e.id = m.establishment_id - # join sites s on s.id = c.site_id - # where m.`key` = 'collection' - # - # union - # - # select distinct - # c.id, - # c.id as collection_id, - # m.establishment_id, - # c.title, c.tag_name, - # c.slug, c.attachment_file_name, - # c.attachment_content_type, c.attachment_file_size, - # c.attachment_suffix_url, - # active, - # s.country_code_2 as country_code, - # c.geometries, - # c.title as description, - # m.created_at as start - # from collections as c - # join metadata m on m.value = c.slug - # join establishments e on e.id = m.establishment_id - # join sites s on s.id = c.site_id - # where m.`key` = 'collection' - # ) a - # group by - # a.id, - # a.collection_id, - # -- a.establishment_id, - # a.title, - # a.tag_name, - # a.slug, - # -- a.attachment_file_name, - # -- a.attachment_content_type, - # -- a.attachment_file_size, - # -- a.attachment_suffix_url, - # -- active as is_publish, - # a.country_code, - # a.description - # ''') - # objects = [] - # queryset = [vars(query) for query in raw_qs] - # for obj in queryset: - # # establishment = Establishment.objects.filter(old_id=obj['establishment_id']).first() - # lang = Language.objects.filter(locale=obj['country_code']) - # country = Country.objects.filter(languages__in=lang).first() - # if country: - # objects.append( - # Collection(name={"en-GB": obj['title']}, collection_type=Collection.ORDINARY, - # country=country, - # description=obj['description'], - # slug=obj['slug'], old_id=obj['collection_id'], - # start=obj['start'] - # ) - # ) - # Collection.objects.bulk_create(objects) + raw_qs = Collections.objects.raw(''' + select + distinct + a.id, + a.collection_id, + -- a.establishment_id, + a.title, + a.tag_name, + a.slug, + -- a.attachment_file_name, + -- a.attachment_content_type, + -- a.attachment_file_size, + -- a.attachment_suffix_url, + -- active as is_publish, + a.country_code, + -- a.geometries, + a.description, + min(a.start) AS start + from + ( + select distinct + c.id, + c.id as collection_id, + m.establishment_id, + c.title, c.tag_name, + c.slug, c.attachment_file_name, + c.attachment_content_type, c.attachment_file_size, + c.attachment_suffix_url, + active, + s.country_code_2 as country_code, + c.geometries, + c.title as description, + m.created_at as start + from collections as c + join metadata m on m.value = c.tag_name + join establishments e on e.id = m.establishment_id + join sites s on s.id = c.site_id + where m.`key` = 'collection' + + union + + select distinct + c.id, + c.id as collection_id, + m.establishment_id, + c.title, c.tag_name, + c.slug, c.attachment_file_name, + c.attachment_content_type, c.attachment_file_size, + c.attachment_suffix_url, + active, + s.country_code_2 as country_code, + c.geometries, + c.title as description, + m.created_at as start + from collections as c + join metadata m on m.value = c.slug + join establishments e on e.id = m.establishment_id + join sites s on s.id = c.site_id + where m.`key` = 'collection' + ) a + group by + a.id, + a.collection_id, + -- a.establishment_id, + a.title, + a.tag_name, + a.slug, + -- a.attachment_file_name, + -- a.attachment_content_type, + -- a.attachment_file_size, + -- a.attachment_suffix_url, + -- active as is_publish, + a.country_code, + a.description + ''') + objects = [] + queryset = [vars(query) for query in raw_qs] + for obj in queryset: + # establishment = Establishment.objects.filter(old_id=obj['establishment_id']).first() + lang = Language.objects.filter(locale=obj['country_code']) + country = Country.objects.filter(languages__in=lang).first() + if country: + objects.append( + Collection(name={"en-GB": obj['title']}, collection_type=Collection.ORDINARY, + country=country, + description=obj['description'], + slug=obj['slug'], old_id=obj['collection_id'], + start=obj['start'] + ) + ) + Collection.objects.bulk_create(objects) raw_qs = Collections.objects.raw(''' select