def post(self, request): name = request.data.get('name') start_date = request.data.get('start_date') end_date = request.data.get('end_date') if name is None: return Response(status=400, data={"message": "여행 제목을 입력해주세요"}) if start_date is None: return Response(status=400, data={"message": "시작 날짜를 입력해주세요"}) if end_date is None: return Response(status=400, data={"message": "종료 날짜를 입력해주세요"}) start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d").date() end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d").date() with transaction.atomic(): plan = Plan(user=request.user, name=name, start_date=start_date, end_date=end_date) plan.save() for date in daterange(start_date, end_date): schedule = Schedule(plan_id=plan.id, date=date) schedule.save() result = dict() result['data'] = PlanSerializer(plan).data return Response(status=200, data=result)
def get_free_rooms(self, get_request): if 'to_date' in get_request and 'from_date' in get_request and 'seats' in get_request: return Response(Schedule.get_free_rooms_from_to_seats(get_request)) if 'to_date' in get_request and 'from_date' in get_request: return Response(Schedule.get_free_rooms_from_to_date(get_request)) else: raise Http404
def get_some_data(self, get_request): """ ITS VERYY VERYY BAD STYLEE """ if 'subject' in get_request and 'room' in get_request and 'teacher' in get_request: return Response(Schedule.get_room_subject_teacher(get_request)) elif 'subject' in get_request and 'teacher' in get_request: return Response(Schedule.get_subject_teacher(get_request)) elif 'room' in get_request and 'teacher' in get_request: return Response(Schedule.get_room_teacher(get_request)) elif 'subject' in get_request and 'room' in get_request: return Response(Schedule.get_room_subject(get_request)) elif 'room' in get_request: return Response(Schedule.get_only_room(get_request)) elif 'subject' in get_request: return Response(Schedule.get_only_subject(get_request)) elif 'teacher' in get_request: return Response(Schedule.get_only_teacher(get_request)) else: data = Schedule.objects.all() serializer = ScheduleSerializer(data, many=True) return Response(serializer.data)
def teams_schedule(team_id): """ PUT structure: {"shedule":{"primary":[[0,"jkincl"],[1,"user1"]], "secondary":[[0,"user1"],[1,"jkincl"]]}} """ if request.method == 'GET': return jsonify({'schedule': {'Primary': [s.to_json() for s in Schedule.query. \ filter_by(role='Primary', team_id=team_id). \ order_by(Schedule.order).all()], 'Secondary': [s.to_json() for s in Schedule.query. \ filter_by(role='Secondary', team_id=team_id). \ order_by(Schedule.order).all()]}}) if request.method == 'PUT': if not request.json or not 'schedule' in request.json: # flash('Malformd request, "schedule" not found in JSON', 'danger') # abort(400) return _api_error('Malformed request, schedule not found in JSON', 'danger') sched = request.json.get('schedule') # Maybe a better way to do this but delete all since we are doing an add all for item in Schedule.query.filter_by(team_id=team_id).all(): db.session.delete(item) max_len = -1 for role in [role for role in current_app.config['ROLES']]: if role not in sched: # flash('Malformd request, specified role is not found', 'danger') # abort(400) return _api_error('Malformed request, specified role is not found', 'danger') if max_len == -1: max_len = len(sched.get(role)) else: if len(sched.get(role)) != max_len: # flash('Schedules for each role must match length', 'danger') # abort(400) return _api_error('Schedules for each role must match length', 'danger') for seq in sched.get(role): user = User.query.filter_by(username=seq[1]).first_or_404().username db.session.add(Schedule(team_id, user, role, seq[0])) if request.method == 'DELETE': for item in Schedule.query.filter_by(team_id=team_id).all(): db.session.delete(item) db.session.commit() return Response(status=200)
def setUp(self): db.create_all() db.session.commit() team1 = Team('Team 1') team2 = Team('Team 2') db.session.add(team1) db.session.add(team2) # so primary key gets populated db.session.flush() user1 = User('user1', 'Test User', [team1.id]) user2 = User('user2', 'Another User', [team1.id]) user3 = User('user3', 'Byzantine Candor', [team1.id, team2.id]) user4 = (User('user4', 'Cottonmouth', [team1.id, team2.id])) db.session.add(user1) db.session.add(user2) db.session.add(user3) db.session.add(user4) db.session.flush() db.session.add(Schedule(team1.id, user1.id, "Primary", 0)) db.session.add(Schedule(team1.id, user2.id, "Secondary", 0)) db.session.add(Schedule(team1.id, user3.id, "Primary", 1)) db.session.add(Schedule(team1.id, user1.id, "Secondary", 1)) db.session.add(Schedule(team1.id, user2.id, "Primary", 2)) db.session.add(Schedule(team1.id, user3.id, "Secondary", 2)) db.session.add(Schedule(team2.id, user3.id, "Primary", 0)) db.session.add(Schedule(team2.id, user4.id, "Secondary", 0)) db.session.add(Schedule(team2.id, user4.id, "Primary", 1)) db.session.add(Schedule(team2.id, user3.id, "Secondary", 1)) db.session.commit()