--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/projrev/models.py Tue Aug 04 02:21:15 2009 -0400
@@ -0,0 +1,215 @@
+"""This module contains the data model for the project funded by NME
+through ICT.
+"""
+
+
+__authors__ = [
+ '"Madhusudan.C.S" <madhusudancs@gmail.com>',
+]
+
+
+from django.db import models
+from django.contrib.auth.models import User
+
+
+class Project(models.Model):
+ """Model class for NME funded projects.
+ """
+
+ LINE_ITEM_CHOICES = [('ME', 'Mechanical'),
+ ('CE', 'Chemical'),
+ ('EE', 'Electrical'),
+ ('AE', 'Aero Space'),
+ ('CS', 'Computer Science'),
+ ('IT', 'Information Technology'),
+ ]
+
+ STATE_CHOICES = [('MH', 'Maharashtra'),
+ ('KA', 'Karnataka'),
+ ('KL', 'Kerala'),
+ ('TN', 'Tamil Nadu'),
+ ('AP', 'Andra Pradesh'),
+ ]
+
+ DISTRICT_CHOICES = [('AD', 'Adilabad'),
+ ('RT', 'Ratnagiri'),
+ ('MU', 'Mumbai suburban'),
+ ('PU', 'Pune'),
+ ('PL', 'Palakkad'),
+ ('BN', 'Bangalore Urban district'),
+ ('CK', 'Chikmagalur District'),
+ ]
+
+ # Field containing the Line Item to which the project belongs to.
+ line_item = models.CharField(max_length=256,
+ choices=LINE_ITEM_CHOICES)
+
+ # Field containing the name of the institution working on the
+ # project.
+ institution = models.CharField(max_length=256)
+
+ # Field containing the state to which the institution belongs to.
+ state = models.CharField(max_length=256,
+ choices=STATE_CHOICES)
+
+ # Field containing the district to which the institution belongs
+ # to in the state of India.
+ district = models.CharField(max_length=256,
+ choices=DISTRICT_CHOICES)
+
+ # Field containing the autogenerated MICR code for the project.
+ micr_code = models.CharField(max_length=15, unique=True)
+
+ # Field containing the status of the project.
+ # status of the project can be one among the following
+ # New, Revised, Funded, Pilot, DPE
+ status = models.CharField(max_length=256,
+ choices=[('new', 'New'), ('pilot', 'Pilot')])
+
+ @classmethod
+ def getLineItem(cls, code):
+ """Get the State name from its code.
+ """
+
+ line_item_dict = dict(cls.LINE_ITEM_CHOICES)
+ return line_item_dict[code]
+
+ @classmethod
+ def getLineItem(cls, code):
+ """Get the State name from its code.
+ """
+
+ line_item_dict = dict(cls.LINE_ITEM_CHOICES)
+ return line_item_dict[code]
+
+ @classmethod
+ def getState(cls, code):
+ """Get the State name from its code.
+ """
+
+ state_dict = dict(cls.STATE_CHOICES)
+ return state_dict[code]
+
+ @classmethod
+ def getState(cls, code):
+ """Get the State name from its code.
+ """
+
+ state_dict = dict(cls.STATE_CHOICES)
+ return state_dict[code]
+
+ @classmethod
+ def getDistrict(cls, code):
+ """Get the State name from its code.
+ """
+
+ district_dict = dict(cls.DISTRICT_CHOICES)
+ return district_dict[code]
+
+class Proposal(models.Model):
+ """Model class for the project's proposal.
+ """
+
+ #: Field representing the relation to the corresponding project.
+ project = models.ForeignKey(Project)
+
+ #: Field containing the Line Item to which the project belongs to.
+ document = models.FileField(upload_to='proposals/%Y/%m/%d')
+
+ #: Field containing the date on which the document was submitted
+ submitted_on = models.DateTimeField(auto_now_add=True)
+
+ #: Field containing the reference to the user who submitted the proposal.
+ submitted_by = models.ForeignKey(User, null=True)
+
+ #: Field containing the revision number of the proposal belonging to
+ #: the Project.
+ rev_num = models.PositiveIntegerField()
+
+
+class Timeline(models.Model):
+ """Model class for the project's timeline.
+ """
+
+ #: Field representing the relation to the corresponding project.
+ project = models.ForeignKey(Project)
+
+ #: Field containing the date and time of submission of proposal.
+ submitted = models.DateTimeField()
+
+ #: Field containing the last date and time of review of proposal.
+ reviewed = models.DateTimeField()
+
+ #: Field containing the date and time of amount paid for the project.
+ amount_paid = models.DateTimeField()
+
+ #: Field containing the date and time of presentation of the project.
+ presentation = models.DateTimeField()
+
+ #: Field containing the date and time of monitoring of the project.
+ monitoring = models.DateTimeField()
+
+
+class Fund(models.Model):
+ """Model class for the project's funds.
+ """
+
+ #: Field representing the relation to the corresponding project.
+ project = models.ForeignKey(Project)
+
+ #: Field containing the amount sanctioned as funds for the project.
+ sanctioned = models.FloatField()
+
+ #: Field containing the expenses for the sanctioned fund for
+ #: the project.
+ expenses = models.FloatField()
+
+ #: Field containing the date and time on which the funds were
+ #: sanctioned for the project.
+ sanctioned_on = models.DateTimeField(auto_now_add=True)
+
+
+class Review(models.Model):
+ """Model class for the project's proposal's review.
+ """
+
+ #: Field representing the relation to the corresponding project.
+ project = models.ForeignKey(Project)
+
+ #: Field containing the comment entered along with the review.
+ comment = models.TextField()
+
+ #: Field representing the reference to the person who
+ #: did the review.
+ reviewer = models.ForeignKey(User, null=True)
+
+ #: Field containing the date and time of review of the proposal.
+ reviewed_on = models.DateTimeField(auto_now_add=True)
+
+ #: Field containing the review value for this attribute.
+ attribute1 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute2 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute3 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute4 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute5 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute6 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute7 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute8 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
+
+ attribute9 = models.PositiveSmallIntegerField(
+ choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])