Base amiibo app

This commit is contained in:
Felipe Martín 2015-06-16 00:38:43 +02:00
parent 2b869100e4
commit bd9bbf457a
19 changed files with 193 additions and 6 deletions

1
.gitignore vendored
View File

@ -65,3 +65,4 @@ target/
# Local development
local_settings.py
media/

View File

View File

@ -0,0 +1,31 @@
# coding: utf-8
# django
from django.contrib import admin
# third party
import reversion
# amiibo
from .models import Collection, Amiibo
class CollectionAdmin(reversion.VersionAdmin):
list_display = ('name', 'amiibo_number', )
def amiibo_number(self, obj):
return obj.amiibos.count()
amiibo_number.short_description = 'Amiibos'
class AmiiboAdmin(reversion.VersionAdmin):
list_display_links = ('name', )
list_display = ('statue_image', 'name', 'collection',)
def statue_image(self, obj):
return '<img src="{}" width="80" />'.format(obj.statue.url)
statue_image.allow_tags = True
admin.site.register(Collection, CollectionAdmin)
admin.site.register(Amiibo, AmiiboAdmin)

View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import amiibofindr.apps.amiibo.models
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Amiibo',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('original_name', models.CharField(max_length=64)),
('slug', models.SlugField(max_length=64)),
('statue', models.ImageField(upload_to=amiibofindr.apps.amiibo.models.image_statue_upload)),
('name_es', models.CharField(max_length=64)),
('release_date', models.DateField(null=True, blank=True)),
],
),
migrations.CreateModel(
name='Collection',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('slug', models.SlugField(max_length=128)),
('name', models.CharField(max_length=128)),
],
),
migrations.AddField(
model_name='amiibo',
name='collection',
field=models.ForeignKey(related_name='amiibos_qs', to='amiibo.Collection'),
),
]

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
import amiibofindr.apps.amiibo.models
class Migration(migrations.Migration):
dependencies = [
('amiibo', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='amiibo',
name='box',
field=models.ImageField(null=True, upload_to=amiibofindr.apps.amiibo.models.image_box_upload, blank=True),
),
]

View File

@ -0,0 +1,55 @@
# coding: utf-8
# python
import os
# django
from django.db import models
#
# Upload_to helpers
def image_statue_upload(self, filename):
name, extension = os.path.splitext(filename)
return 'amiibos/{}/{}-statue{}'.format(
self.collection.slug, self.slug, extension)
def image_box_upload(self, filename):
name, extension = os.path.splitext(filename)
return 'amiibos/{}/{}-box{}'.format(
self.collection.slug, self.slug, extension)
#
# Models
class Collection(models.Model):
slug = models.SlugField(max_length=128)
name = models.CharField(max_length=128)
@property
def amiibos(self):
return self.amiibos_qs.all()
def __unicode__(self):
return self.name
class Amiibo(models.Model):
collection = models.ForeignKey(Collection, related_name='amiibos_qs')
original_name = models.CharField(max_length=64)
slug = models.SlugField(max_length=64)
statue = models.ImageField(upload_to=image_statue_upload)
box = models.ImageField(upload_to=image_box_upload, blank=True, null=True)
name_es = models.CharField(max_length=64)
release_date = models.DateField(null=True, blank=True)
def __unicode__(self):
return self.name
@property
def name(self):
return self.original_name

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

View File

@ -0,0 +1,6 @@
# coding: utf-8
# django
from django.contrib import admin
# core

View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@ -37,9 +37,17 @@ INSTALLED_APPS = (
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# third party
'reversion',
# own apps
'amiibofindr.apps.core',
'amiibofindr.apps.amiibo',
)
MIDDLEWARE_CLASSES = (
'reversion.middleware.RevisionMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
@ -87,7 +95,7 @@ DATABASES = {
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
TIME_ZONE = 'Europe/Madrid'
USE_I18N = True

View File

@ -17,7 +17,8 @@ DATABASES = {
}
}
# Media root
# Media
MEDIA_URL = '/media/'
MEDIA_ROOT = '/vagrant/media'
try:

View File

@ -13,9 +13,18 @@ Including another URLconf
1. Add an import: from blog import urls as blog_urls
2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls))
"""
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
# django
from django.conf.urls import include, url, patterns
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns(
'',
url(r'^admin/', include(admin.site.urls)),
]
)
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -17,3 +17,6 @@ django-suit==0.2.13
# NoSQL
redis==2.10.3
# Images
Pillow==2.8.2