added advertisement image import

This commit is contained in:
Anatoly 2019-11-16 00:18:07 +03:00
parent c293ae4b9c
commit 31399cea83
2 changed files with 64 additions and 3 deletions

View File

@ -1,7 +1,7 @@
from pprint import pprint
from transfer.models import Ads
from transfer.serializers.advertisement import AdvertisementSerializer
from transfer.serializers.advertisement import AdvertisementSerializer, AdvertisementImageSerializer
def transfer_advertisement():
@ -19,6 +19,24 @@ def transfer_advertisement():
pprint(f"transfer_product errors: {errors}")
def transfer_page():
errors = []
queryset = Ads.objects.exclude(href__isnull=True) \
.exclude(attachment_suffix_url__isnull=True) \
.exclude(site_id__isnull=True)
serialized_data = AdvertisementImageSerializer(data=list(queryset.values()), many=True)
if serialized_data.is_valid():
serialized_data.save()
else:
for d in serialized_data.errors: errors.append(d) if d else None
pprint(f"transfer_page errors: {errors}")
data_types = {
"commercial": [transfer_advertisement]
"commercial": [
transfer_advertisement,
transfer_page
]
}

View File

@ -1,8 +1,11 @@
from rest_framework import serializers
from main.models import SiteSettings
from transfer.models import Sites
from transfer.models import Sites, Ads
from advertisement.models import Advertisement
from main.models import Page
import requests
from rest_framework import status
class AdvertisementSerializer(serializers.ModelSerializer):
@ -48,3 +51,43 @@ class AdvertisementSerializer(serializers.ModelSerializer):
qs = SiteSettings.objects.filter(subdomain=subdomain)
if qs.exists():
return qs.first()
class AdvertisementImageSerializer(AdvertisementSerializer):
attachment_suffix_url = serializers.CharField()
class Meta(AdvertisementSerializer.Meta):
model = Page
fields = [
'id',
'attachment_suffix_url',
]
def validate(self, data):
data.update({
'image_url': self.get_absolute_image_url(data.pop('attachment_suffix_url')),
'advertisement': self.get_advertisement(data.pop('id')),
})
return data
def get_advertisement(self, old_id):
qs = Advertisement.objects.filter(old_id=old_id)
if qs.exists():
return qs.first()
def get_absolute_image_url(self, relative_path):
if relative_path:
absolute_image_url = f'https://1dc3f33f6d-3.optimicdn.com/gaultmillau.com/' \
f'{relative_path}'
response = requests.head(absolute_image_url)
if response.status_code == status.HTTP_200_OK:
return absolute_image_url
def create(self, validated_data):
advertisement = validated_data.get('advertisement')
image_url = validated_data.get('image_url')
if advertisement and image_url:
Page.objects.get_or_create(advertisement=advertisement, image_url=image_url, source=Page.MOBILE)
Page.objects.get_or_create(advertisement=advertisement, image_url=image_url, source=Page.WEB)