Project

General

Profile

Statistics
| Branch: | Revision:

root / crm / robocrm / models.py @ b2863bff

History | View | Annotate | Download (3.77 KB)

1
from django.db import models
2
from django.contrib.auth.models import User
3
from django.db.models.signals import post_save
4

    
5
# Machine Model
6
class Machine(models.Model):
7
  type = models.CharField(max_length=20)
8
  id = models.CharField(max_length=10, primary_key=True)
9
  maint = models.BooleanField(default=False)
10
  dstart = models.DateTimeField()
11
  dend = models.DateTimeField()
12

    
13
# User Model
14
class RoboUser(models.Model):
15
  # Field is required when using profiles 
16
  user = models.OneToOneField(User)
17

    
18
  # Roboclub RFID Card number
19
  rfid = models.DecimalField(max_digits=10, decimal_places=0)
20
  
21
  # Roboclub Shop Access Permissions
22
  machines = models.ManyToManyField(Machine)
23

    
24
  # Cell Phone
25
  cell = models.DecimalField(max_digits=10, decimal_places=0)
26

    
27
  # Class Level
28
  FRESHMAN = 'FR'
29
  SOPHOMORE = 'SO'
30
  JUNIOR = 'JR'
31
  SENIOR = 'SR'
32
  MASTERS = 'MS'
33
  DOCTORAL = 'DR'
34
  CLASS_LEVEL_CHOICES = (
35
      (FRESHMAN, 'Freshman'),
36
      (SOPHOMORE, 'Sophomore'),
37
      (JUNIOR, 'Junior'),
38
      (SENIOR, 'Senior'),
39
      (MASTERS, 'Masters'),
40
      (DOCTORAL, 'Doctoral'),
41
  )
42
  class_level = models.CharField(max_length=2, 
43
                                 choices=CLASS_LEVEL_CHOICES,
44
                                 default=FRESHMAN)
45

    
46
  # Graduation Year
47
  grad_year = models.DecimalField(max_digits=4, decimal_places=0)
48

    
49
  # Primary and Secondary Major/Minors
50
  major = models.CharField(max_length=20)
51
  sec_major_one = models.CharField(max_length=20)
52
  sec_major_two = models.CharField(max_length=20)
53

    
54
  #Club Rank
55
  JUNIOR_MEM = 'JM'
56
  SENIOR_MEM = 'SM'
57
  OFFICER = 'OM'
58
  CLUB_RANK_CHOICES = (
59
      (JUNIOR_MEM, 'Junior Member'),
60
      (SENIOR_MEM, 'Senior Member'),
61
      (OFFICER, 'Officer'),
62
  )
63
  club_rank = models.CharField(max_length=2, 
64
                               choices=CLUB_RANK_CHOICES,
65
                               default=JUNIOR_MEM)
66
  
67
  # Roboclub Transaction Info
68
  dues_paid = models.DateField()
69
  tshirt_rec = models.BooleanField(default=False)
70
  
71
  # Shop and E-Bench Status
72
  GOOD = 'GD'
73
  FIRST_WARN = 'FS'
74
  SECOND_WARN = 'SD'
75
  SEM_BAN = 'SB'
76
  CLUB_BAN = 'CB'
77
  STATUS_CHOICES = (
78
      (GOOD, 'Good Standing'),
79
      (FIRST_WARN, 'First Warning Recieved'),
80
      (SECOND_WARN, 'Second Warning Recieved'),
81
      (SEM_BAN, 'Semester Ban'),
82
      (CLUB_BAN, 'Club Ban')
83
  )
84
  bench_status = models.CharField(max_length=2,
85
                                  choices=STATUS_CHOICES,
86
                                  default=GOOD)
87
  shop_status = models.CharField(max_length=2,
88
                                  choices=STATUS_CHOICES,
89
                                  default=GOOD)
90
# needed for Django Auth model
91
def create_roboclub_user(sender, instance, created, **kwargs):
92
  if created:
93
      RoboUser.objects.create(user=instance)
94
post_save.connect(create_roboclub_user, sender=User)
95

    
96

    
97
# Event Model
98
class Event(models.Model):
99
  type = models.CharField(max_length=30)
100
  tstart = models.DateTimeField()
101
  tend = models.DateTimeField()
102
  user = models.ForeignKey('RoboUser')
103
  succ = models.BooleanField(default=False)
104
  imgurl = models.URLField()
105
  machine = models.ForeignKey('Machine')
106
  project = models.ForeignKey('Project')
107
  matuse = models.TextField()
108

    
109
# Project Model
110
class Project(models.Model):
111
  name = models.CharField(max_length=30)
112
  primuser = models.ForeignKey('RoboUser', related_name='pri+')
113
  users = models.ManyToManyField('RoboUser', related_name='u+')
114
  charge = models.BooleanField(default=False)
115

    
116
# Roboclub Resources Model
117
class RoboResource(models.Model):
118
  type = models.CharField(max_length=30)
119
  id = models.CharField(max_length=20, primary_key=True)
120
  checked_out = models.BooleanField(default=False)
121
  user = models.ForeignKey('RoboUser', related_name='u+')
122
  time_out = models.DateTimeField()
123
  time_due = models.DateTimeField()
124
  officer = models.ForeignKey('RoboUser', related_name='o+')
125

    
126