Merge branch 'feature/transfer-ad' into develop

# Conflicts:
#	apps/advertisement/transfer_data.py
#	apps/transfer/serializers/advertisement.py
This commit is contained in:
Anatoly 2019-11-16 00:19:23 +03:00
commit 6c82af1940
2 changed files with 64 additions and 3 deletions

View File

@ -1,7 +1,7 @@
from pprint import pprint from pprint import pprint
from transfer.models import Ads from transfer.models import Ads
from transfer.serializers.advertisement import AdvertisementSerializer from transfer.serializers.advertisement import AdvertisementSerializer, AdvertisementImageSerializer
def transfer_advertisement(): def transfer_advertisement():
@ -19,6 +19,24 @@ def transfer_advertisement():
pprint(f"transfer_product errors: {errors}") 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 = { data_types = {
"commercial": [transfer_advertisement] "commercial": [
transfer_advertisement,
transfer_page
]
} }

View File

@ -1,8 +1,11 @@
from rest_framework import serializers from rest_framework import serializers
from main.models import SiteSettings from main.models import SiteSettings
from transfer.models import Sites from transfer.models import Sites, Ads
from advertisement.models import Advertisement from advertisement.models import Advertisement
from main.models import Page
import requests
from rest_framework import status
class AdvertisementSerializer(serializers.ModelSerializer): class AdvertisementSerializer(serializers.ModelSerializer):
@ -48,3 +51,43 @@ class AdvertisementSerializer(serializers.ModelSerializer):
qs = SiteSettings.objects.filter(subdomain=subdomain) qs = SiteSettings.objects.filter(subdomain=subdomain)
if qs.exists(): if qs.exists():
return qs.first() 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)