Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
    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()