def new_class(**kwargs): user_id = kwargs['user_id'] # Validate state token (Anti Forgery State Token) invalid_response = app_oauth.validate_token(request.args.get('state')) if invalid_response: return invalid_response if request.method == 'GET': return render_template('new_class.html', content='add new class') if request.method == 'POST': category_title = request.form['category'] title = request.form['title'] description = request.form['description'] if category_title != '' and title != '' and description != '': # Save image file = request.files['file'] if file and allowed_file(file.filename): filename = datetime.now().strftime('img_%Y-%m-%d_%H%M%S.jpg') filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) print "saved to ", filepath else: filename = None # Add category if it doesn't already exist: category = session.query(Category).filter_by( title=category_title).first() if not category: category = Category(title=category_title) session.add(category) # flush so that category.id returns value before commit: session.flush() # Add class class_to_add = Class(category_id=category.id, title=title, description=description, teacher_id=user_id, picture=filename) session.add(class_to_add) session.commit() flash(u'Added class {0} successfully'.format(title)) else: flash(u'Class category, title, and description required') return redirect(url_for('show_all')) else: flash(u'Unsupported request type.') return redirect(url_for('show_all'))
def delete_class(id, **kwargs): user_id = kwargs['user_id'] # Validate state token (Anti Forgery State Token) invalid_response = app_oauth.validate_token(request.args.get('state')) if invalid_response: return invalid_response class_to_delete = session.query(Class).filter_by(id=id).one() if class_to_delete.teacher_id != user_id: flash(u'Unauthorized to delete item') return redirect(url_for('show_all')) if request.method == 'GET': return render_template('delete_class.html', class_to_delete=class_to_delete) if request.method == 'POST': # Delete image if it exists if class_to_delete.picture: path = UPLOAD_FOLDER + class_to_delete.picture os.remove(path) print "deleted", path # Delete class: deleted_class_category_id = class_to_delete.category_id session.delete(class_to_delete) # Delete category if there are no longer any classes in it: if session.query(Class).filter_by( category_id=deleted_class_category_id).first() is None: category_to_delete = session.query(Category).filter_by( id=deleted_class_category_id).one() session.delete(category_to_delete) print 'deleted category no. {0}'.format(category_to_delete.id) session.commit() flash(u'Deleted {0} successfully'.format(class_to_delete.title)) return redirect(url_for('show_all')) else: flash(u'Unsupported request type.') return redirect(url_for('show_all'))
def edit_class(id, **kwargs): user_id = kwargs['user_id'] # Validate state token (Anti Forgery State Token) invalid_response = app_oauth.validate_token(request.args.get('state')) if invalid_response: return invalid_response class_to_edit = session.query(Class).filter_by(id=id).one() if class_to_edit.teacher_id != user_id: flash(u'Unauthorized to edit item') return redirect(url_for('show_all')) if request.method == 'GET': category = session.query(Category).filter_by( id=class_to_edit.category_id).one() return render_template('edit_class.html', class_to_edit=class_to_edit, category_title=category.title, UPLOAD_FOLDER=UPLOAD_FOLDER) if request.method == 'POST': category_title = request.form['category_title'] title = request.form['title'] description = request.form['description'] if category_title != '' and title != '' and description != '': # Add category if it doesn't already exist: category = session.query(Category).filter_by( title=category_title).first() if not category: category = Category(title=category_title) session.add(category) # flush so that category.id returns value before commit: session.flush() # Save new image if it exists and delete old image if it exists file = request.files['file'] if file and allowed_file(file.filename): filename = datetime.now().strftime('img_%Y-%m-%d_%H%M%S.jpg') filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) file.save(filepath) print "saved to", filepath if class_to_edit.picture: old_picture_path = UPLOAD_FOLDER + class_to_edit.picture os.remove(old_picture_path) print "deleted", old_picture_path class_to_edit.picture = filename # Edit class: old_category_id = class_to_edit.category_id class_to_edit.category_id = category.id class_to_edit.title = title class_to_edit.description = description # Delete category if there are no longer any classes in it: if session.query(Class).filter_by( category_id=old_category_id).first() is None: category_to_delete = session.query(Category).filter_by( id=old_category_id).one() session.delete(category_to_delete) print 'deleted category no. {0}'.format(category_to_delete.id) session.commit() flash(u'Edited {0} successfully'.format(class_to_edit.title)) else: flash(u'Class category, title, and description required') return redirect(url_for('show_all')) else: flash(u'Unsupported request type.') return redirect(url_for('show_all'))