summaryrefslogtreecommitdiff
path: root/tbc/models.py
blob: 7defae8659bbef3736341e9a2ee2b0b393066135 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from django.db import models
from django.contrib.auth.models import User
from PythonTBC import settings


CATEGORY = (("computer science", "Computer Science"),
            ("chemical engg", "Chemical Engg"),
            ("aerospace engg", "Aerospace Engg"),
            ("electronics engg", "Electronics Engg"),
            ("thermodynamics", "Thermodynamics"),
            ("mechanical engg", "Mechanical Engg"),
            ("mathematics", "Mathematics"))

GENDER = (("male", "Male"), 
          ("female", "Female"))

COURSES = (("mtech", "Mtech"),
           ("me", "ME"),
           ("msc", "MSc"),
           ("mscit", "MScIT"),
           ("mca", "MCA"),
           ("be", "BE"),
           ("bca", "BCA"),
           ("bscit", "BScIt"),
           ("others", "Others"))
           
ABOUT_PROJ = (("pythontbc website", "PythonTBC Website"),
              ("through friend", "Through Friend"),
              ("through prof/teacher", "Through Prof/Teacher"),
              ("through mailing list", "Through Mailing List"),
              ("through posters in college", "Through Posters in College"),
              ("others", "Others"))

def get_notebook_dir(instance, filename):
    return '%s/%s/%s' % (instance.book.contributor, instance.book.title, filename)


def get_image_dir(instance, filename):
    return '%s/%s/screenshots/%s' % (instance.book.contributor, instance.book.title, filename)


class Profile(models.Model):
    """Model to store profile of a user."""
    user = models.ForeignKey(User)
    about = models.CharField(max_length=256)
    insti_org = models.CharField(max_length=128)
    course = models.CharField(max_length=10, choices=COURSES)
    dept_desg = models.CharField(max_length=32)
    dob = models.DateField()
    gender = models.CharField(max_length=10, choices=GENDER)
    phone_no = models.CharField(max_length=15)
    about_proj = models.CharField(max_length=50, choices=ABOUT_PROJ)
    def __unicode__(self):
        name = self.user.first_name or 'Profile'
        return '%s'%(name)
        

class Reviewer(models.Model):
    name = models.CharField(max_length=32)
    email = models.EmailField()
    def __unicode__(self):
        name = self.name or 'Reviewer'
        return '%s'%(name)

class Book(models.Model):
    """Model to store the book details"""
    title = models.CharField(max_length=500)
    author = models.CharField(max_length=300)
    category = models.CharField(max_length=32, choices=CATEGORY)
    publisher_place = models.CharField(max_length=150)
    isbn = models.CharField(max_length=50)
    edition = models.CharField(max_length=15)
    year_of_pub = models.CharField(max_length=4)
    no_chapters = models.IntegerField(max_length=2)
    contributor = models.ForeignKey(Profile)
    reviewer = models.ForeignKey(Reviewer)
    approved = models.BooleanField(default=False)
    def __unicode__(self):
        name = self.title or 'Book'
        return '%s'%(name)
        
class Chapters(models.Model):
    name = models.CharField(max_length=200)
    notebook = models.FileField(upload_to=get_notebook_dir)
    book = models.ForeignKey(Book)
    def __unicode__(self):
        name = self.name or 'Chapter'
        return '%s'%(name)


class ScreenShots(models.Model):
    caption = models.CharField(max_length=128)
    image = models.FileField(upload_to=get_image_dir)
    book = models.ForeignKey(Book)
    def __unicode__(self):
        name = self.caption or 'ScreenShots'
        return '%s'%(name)