#import multilingual
from django.db import models
from django.db.models.loading import get_model
import re
TYPE_IN_DESIGN_CHOICES=(
('FS', 'Flat Screen'),
('RC', 'Rotocolor'),
('RG', 'RGB'),
)
# return the maximum + 1 value of the code_name escaping any character
def voodoo_magic():
return max([
int (
[ group if group.isdigit() else '' for group in re.match('([a-zA-Z_-]*)([0-9]+)([a-zA-Z_-]*)',bin.code_name).groups()][1]
) for bin in get_model('designs','Design').objects.all()]) + 1
class Design(models.Model):
linked_product = models.ForeignKey('self',unique=True,blank=True,null=True)
create_date = models.DateField(auto_now=True)
update_date = models.DateField(auto_now_add=True)
code_name = models.CharField(max_length=20,unique=True,default = lambda: voodoo_magic())
internal_code_name = models.CharField(max_length=20,unique=True)
design_type = models.CharField(choices=TYPE_IN_DESIGN_CHOICES,max_length=2)
dpi = models.IntegerField(max_length=4)
enabled = models.BooleanField()
image_thumb = models.ImageField(upload_to='image_thumbs')
scale_1to1_preview = models.ImageField(upload_to='images_1to1_preview')
archive = models.FileField(upload_to='products',null=True)
def __str__(self):
return self.code_name
# helper method for visualization in list
def image_thumbnail(self):
return '
' % self.get_image_thumb_url()
image_thumbnail.allow_tags = True
def image_scale(self):
return '
' % self.get_scale_1to1_preview_url()
image_scale.allow_tags = True
#############
class Admin:
list_display = ('code_name','create_date','design_type','image_thumbnail','enabled','image_scale')
fields = (
(None,{
'classes': 'wide',
'fields': (('code_name','internal_code_name'),'enabled','dpi','design_type','linked_product','archive'),
}),
('Images',{
'fields':('image_thumb','scale_1to1_preview'),
}),
)
list_filter = ('design_type','dpi','enabled',)
search_fields = ('description',)
class Preview(models.Model):
belong_Design = models.ForeignKey(Design,edit_inline=models.TABULAR)
image_preview = models.ImageField(upload_to='images_preview',core=True)
class Color_preview(models.Model):
belong_Design = models.ForeignKey(Design,edit_inline=models.TABULAR)
image_color = models.ImageField(upload_to='image_color_preview',core=True)