from organization.media.models import Video, Audio
from organization.shop.models import *
+from cartridge.shop.admin import *
+
class ProductBlockProductInline(TabularDynamicInlineAdmin):
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)
--- /dev/null
+# -*- 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,
+ },
+ ),
+ ]
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)