carousel fin
This commit is contained in:
parent
4cdcc8988b
commit
68182e837c
24
apps/main/migrations/0026_auto_20191101_0500.py
Normal file
24
apps/main/migrations/0026_auto_20191101_0500.py
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-11-01 05:00
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('main', '0025_carousel_is_parse'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='carousel',
|
||||||
|
name='content_type',
|
||||||
|
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='carousel',
|
||||||
|
name='object_id',
|
||||||
|
field=models.PositiveIntegerField(blank=True, default=None, null=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -130,7 +130,6 @@ class SiteSettingsQuerySet(models.QuerySet):
|
||||||
|
|
||||||
|
|
||||||
class SiteSettings(ProjectBaseMixin):
|
class SiteSettings(ProjectBaseMixin):
|
||||||
|
|
||||||
subdomain = models.CharField(max_length=255, db_index=True, unique=True,
|
subdomain = models.CharField(max_length=255, db_index=True, unique=True,
|
||||||
verbose_name=_('Subdomain'))
|
verbose_name=_('Subdomain'))
|
||||||
country = models.OneToOneField(Country, on_delete=models.PROTECT,
|
country = models.OneToOneField(Country, on_delete=models.PROTECT,
|
||||||
|
|
@ -282,8 +281,8 @@ class CarouselQuerySet(models.QuerySet):
|
||||||
|
|
||||||
class Carousel(models.Model):
|
class Carousel(models.Model):
|
||||||
"""Carousel model."""
|
"""Carousel model."""
|
||||||
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
|
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, blank=True, null=True, default=None)
|
||||||
object_id = models.PositiveIntegerField()
|
object_id = models.PositiveIntegerField(blank=True, null=True, default=None)
|
||||||
content_object = generic.GenericForeignKey('content_type', 'object_id')
|
content_object = generic.GenericForeignKey('content_type', 'object_id')
|
||||||
|
|
||||||
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
old_id = models.PositiveIntegerField(_('old id'), blank=True, null=True, default=None)
|
||||||
|
|
|
||||||
|
|
@ -1,36 +1,59 @@
|
||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from establishment.models import Establishment
|
||||||
from main.models import Carousel
|
from main.models import Carousel
|
||||||
|
from news.models import News
|
||||||
|
|
||||||
|
|
||||||
|
def get_obj_data(model, slug):
|
||||||
|
try:
|
||||||
|
obj = model.objects.get(slug=slug)
|
||||||
|
except model.DoesNotExist:
|
||||||
|
return None, None
|
||||||
|
else:
|
||||||
|
content_type = ContentType.objects.get_for_model(obj)
|
||||||
|
return obj.id, content_type.id
|
||||||
|
|
||||||
|
|
||||||
class CarouselSerializer(serializers.Serializer):
|
class CarouselSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
title = serializers.CharField(allow_null=True)
|
title = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
link = serializers.CharField(allow_null=True)
|
link = serializers.CharField(allow_null=True)
|
||||||
link_title = serializers.CharField(allow_null=True)
|
link_title = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
description = serializers.CharField(allow_null=True)
|
description = serializers.CharField(allow_null=True, allow_blank=True)
|
||||||
attachment_suffix_url = serializers.CharField(allow_null=True)
|
attachment_suffix_url = serializers.CharField(allow_null=True)
|
||||||
active = serializers.IntegerField()
|
active = serializers.IntegerField()
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
|
object_id, content_type_id = self.get_content_type(validated_data)
|
||||||
validated_data.update({
|
validated_data.update({
|
||||||
'active': bool(int(validated_data['active'])),
|
'active': bool(int(validated_data['active'])),
|
||||||
'content_type': self.get_content_type(validated_data),
|
'content_type_id': content_type_id,
|
||||||
'object_id': self.get_object_id(validated_data),
|
'object_id': object_id,
|
||||||
'content_object': self.get_content_object(validated_data),
|
'is_parse': bool(object_id),
|
||||||
'is_parse': False,
|
|
||||||
})
|
})
|
||||||
obj = Carousel.objects.create(**validated_data)
|
obj = Carousel.objects.create(**validated_data)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_content_type(data):
|
def get_content_type(data):
|
||||||
return None
|
link = data['link']
|
||||||
|
if not link:
|
||||||
|
return None
|
||||||
|
|
||||||
@staticmethod
|
obj_data = None, None
|
||||||
def get_object_id(data):
|
site = 'gaultmillau.com'
|
||||||
return None
|
if site in link:
|
||||||
|
data = link.split('/')
|
||||||
|
|
||||||
@staticmethod
|
try:
|
||||||
def get_content_object(data):
|
_type = data[3]
|
||||||
return None
|
except IndexError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if _type in ('news', 'pages'):
|
||||||
|
obj_data = get_obj_data(News, data[4])
|
||||||
|
elif _type == 'restaurant':
|
||||||
|
obj_data = get_obj_data(Establishment, data[4])
|
||||||
|
return obj_data
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user