Exemplo n.º 1
0
def find(self):

    startDate = self.get_query_argument('fromDate')
    endDate = self.get_query_argument('toDate')

    fromDate = datetime.strptime(datetime.now().strftime('%Y-%m-%d'),
                                 '%Y-%m-%d')
    if startDate:
        fromDate = datetime.strptime(startDate, '%Y-%m-%d')
    toDate = datetime.now() + timedelta(days=7)
    if endDate:
        toDate = datetime.strptime(endDate, '%Y-%m-%d')

    stats = yield InstructorSchedule.objects.filter(
        date__gte=fromDate, date__lte=toDate).find_all()
    json_stats = to_json_serializable(stats)
    for i, stat in enumerate(json_stats):
        books = yield BookedSchedule.objects.filter(schedule=ObjectId(stat['_id']), status__ne='cancelled') \
                                            .filter(status__ne='waitlisted') \
                                            .filter(status__ne='missed') \
                                            .order_by('seat_number', direction=ASCENDING).find_all()
        waitlist = yield BookedSchedule.objects.filter(
            schedule=ObjectId(stat['_id']), status='waitlisted').find_all()
        json_stats[i]['books'] = to_json_serializable(books)
        json_stats[i]['waitlist'] = to_json_serializable(waitlist)

    self.write(to_json(json_stats))
    self.finish()
Exemplo n.º 2
0
def login(self):
    if self.request.method == 'GET':
        message = self.flash_secure_cookie('admin_login_invalid')
        if not message:
            message = ''
        self.render('login', message=message)
    else:
        username = self.get_argument('username')
        password = self.get_argument('password')
        instructor = yield AccessType.objects.get(admin_type='Instructor')
        admin = yield Admin.objects.get(username=username,
                                        access_type__ne=instructor)
        invalid = False
        try:
            if not admin or not bcrypt.verify(password, admin.password):
                invalid = True
        except ValueError:
            invalid = True
        if invalid:
            self.set_secure_cookie('admin_login_invalid',
                                   'Invalid username and password')
            self.redirect('/admin/login')

        privileges = {}
        for i, privilege in enumerate(admin.access_type.privileges):
            privileges[privilege.module] = privilege.actions

        self.set_secure_cookie('privileges', to_json(privileges))
        self.set_secure_cookie('admin', admin.username)
        self.redirect('/admin/')
def create(self):
    data = tornado.escape.json_decode(self.request.body)
    new_sched = InstructorSchedule()
    if 'day' in data:
        new_sched.day = data['day']
    elif 'date' in data:
        new_sched.date = parser.parse(data['date'])
    new_sched.start = parser.parse(data['start'], default=DEFAULT_TIME)
    new_sched.end = parser.parse(data['end'], default=DEFAULT_TIME)
    if 'type' in data:
        new_sched.type = data['type']
    if 'seats' in data:
        new_sched.seats = data['seats']
    if new_sched.start >= new_sched.end:
        self.set_status(400)
        self.write('Invalid start and end time')
        self.finish()
        return
    new_sched.instructor = ObjectId(data['instructor'])
    if 'sub_instructor' in data:
        new_sched.sub_instructor = ObjectId(data['sub_instructor'])
    if 'branch' in data:
        new_sched.branch = ObjectId(data['branch'])
    yield new_sched.save()
    yield new_sched.load_references()

    date = (new_sched.date - timedelta(days=new_sched.date.weekday())).strftime('%Y-%-m-%-d')
    schedules = yield query(self, date, None, new_sched.branch._id)

    self.publish_message(to_json(schedules), facility='schedules', broadcast=True)

    self.render_json(new_sched)
def update(self, id):
    data = tornado.escape.json_decode(self.request.body)
    sched = yield InstructorSchedule.objects.get(id)
    if 'day' in data:
        sched.day = data['day']
    if 'type' in data:
        sched.type = data['type']
    if 'seats' in data:
        sched.seats = data['seats']
    sched.start = parser.parse(data['start'], default=DEFAULT_TIME)
    sched.end = parser.parse(data['end'], default=DEFAULT_TIME)
    if sched.start >= sched.end:
        self.set_status(400)
        self.write('Invalid start and end time')
        self.finish()
        return
    if 'instructor' in data:
        sched.instructor = ObjectId(data['instructor'])
    if 'sub_instructor' in data:
        sched.sub_instructor = ObjectId(data['sub_instructor'])

    yield sched.save()

    date = (sched.date - timedelta(days=sched.date.weekday())).strftime('%Y-%-m-%-d')

    schedules = yield query(self, date, None, sched.branch._id)

    self.publish_message(to_json(schedules), facility='schedules', broadcast=True)

    self.render_json(sched)
Exemplo n.º 5
0
def on_message(self, message):
    message = tornado.escape.json_decode(message)

    date = self.get_value('date', message)
    ins = self.get_value('ins', message)
    branch = self.get_value('branch', message)

    schedules = yield query(self, date, ins, branch)

    self.write_message(to_json(schedules))
def destroy(self, id):
    sched = yield InstructorSchedule.objects.get(id)
    if sched:
        sched.delete()

    date = (sched.date - timedelta(days=sched.date.weekday())).strftime('%Y-%-m-%-d')

    schedules = yield query(self, date, None, sched.branch._id)

    self.publish_message(to_json(schedules), facility='schedules', broadcast=True)

    self.finish()
Exemplo n.º 7
0
def find_one(self, id):
    user = yield User.objects.get(id)
    json_user = to_json_serializable(user)

    with_books = self.get_query_argument('books')
    if with_books:
        start_date = self.get_query_argument('fromDate')
        end_date = self.get_query_argument('toDate')
        now = datetime.strptime(datetime.now().strftime('%Y-%m-%d'),
                                '%Y-%m-%d')
        from_date = now
        if start_date:
            from_date = datetime.strptime(start_date, '%Y-%m-%d')
        to_date = now + timedelta(days=7)
        if end_date:
            to_date = datetime.strptime(end_date, '%Y-%m-%d')

        books = yield BookedSchedule.objects.filter(user_id=user._id, date__gte=from_date, date__lte=to_date) \
                                            .order_by('date', direction=ASCENDING).find_all()
        books = create_at_gmt8(books)
        json_user['books'] = to_json_serializable(books)
    else:
        page = 0
        pages = yield UserPackage.objects.filter(
            user_id=user._id).order_by('expire_date').count()
        packages = []
        if self.get_query_argument('page'):
            page = int(self.get_query_argument('page'))
        if ((pages - (page * 10)) > 0):
            packages = yield UserPackage.objects.filter(user_id=user._id).order_by('expire_date') \
                    .skip(page * 10).limit(10).find_all()

        packages = create_at_gmt8(packages)
        json_user['packages'] = to_json_serializable(packages)

    self.write(to_json(json_user))
    self.finish()