added method to transfer advertisement
This commit is contained in:
parent
43fba17288
commit
4b4dc27a49
|
|
@ -50,7 +50,7 @@ class Advertisement(ProjectBaseMixin):
|
|||
|
||||
class Meta:
|
||||
verbose_name = _('Advertisement')
|
||||
verbose_name_plural = _('Advertisement')
|
||||
verbose_name_plural = _('Advertisements')
|
||||
|
||||
def __str__(self):
|
||||
return str(self.url)
|
||||
|
|
|
|||
|
|
@ -5,14 +5,18 @@ from transfer.serializers.advertisement import AdvertisementSerializer
|
|||
|
||||
|
||||
def transfer_advertisement():
|
||||
queryset = Ads.objects.filter(href__isnull=False).values_list('id', 'href', 'attachment_suffix_url')
|
||||
errors = []
|
||||
queryset = Ads.objects.exclude(href__isnull=True) \
|
||||
.exclude(attachment_suffix_url__isnull=True) \
|
||||
.exclude(site_id__isnull=True)
|
||||
|
||||
serialized_data = AdvertisementSerializer(data=list(queryset.values()), many=True)
|
||||
|
||||
if serialized_data.is_valid():
|
||||
serialized_data.save()
|
||||
else:
|
||||
pprint(f"News serializer errors: {serialized_data.errors}")
|
||||
for d in serialized_data.errors: errors.append(d) if d else None
|
||||
pprint(f"transfer_product errors: {errors}")
|
||||
|
||||
|
||||
data_types = {
|
||||
|
|
|
|||
|
|
@ -839,7 +839,7 @@ class PageMetadata(MigrateMixin):
|
|||
class Ads(MigrateMixin):
|
||||
using = 'legacy'
|
||||
|
||||
site_id = models.IntegerField(blank=True, null=True)
|
||||
site = models.ForeignKey('Sites', on_delete=models.DO_NOTHING)
|
||||
href = models.CharField(max_length=255, blank=True, null=True)
|
||||
start_at = models.DateTimeField(blank=True, null=True)
|
||||
expire_at = models.DateTimeField(blank=True, null=True)
|
||||
|
|
|
|||
|
|
@ -1,22 +1,51 @@
|
|||
from rest_framework import serializers
|
||||
from main.models import SiteSettings
|
||||
|
||||
from transfer.models import Sites
|
||||
from advertisement.models import Advertisement
|
||||
|
||||
|
||||
class AdvertisementSerializer(serializers.Serializer):
|
||||
class AdvertisementSerializer(serializers.ModelSerializer):
|
||||
|
||||
id = serializers.IntegerField()
|
||||
href = serializers.CharField()
|
||||
attachment_suffix_url = serializers.CharField(allow_null=True)
|
||||
site_id = serializers.PrimaryKeyRelatedField(
|
||||
queryset=Sites.objects.all())
|
||||
start_at = serializers.DateTimeField(allow_null=True)
|
||||
expire_at = serializers.DateTimeField(allow_null=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
model = Advertisement
|
||||
fields = [
|
||||
'id',
|
||||
'href',
|
||||
'site_id',
|
||||
'start_at',
|
||||
'expire_at',
|
||||
]
|
||||
|
||||
def validate(self, data):
|
||||
data.update({
|
||||
'old_id': data.pop('id'),
|
||||
'url': data.pop('href'),
|
||||
'image_url': data.pop('attachment_suffix_url'),
|
||||
'width': 300,
|
||||
'height': 250,
|
||||
'site': self.get_site(data.pop('site_id')),
|
||||
'start': data.pop('start_at', None),
|
||||
'end': data.pop('expire_at', None),
|
||||
})
|
||||
return data
|
||||
|
||||
def create(self, validated_data):
|
||||
return Advertisement.objects.create(**validated_data)
|
||||
site = validated_data.pop('site')
|
||||
obj, _ = self.Meta.model.objects.get_or_create(validated_data)
|
||||
|
||||
import ipdb;ipdb.set_trace()
|
||||
if site and site not in obj.sites.all():
|
||||
obj.sites.add(site)
|
||||
return obj
|
||||
|
||||
def get_site(self, subdomain):
|
||||
subdomain = subdomain.country_code_2 if isinstance(subdomain, Sites) else subdomain
|
||||
qs = SiteSettings.objects.filter(subdomain=subdomain)
|
||||
if qs.exists():
|
||||
return qs.first()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user