Changed AmiiboShop to M2M so we can use the same item for more amiibo

This commit is contained in:
Felipe Martín 2015-09-10 21:28:16 +02:00
parent 987d111a2b
commit 40fde99d15
4 changed files with 75 additions and 4 deletions

View File

@ -86,10 +86,13 @@ class AmiiboCardAdmin(ImportExportModelAdmin, reversion.VersionAdmin):
class AmiiboShopAdmin(ImportExportModelAdmin, reversion.VersionAdmin):
resource_class = AmiiboShopResource
list_display = ('amiibo', 'shop', 'check_price')
list_filter = ('amiibo', 'shop', )
list_display = ('amiibos_names', 'shop_name', 'shop', 'check_price')
list_filter = ('shop', 'shop_name', )
list_editable = ('check_price', )
def amiibos_names(self, obj):
return ", ".join(obj.amiibo.all().values_list('name_eu', flat=True))
class AmiiboPriceAdmin(reversion.VersionAdmin):
pass

View File

@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
BACKUP = {}
def backup(apps, schema_editor):
AmiiboShop = apps.get_model("amiibo", "AmiiboShop")
for shop in AmiiboShop.objects.all():
BACKUP[shop.pk] = {
'amiibo_id': shop.amiibo_id,
}
def restore(apps, schema_editor):
AmiiboShop = apps.get_model("amiibo", "AmiiboShop")
Amiibo = apps.get_model("amiibo", "Amiibo")
for pk, info in BACKUP.items():
a = AmiiboShop.objects.get(pk=pk)
a.amiibo.add(Amiibo.objects.get(pk=int(info['amiibo_id'])))
a.save()
class Migration(migrations.Migration):
dependencies = [
('amiibo', '0029_amiiboshop_shop_name'),
]
operations = [
migrations.RunPython(backup),
migrations.RemoveField(
model_name='amiiboshop',
name='amiibo',
),
migrations.AddField(
model_name='amiiboshop',
name='amiibo',
field=models.ManyToManyField(related_name='shops_set', to='amiibo.Amiibo'),
),
migrations.RunPython(restore),
]

View File

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
def convert(apps, schema_editor):
Amiibo = apps.get_model("amiibo", "Amiibo")
for amiibo in Amiibo.objects.all():
amiibo.name_en = amiibo.name_eu
amiibo.save()
class Migration(migrations.Migration):
dependencies = [
('amiibo', '0030_auto_20150910_2116'),
]
operations = [
migrations.RunPython(convert),
]

View File

@ -237,7 +237,7 @@ class AmiiboShop(models.Model):
(PACK, 'Pack'),
)
amiibo = models.ForeignKey(Amiibo, related_name='shops_set')
amiibo = models.ManyToManyField(Amiibo, related_name='shops_set')
shop = models.ForeignKey('shop.Shop', related_name='amiibos_set')
type = models.CharField(choices=ITEM_TYPES, default=FIGURE, max_length=1)
url = models.TextField()
@ -276,7 +276,7 @@ class AmiiboShop(models.Model):
return self.type == self.PACK
def __unicode__(self):
return u'{} in {}'.format(self.amiibo.name, self.shop.name)
return u'{} in {}'.format(self.amiibo.count(), self.shop.name)
class AmiiboPrice(models.Model):