| 1 | from django.db import models
|
|---|
| 2 | from datetime import datetime, timedelta
|
|---|
| 3 |
|
|---|
| 4 | class User(models.Model):
|
|---|
| 5 | SEX = (
|
|---|
| 6 | ('M', 'Male'),
|
|---|
| 7 | ('F', 'Female'),
|
|---|
| 8 | )
|
|---|
| 9 | fname = models.CharField(max_length=255,verbose_name=u"First Name")
|
|---|
| 10 | lname= models.CharField(max_length=255)
|
|---|
| 11 | email=models.EmailField(max_length=255)
|
|---|
| 12 | mobile= models.CharField(max_length=20)
|
|---|
| 13 | skype= models.CharField(max_length=20,null=True,blank=True)
|
|---|
| 14 | gender = models.CharField(max_length=1,choices=SEX,blank=False,default="")
|
|---|
| 15 | dob = models.DateField()
|
|---|
| 16 | qualification = models.ForeignKey('Qualification')
|
|---|
| 17 | website = models.URLField(max_length=200,null=True,blank=True)
|
|---|
| 18 | address = models.TextField(null=True,blank=True)
|
|---|
| 19 | skills = models.ForeignKey('Skills')
|
|---|
| 20 | experience = models.IntegerField(null=True,blank=True,choices=((int(x), x) for x in range(1,7)))
|
|---|
| 21 | remarks = models.TextField(null=True,blank=True)
|
|---|
| 22 | join_date=models.DateTimeField(editable=False,default=datetime.now())
|
|---|
| 23 | profile_pic = models.ImageField(upload_to = 'user/',null=True,blank=True)
|
|---|
| 24 | thumb_pic = models.ImageField(upload_to = 'user/thumb/',null=True,blank=True)
|
|---|
| 25 |
|
|---|
| 26 | def delete(self, *args, **kwargs):
|
|---|
| 27 | storage, path = self.profile_pic.storage, self.profile_pic.path
|
|---|
| 28 | storage1, path1 = self.thumb_pic.storage, self.thumb_pic.path
|
|---|
| 29 | super(User, self).delete(*args, **kwargs)
|
|---|
| 30 | storage.delete(path)
|
|---|
| 31 | storage1.delete(path1)
|
|---|
| 32 |
|
|---|
| 33 | def save(self, *args, **kwargs):
|
|---|
| 34 | try:
|
|---|
| 35 | this = User.objects.get(id=self.id)
|
|---|
| 36 | create_thumbnail(self)
|
|---|
| 37 | if this.profile_pic != self.profile_pic:
|
|---|
| 38 | this.profile_pic.delete(save=False)
|
|---|
| 39 | this.thumb_pic.delete(save=False)
|
|---|
| 40 | except: pass
|
|---|
| 41 | super(User, self).save(*args, **kwargs)
|
|---|
| 42 |
|
|---|
| 43 | class Qualification(models.Model):
|
|---|
| 44 | qualification_name= models.CharField(max_length=200)
|
|---|
| 45 | def __str__(self):
|
|---|
| 46 | return '%s' % (self.qualification_name)
|
|---|
| 47 |
|
|---|
| 48 | class Skills(models.Model):
|
|---|
| 49 | skills= models.CharField(max_length=200)
|
|---|
| 50 | def __str__(self):
|
|---|
| 51 | return '%s' % (self.skills)
|
|---|
| 52 |
|
|---|
| 53 | def default_start_time():
|
|---|
| 54 | now = datetime.now()
|
|---|
| 55 | start = now.replace(hour=22, minute=0, second=0, microsecond=0)
|
|---|
| 56 | return start if start > now else start + timedelta(days=1)
|
|---|
| 57 |
|
|---|
| 58 | def create_thumbnail(obj):
|
|---|
| 59 | if not obj.profile_pic:
|
|---|
| 60 | return
|
|---|
| 61 | from PIL import Image
|
|---|
| 62 | from cStringIO import StringIO
|
|---|
| 63 | from django.core.files.uploadedfile import SimpleUploadedFile
|
|---|
| 64 | import os
|
|---|
| 65 | THUMBNAIL_SIZE = (200,200)
|
|---|
| 66 | DJANGO_TYPE = obj.profile_pic.file.content_type
|
|---|
| 67 | if DJANGO_TYPE == 'image/jpeg':
|
|---|
| 68 | PIL_TYPE = 'jpeg'
|
|---|
| 69 | FILE_EXTENSION = 'jpg'
|
|---|
| 70 | elif DJANGO_TYPE == 'image/png':
|
|---|
| 71 | PIL_TYPE = 'png'
|
|---|
| 72 | FILE_EXTENSION = 'png'
|
|---|
| 73 | image = Image.open(StringIO(obj.profile_pic.read()))
|
|---|
| 74 | image.thumbnail(THUMBNAIL_SIZE, Image.ANTIALIAS)
|
|---|
| 75 | temp_handle = StringIO()
|
|---|
| 76 | image.save(temp_handle, PIL_TYPE)
|
|---|
| 77 | temp_handle.seek(0)
|
|---|
| 78 | suf = SimpleUploadedFile(os.path.split(obj.profile_pic.name)[-1],temp_handle.read(), content_type=DJANGO_TYPE)
|
|---|
| 79 | obj.thumb_pic.save('%s.%s'%(os.path.splitext(suf.name)[0],FILE_EXTENSION), suf, save=False)
|
|---|