def query(): """Displays all results for the query in category category_id, which can be 'all' if no category is selected.""" if not is_caltech_user(): return login_redirect() category_id = flask.request.args.get('cat') if category_id is None: flask.abort(404) query = flask.request.args.get('q', '') # Create a dict of the passed-in attributes which are filterable attrs = { attr: value for attr, value in flask.request.args.items() if attr in SEARCH_ATTRS } attrs['item_active'] = True if category_id != helpers.ALL_CATEGORY: try: attrs['cat_id'] = int(category_id) except ValueError: flask.abort(404) # Pass in the cat_id to generate_search_table() if it's not 'all' items = helpers.generate_search_table(attrs, query) return helpers.render_with_top_marketplace_bar( 'search.html', items=items, cat_id=category_id)
def get_all_events(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() res = helpers.sync_data(all_data=True) error_message = helpers.check_if_error(res) if error_message: return flask.jsonify({'err': error_message}) return flask.jsonify({'events': res})
def get_image(user_id): if not is_caltech_user(): flask.abort(401) extension, image = helpers.get_image(user_id) response = flask.make_response(image) response.headers.set('Content-Type', mimetypes.guess_type('img.' + extension)[0]) return response
def get_events(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() res = helpers.sync_data(1, flask.request.form['year'], 12, flask.request.form['year']) error_message = helpers.check_if_error(res) if error_message: return flask.jsonify({'err': error_message}) return flask.jsonify({'events': res})
def directory_search(): if not is_caltech_user(): return login_redirect() return flask.render_template( 'directory_search.html', manage_members_houses=helpers.get_manage_members_houses(), houses=helpers.get_houses(), options=helpers.get_options(), residences=helpers.get_residences(), grad_years=helpers.get_grad_years())
def sync(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() res = helpers.sync_data(all_data=True) error_message = helpers.check_if_error(res) if error_message: flask.flash(error_message) global last_update_time last_update_time = datetime.datetime.now() return flask.render_template( 'calendar.html', permissions=helpers.get_permission())
def feedback(group): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() if group not in Groups: return flask.abort(404) summary = False if auth_utils.check_login(): perms = auth_utils.get_permissions(flask.session['username']) if default_permissions.ADMIN in perms or permissions[group].SUMMARY in perms: summary = True return flask.render_template( 'feedback.html', summary=summary, group=group, msg=Groups[group])
def feedback_submit(group): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() if group not in Groups: return flask.abort(404) fields = ['name', 'email', 'subject', 'msg', 'ombuds'] data = {} for field in fields: data[field] = flask.request.form.get(field) complaint_id = helpers.register_complaint(group, data) flask.flash( Markup('Success (you may want to save this link): <a href="' + helpers.get_link(group, complaint_id) + '">View Complaint</a>')) return flask.redirect(flask.url_for('feedback.feedback', group=group))
def view_user(user_id): if not is_caltech_user(): return login_redirect() user = helpers.get_user(user_id) is_me = 'username' in flask.session and get_user_id( flask.session['username']) == user_id hidden_fields = helpers.get_hidden_fields(flask.session.get('username'), user_id) return flask.render_template('view_user.html', user=user, is_me=is_me, user_id=user_id, hidden_fields=hidden_fields)
def get_events_backup(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() res = helpers.get_events_backup(1, flask.request.form['year'], 12, flask.request.form['year']) error_message = helpers.check_if_error(res) if error_message: return flask.jsonify({'err': error_message}) return flask.jsonify({ 'events': res, 'last_update_time': last_update_time.strftime("%Y-%m-%dT%H:%M:%SZ") })
def get_all_events_backup(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() res = helpers.get_events_backup(all_data=True) error_message = helpers.check_if_error(res) if error_message: return flask.jsonify({'err': error_message}) return flask.jsonify({ 'events': res, 'permissions': helpers.get_permission(), 'last_update_time': last_update_time.strftime("%Y-%m-%dT%H:%M:%SZ") })
def view_user(user_id): if not is_caltech_user(): return login_redirect() username = flask.session.get('username') user = helpers.get_user(user_id) if user is not None: hidden_fields = helpers.get_hidden_fields(username, user_id) user = { key: value for key, value in user.items() if key not in hidden_fields } is_me = username is not None and get_user_id(username) == user_id return flask.render_template('view_user.html', user=user, is_me=is_me, user_id=user_id)
def view_item(item_id): """View additional details about item <item_id>""" if not is_caltech_user(): return login_redirect() item = helpers.table_fetch( """ marketplace_items NATURAL LEFT JOIN marketplace_textbooks NATURAL JOIN marketplace_categories """, one=True, fields=VIEW_FIELDS, attrs={'item_id': item_id}) # Make sure the item_id is a valid item, i.e. data is nonempty if item is None: flask.abort(404) # Display textbook edition edition = item['textbook_edition'] if edition: item['textbook_edition'] = helpers.process_edition(edition) # Grab the stored image links image_links = helpers.get_image_links(item_id) # Notify if the item is inactive if not item['item_active']: flask.flash('This item has been archived!') return helpers.render_with_top_marketplace_bar( 'view_item.html', item_id=item_id, item=item, image_links=image_links, user=get_name_and_email(item['user_id']), can_edit=helpers.can_manage(item))
def calendar_search(): if not auth_utils.is_caltech_user(): return auth_utils.login_redirect() return flask.render_template( 'calendar_search.html', permissions=helpers.get_permission())
def search(): if not is_caltech_user(): flask.abort(401) if flask.request.method == 'POST': form = flask.request.form page = 1 per_page = 10 else: form = flask.request.args page = int(form['page']) total = int(form['total']) per_page = int(form['per_page']) name = form['name'] if name.strip() == '': name = None house_id = form['house_id'] if house_id: house_id = int(house_id) else: house_id = None option_id = form['option_id'] if option_id: option_id = int(option_id) else: option_id = None building_id = form['building_id'] if building_id: building_id = int(building_id) else: building_id = None grad_year = form['grad_year'] if grad_year: grad_year = int(grad_year) else: grad_year = None # TODO: remove timezone after COVID timezone_from = form.get('timezone_from') timezone_to = form.get('timezone_to') timezone_from = int(timezone_from) if timezone_from else None timezone_to = int(timezone_to) if timezone_to else None offset = (page - 1) * per_page args = dict(name=name, house_id=house_id, option_id=option_id, building_id=building_id, grad_year=grad_year, username=form['username'], email=form['email'], timezone_from=timezone_from, timezone_to=timezone_to) if flask.request.method == 'POST': total = helpers.execute_search(**args) offset = (page - 1) * per_page users = helpers.execute_search(**args, offset=offset, per_page=per_page) if total == 1: #1 result return redirect( flask.url_for('directory_search.view_user', user_id=users[0]['user_id'])) show_images = form.get('show_images') query_info = {k: ('' if v is None else v) for k, v in args.items()} query_info['total'] = total query_info['show_images'] = show_images return flask.render_template('search_results.html', users=users, show_images=show_images, total=total, per_page=per_page, page=page, query_info=query_info)
def search_by_name(name_query): if not is_caltech_user(): flask.abort(401) return jsonify(helpers.get_users_by_name_query(name_query))