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])
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 }])
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}])
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([])
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])
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])
def get_all(): res = [{'id': _faculty.id, 'name': _faculty.name} for _faculty in Faculty.objects.all()] return ok_response(res)