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()
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)
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()
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()