from django.db import models from django.core.files.storage import FileSystemStorage from django.conf import settings import os def name_artwork(inst, name): return '%s/artwork.%s'%(inst.abbr,name.split('.')[-1]) def name_css(inst, name): return '%s/style.css'%inst.abbr def name_banner(inst, name): return '%s/banner.%s'%(inst.abbr,name.split('.')[-1]) # Create your models here. class Show(models.Model): show_static_storage = FileSystemStorage(location=os.path.join(os.path.dirname(settings.MEDIA_ROOT), 'uploaded_resources'), base_url='showstatic') name = models.CharField( max_length=40, help_text="The full name of the show", verbose_name="Full Name" ) abbr = models.SlugField( max_length=5, unique=True, help_text="A short abbreviation of the show, for use in urls", verbose_name="Abbreviation" ) description = models.TextField( help_text="A description of the show", verbose_name="Description" ) release = models.DateField( help_text="The release date of the first episode of the show", verbose_name="Release Date" ) artwork = models.ImageField( storage=show_static_storage, upload_to = name_artwork, help_text="The artwork associated with the show. Should display the name of the show in a movie-poster esque format. Aspect ration should be about 2:3", verbose_name="Artwork" ) imdb = models.URLField( help_text="The url of the IMDb page for this show", verbose_name="IMDb Page" ) moderated = models.BooleanField( help_text="Wheter or not this show is user-moderated", verbose_name="User Moderated" ) css = models.FileField( storage=show_static_storage, upload_to=name_css, help_text="The CSS stylesheet applied to this show's page", verbose_name="Custom Style" ) banner = models.ImageField( storage=show_static_storage, upload_to = name_banner, help_text="A banner used for the show's page.", verbose_name="Artwork" )