app/projrev/models.py
changeset 0 c94bd9ae70d2
child 4 8d9da911ed7d
equal deleted inserted replaced
-1:000000000000 0:c94bd9ae70d2
       
     1 """This module contains the data model for the project funded by NME
       
     2 through ICT.
       
     3 """
       
     4 
       
     5 
       
     6 __authors__ = [
       
     7   '"Madhusudan.C.S" <madhusudancs@gmail.com>',
       
     8 ]
       
     9 
       
    10 
       
    11 from django.db import models
       
    12 from django.contrib.auth.models import User
       
    13 
       
    14 
       
    15 class Project(models.Model):
       
    16   """Model class for NME funded projects.
       
    17   """
       
    18 
       
    19   LINE_ITEM_CHOICES = [('ME', 'Mechanical'), 
       
    20                        ('CE', 'Chemical'),
       
    21                        ('EE', 'Electrical'),
       
    22                        ('AE', 'Aero Space'),
       
    23                        ('CS', 'Computer Science'),
       
    24                        ('IT', 'Information Technology'),
       
    25                       ]
       
    26 
       
    27   STATE_CHOICES = [('MH', 'Maharashtra'), 
       
    28                    ('KA', 'Karnataka'),
       
    29                    ('KL', 'Kerala'),
       
    30                    ('TN', 'Tamil Nadu'),
       
    31                    ('AP', 'Andra Pradesh'),
       
    32                   ]
       
    33 
       
    34   DISTRICT_CHOICES = [('AD', 'Adilabad'),
       
    35                       ('RT', 'Ratnagiri'),
       
    36                       ('MU', 'Mumbai suburban'),
       
    37                       ('PU', 'Pune'),
       
    38                       ('PL', 'Palakkad'),
       
    39                       ('BN', 'Bangalore Urban district'),
       
    40                       ('CK', 'Chikmagalur District'),
       
    41                      ]
       
    42 
       
    43   # Field containing the Line Item to which the project belongs to.
       
    44   line_item = models.CharField(max_length=256,
       
    45                                choices=LINE_ITEM_CHOICES)
       
    46 
       
    47   # Field containing the name of the institution working on the
       
    48   # project.
       
    49   institution = models.CharField(max_length=256)
       
    50 
       
    51   # Field containing the state to which the institution belongs to.
       
    52   state = models.CharField(max_length=256,
       
    53                            choices=STATE_CHOICES)
       
    54 
       
    55   # Field containing the district to which the institution belongs
       
    56   # to in the state of India.
       
    57   district = models.CharField(max_length=256,
       
    58                               choices=DISTRICT_CHOICES)
       
    59 
       
    60   # Field containing the autogenerated MICR code for the project.
       
    61   micr_code = models.CharField(max_length=15, unique=True)
       
    62 
       
    63   # Field containing the status of the project.
       
    64   # status of the project can be one among the following
       
    65   # New, Revised, Funded, Pilot, DPE
       
    66   status = models.CharField(max_length=256,
       
    67                             choices=[('new', 'New'), ('pilot', 'Pilot')])
       
    68 
       
    69   @classmethod
       
    70   def getLineItem(cls, code):
       
    71     """Get the State name from its code.
       
    72     """
       
    73 
       
    74     line_item_dict = dict(cls.LINE_ITEM_CHOICES)
       
    75     return line_item_dict[code]
       
    76 
       
    77   @classmethod
       
    78   def getLineItem(cls, code):
       
    79     """Get the State name from its code.
       
    80     """
       
    81 
       
    82     line_item_dict = dict(cls.LINE_ITEM_CHOICES)
       
    83     return line_item_dict[code]
       
    84 
       
    85   @classmethod
       
    86   def getState(cls, code):
       
    87     """Get the State name from its code.
       
    88     """
       
    89 
       
    90     state_dict = dict(cls.STATE_CHOICES)
       
    91     return state_dict[code]
       
    92 
       
    93   @classmethod
       
    94   def getState(cls, code):
       
    95     """Get the State name from its code.
       
    96     """
       
    97 
       
    98     state_dict = dict(cls.STATE_CHOICES)
       
    99     return state_dict[code]
       
   100 
       
   101   @classmethod
       
   102   def getDistrict(cls, code):
       
   103     """Get the State name from its code.
       
   104     """
       
   105 
       
   106     district_dict = dict(cls.DISTRICT_CHOICES)
       
   107     return district_dict[code]
       
   108 
       
   109 class Proposal(models.Model):
       
   110   """Model class for the project's proposal.
       
   111   """
       
   112 
       
   113   #: Field representing the relation to the corresponding project.
       
   114   project = models.ForeignKey(Project)
       
   115  
       
   116   #: Field containing the Line Item to which the project belongs to.
       
   117   document = models.FileField(upload_to='proposals/%Y/%m/%d')
       
   118 
       
   119   #: Field containing the date on which the document was submitted
       
   120   submitted_on = models.DateTimeField(auto_now_add=True)
       
   121 
       
   122   #: Field containing the reference to the user who submitted the proposal.
       
   123   submitted_by = models.ForeignKey(User, null=True)
       
   124 
       
   125   #: Field containing the revision number of the proposal belonging to
       
   126   #: the Project.
       
   127   rev_num = models.PositiveIntegerField()
       
   128 
       
   129 
       
   130 class Timeline(models.Model):
       
   131   """Model class for the project's timeline.
       
   132   """
       
   133 
       
   134   #: Field representing the relation to the corresponding project.
       
   135   project = models.ForeignKey(Project)
       
   136 
       
   137   #: Field containing the date and time of submission of proposal.
       
   138   submitted = models.DateTimeField()
       
   139 
       
   140   #: Field containing the last date and time of review of proposal.
       
   141   reviewed = models.DateTimeField()
       
   142 
       
   143   #: Field containing the date and time of amount paid for the project.
       
   144   amount_paid = models.DateTimeField()
       
   145 
       
   146   #: Field containing the date and time of presentation of the project.
       
   147   presentation = models.DateTimeField()
       
   148 
       
   149   #: Field containing the date and time of monitoring of the project.
       
   150   monitoring = models.DateTimeField()
       
   151 
       
   152 
       
   153 class Fund(models.Model):
       
   154   """Model class for the project's funds.
       
   155   """
       
   156 
       
   157   #: Field representing the relation to the corresponding project.
       
   158   project = models.ForeignKey(Project)
       
   159 
       
   160   #: Field containing the amount sanctioned as funds for the project.
       
   161   sanctioned = models.FloatField()
       
   162 
       
   163   #: Field containing the expenses for the sanctioned fund for
       
   164   #: the project.
       
   165   expenses = models.FloatField()
       
   166 
       
   167   #: Field containing the date and time on which the funds were
       
   168   #: sanctioned for the project.
       
   169   sanctioned_on = models.DateTimeField(auto_now_add=True)
       
   170 
       
   171 
       
   172 class Review(models.Model):
       
   173   """Model class for the project's proposal's review.
       
   174   """
       
   175 
       
   176   #: Field representing the relation to the corresponding project.
       
   177   project = models.ForeignKey(Project)
       
   178 
       
   179   #: Field containing the comment entered along with the review.
       
   180   comment = models.TextField()
       
   181 
       
   182   #: Field representing the reference to the person who
       
   183   #: did the review.
       
   184   reviewer = models.ForeignKey(User, null=True)
       
   185 
       
   186   #: Field containing the date and time of review of the proposal.
       
   187   reviewed_on = models.DateTimeField(auto_now_add=True)
       
   188 
       
   189   #: Field containing the review value for this attribute.
       
   190   attribute1 = models.PositiveSmallIntegerField(
       
   191       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   192   
       
   193   attribute2 = models.PositiveSmallIntegerField(
       
   194       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   195 
       
   196   attribute3 = models.PositiveSmallIntegerField(
       
   197       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   198 
       
   199   attribute4 = models.PositiveSmallIntegerField(
       
   200       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   201 
       
   202   attribute5 = models.PositiveSmallIntegerField(
       
   203       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   204 
       
   205   attribute6 = models.PositiveSmallIntegerField(
       
   206       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   207 
       
   208   attribute7 = models.PositiveSmallIntegerField(
       
   209       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   210 
       
   211   attribute8 = models.PositiveSmallIntegerField(
       
   212       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])
       
   213 
       
   214   attribute9 = models.PositiveSmallIntegerField(
       
   215       choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)])