示例#1
0
 def get_groups(self):
     q = self.groups.all()
     if not q:
         return ok_response([])
     res = dict()
     for group in q:
         if group.degree.name not in res:
             res[group.degree.name] = []
         res[group.degree.name].append(group.json())
     return ok_response([res])
示例#2
0
 def get_info(self):
     if not self.user.is_active:
         return invalid_data
     return ok_response([{'name': self.name, 'gender': self.gender, 'birthday': self.birthday,
                          'country': self.country, 'city': self.city,
                          'height': self.height, 'weight': self.weight, 'blood': self.blood
                          }])
示例#3
0
 def get_schedule(self):
     q = self.classes.all()
     if not q:
         return ok_response([])
     res = dict()
     for obj in q:
         if obj.week not in res:
             res[obj.week] = [[] for x in range(7)]
         res[obj.week][obj.day].append(
             {'id': obj.id,
              'num': obj.num,
              'start': obj.start,
              'end': obj.end,
              'name': obj.name,
              'type': obj.type,
              'teachers': [teacher.json() for teacher in obj.teachers.all()],
              'classrooms': [classroom.json() for classroom in obj.classrooms.all()]}
         )
     return ok_response([{'weeks':res}])
示例#4
0
 def update_schedule(self, schedule):
     objects = []
     if type(schedule) is not dict:
         return invalid_data
     schedule = schedule.get('weeks', None)
     if schedule is None or type(schedule) is not dict:
         return invalid_data
     for week in schedule:
         days = schedule[week]
         if len(days) < 7 or type(days) is not list:
             return invalid_data
         for _day in range(len(days)):
             day = days[_day]
             if type(day) is not list:
                 print 'q4'
                 return invalid_data
             for _class in day:
                 if type(_class) is not dict:
                     print 'q3'
                     return invalid_data
                 try:
                     num = int(_class['num'])
                     week = int(week)
                     day = int(_day)
                     start = int(_class['start'])
                     end = int(_class['end'])
                     name = _class['name']
                     teachers = [Teacher.objects.get(id=int(_teacher)) for _teacher in _class['teachers']]
                     classrooms = [Classroom.objects.get(id=int(_classroom)) for _classroom in _class['classrooms']]
                     _type = int(_class['type'])
                 except:
                     print _class
                     return invalid_data
                 if num < 0 or week < 0 or _type < 0:
                     return invalid_data
                 if day < 0 or day > 6:
                     return invalid_data
                 if start < 0 or end < 0 or start > 60*24 or end > 60*24:
                     return invalid_data
                 if len(name) > 500 or not (type(name) is str or type(name) is unicode):
                     return invalid_data
                 objects.append([num, week, day, start, end, name, teachers, classrooms, _type])
     self.classes.all().delete()
     for obj in objects:
         num, week, day, start, end, name, teachers, classrooms, _type = obj
         obj = Class(group=self, num=num, week=week, day=day, start=start, end=end, name=name, type=_type)
         obj.save()
         for t in teachers:
             obj.teachers.add(t)
         for c in classrooms:
             obj.classrooms.add(c)
         obj.save()
         self.classes.add(obj)
     return ok_response([])
示例#5
0
 def set_info(self, data):
     if type(data) is not dict:
         return task_error
     results = {}
     error = False
     for key in data:
         if key in c.UserProfile_ALLOWED_KEYS and type(key) is unicode:
             if type(data[key]) is not unicode:
                 results[key] = False
             elif len(data[key]) > c.UserProfile_ALLOWED_KEYS[key]:
                 results[key] = False
             else:
                 setattr(self, key, data[key])
                 results[key] = True
         elif key == 'birthday':
             results[key] = self.set_birthday(data[key])
         elif key == 'height' or key == 'weight':
             try:
                 t = float(data[key])
                 setattr(self, key, t)
                 results[key] = True
             except:
                 results[key] = False
         elif key == 'blood':
             try:
                 t = int(data[key])
                 if t not in c.UserProfile_BLOOD_CHOICES:
                     results[key] = False
                 else:
                     setattr(self, key, t)
                     results[key] = True
             except:
                 results[key] = False
         else:
             results[key] = False
         if not results[key]:
             error = True
     self.save()
     if error:
         return error_response(50, [results])
     return ok_response([results])
示例#6
0
 def modify(self, data):
     res = dict()
     if 'num' in data:
         try:
             num = int(data['num'])
             if num >= 0:
                 self.num = num
                 res['num'] = True
             else:
                 res['num'] = False
         except:
             res['num'] = False
     if 'week' in data:
         try:
             week = int(data['week'])
             if week >= 0:
                 self.week = week
                 res['week'] = True
             else:
                 res['week'] = False
         except:
             res['week'] = False
     if 'type' in data:
         try:
             type = int(data['type'])
             if type >= 0:
                 self.type = type
                 res['type'] = True
             else:
                 res['type'] = False
         except:
             res['type'] = False
     if 'day' in data:
         try:
             day = int(data['day'])
             if 0 <= day <= 6:
                 self.day = day
                 res['day'] = True
             else:
                 res['day'] = False
         except:
             res['day'] = False
     if 'start' in data:
         try:
             start = int(data['start'])
             if 0 <= start <= 60*24:
                 self.start = start
                 res['start'] = True
             else:
                 res['start'] = False
         except:
             res['start'] = False
     if 'end' in data:
         try:
             end = int(data['end'])
             if 0 <= end <= 60*24:
                 self.end = end
                 res['end'] = True
             else:
                 res['end'] = False
         except:
             res['end'] = False
     if 'name' in data:
         try:
             name = data['name']
             if len(name) <= 500:
                 self.name = data['name']
                 res['name'] = True
             else:
                 res['name'] = False
         except:
             res['name'] = False
     if 'teachers' in data:
         try:
             teachers = [Teacher.objects.get(id=teacher_id) for teacher_id in data['teachers']]
             self.teachers.clear()
             for teacher in teachers:
                 self.teachers.add(teacher)
             res['teachers'] = True
         except:
             res['teachers'] = False
     if 'classrooms' in data:
         try:
             classrooms = [Classroom.objects.get(id=teacher_id) for teacher_id in data['classrooms']]
             self.classrooms.clear()
             for classroom in classrooms:
                 self.classrooms.add(classroom)
             res['classrooms'] = True
         except:
             res['classrooms'] = False
     self.save()
     if False in res.values():
         return error_response(51, res)
     if not res:
         return ok_response([])
     return ok_response([res])
示例#7
0
 def get_all():
     res = [{'id': _faculty.id, 'name': _faculty.name} for _faculty in Faculty.objects.all()]
     return ok_response(res)