From ede339a6c5a6e5995e7b95eb5e1a32a7b1863470 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Fri, 23 Sep 2016 18:12:06 +0200 Subject: [PATCH] Add product link inlines --- app/organization/shop/admin.py | 14 ++++++++ .../shop/migrations/0003_productlink.py | 32 +++++++++++++++++++ app/organization/shop/models.py | 5 +++ app/organization/shop/translation.py | 6 ++++ 4 files changed, 57 insertions(+) create mode 100644 app/organization/shop/migrations/0003_productlink.py diff --git a/app/organization/shop/admin.py b/app/organization/shop/admin.py index 990954e9..8bec442c 100644 --- a/app/organization/shop/admin.py +++ b/app/organization/shop/admin.py @@ -10,6 +10,8 @@ from organization.pages.models import * from organization.media.models import Video, Audio from organization.shop.models import * +from cartridge.shop.admin import * + class ProductBlockProductInline(TabularDynamicInlineAdmin): @@ -21,4 +23,16 @@ class ProductBlockAdmin(BaseTranslationModelAdmin): inlines = [ProductBlockProductInline, ] +class ProductLinkInline(TabularDynamicInlineAdmin): + + model = ProductLink + + +class CustomProductAdmin(ProductAdmin): + + inlines = [ProductLinkInline, ] + + admin.site.register(ProductBlock, ProductBlockAdmin) +admin.site.unregister(Product) +admin.site.register(Product, CustomProductAdmin) diff --git a/app/organization/shop/migrations/0003_productlink.py b/app/organization/shop/migrations/0003_productlink.py new file mode 100644 index 00000000..3c13bd0f --- /dev/null +++ b/app/organization/shop/migrations/0003_productlink.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-23 16:11 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('organization-core', '0004_auto_20160923_1141'), + ('shop', '0008_auto_20160907_1726'), + ('organization-shop', '0002_auto_20160923_1749'), + ] + + operations = [ + migrations.CreateModel( + name='ProductLink', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('url', models.URLField(blank=True, max_length=512, verbose_name='URL')), + ('link_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization-core.LinkType', verbose_name='link type')), + ('product', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='links', to='shop.Product', verbose_name='product')), + ], + options={ + 'verbose_name': 'link', + 'verbose_name_plural': 'links', + 'abstract': False, + }, + ), + ] diff --git a/app/organization/shop/models.py b/app/organization/shop/models.py index 983c8c59..cf1588a9 100644 --- a/app/organization/shop/models.py +++ b/app/organization/shop/models.py @@ -46,3 +46,8 @@ class PageProductBlock(models.Model): class Meta: verbose_name = _("product block") verbose_name_plural = _("product blocks") + + +class ProductLink(Link): + + product = models.ForeignKey(Product, verbose_name=_('product'), related_name='links', blank=True, null=True, on_delete=models.SET_NULL) diff --git a/app/organization/shop/translation.py b/app/organization/shop/translation.py index 37da75ba..57d5a266 100644 --- a/app/organization/shop/translation.py +++ b/app/organization/shop/translation.py @@ -20,3 +20,9 @@ class ProductBlockProductTranslationOptions(TranslationOptions): class PageProductBlockTranslationOptions(TranslationOptions): pass + + +@register(ProductLink) +class ProductLinkTranslationOptions(TranslationOptions): + + pass -- 2.39.5