class RusImageField models ImageField Картинка переименованием русский

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class RusImageField(models.ImageField):
'Картинка с переименованием в русский регистр'
def get_internal_type(self):
return 'ImageField'
def get_filename(self,filename):
'автопереименовывающаяся картинка'
filename,ext = filename.decode(settings.DEFAULT_CHARSET).rsplit('.',1)
return u'%s%s.%s'%(self.upload_to,slugify(filename),ext.lower())
def get_preview_url(self):
'Возвращает сцылку на предпросмотровую фотку'
fn = self.get_filename
util.genPreview(settings.MEDIA_ROOT + fn) # Генерим картинку
return settings.MEDIA_URL + share.getPreviewName(fn)
def contribute_to_class(self, cls, name):
super(RusImageField, self).contribute_to_class(cls, name)
dispatcher.connect(_delete, signals.post_delete, sender=cls)
class Image(models.Model):
'Изображения прикрепленные к документам'
document = models.ForeignKey(Document,verbose_name=u'Родительский документ',edit_inline=True)
image = RusImageField(upload_to='images/',core=True,verbose_name=u'Изображение')
desc = models.CharField(u'Описание',max_length=50,help_text=u"Описание",core=True)
def get_picture_size(self):
return os.path.getsize(settings.MEDIA_ROOT + self.image)
def get_image_name(self):
return self.get_image_filename().rsplit(os.path.sep)[-1]
def __unicode__(self):
return '%s'%self.get_image_filename().rsplit('/',1)[-1]
def image_preview(self):
share.genPreview(settings.MEDIA_ROOT + self.image) # Генерим картинку
return mark_safe(u"<img border=0 src='%s' alt='' title = '%s' />" % (settings.MEDIA_URL + share.getPreviewName(self.image), self.desc))
image_preview.allow_tags = True
# Оснастка самой таблицы
class Meta:
verbose_name = u'Изображение'
verbose_name_plural = u'Изображения'
def save(self):
if not self.desc: self.desc = self.image.rsplit('.', 1)[0].rsplit(os.path.sep)[-1]
super(Image, self).save()