def admin_users_edit_post(): payload = get_payload(request) user_id = payload.get('user_id') if user_id: user = User.get(user_id) return_value = success('All profile values have been updated.') else: user = User() user.insert() return_value = success('User created.') if not payload.get('password'): return jsonify(failure('You must set a password for new users')) if not payload.get('email'): return jsonify(failure('You must set an email for new users')) if not payload.get('name'): return jsonify(failure('You must set a name for new users')) for key in payload: if key == 'password': user.set_password(payload[key]) elif key != 'user_id': setattr(user, key, payload[key]) g.user.insert() safe_commit() return jsonify(return_value)
def retrieve_content(): return_value = success('The content was retrieved.') return_value['contents'] = [] payload = get_payload(request) content_id = payload.get('id') if content_id: content = Content.get(content_id) if content: return_value['contents'] = [content.to_dict(camel_case=True)] else: return_value['success'] = False return_value['messages'] = ['No content found with that ID.'] else: # No ID passed... we should return more than one result. current_page = payload.get('current_page', 1) page_size = payload.get('page_size', 5) content_type = payload.get('content_type', 'post') published = payload.get('published', True) contents = Content.filter(Content.type == content_type)\ .filter(Content.published == published)\ .order_by(Content.published_on.desc()) contents, maxpages = paginate(contents, current_page, page_size) if contents: return_value['contents'] = results_to_dict(contents, camel_case=True) return jsonify(return_value)
def upload_ajax(): return_value = success('The file was uploaded.') payload = get_payload(request) ufile = request.files['file'] file_id = upload_file(payload, ufile) return_value['id'] = file_id return jsonify(return_value)
def retrieve_content(): return_value = success('The content was retrieved.') return_value['contents'] = [] payload = get_payload(request) content_id = payload.get('id') if content_id: content = Content.get(content_id) if content: return_value['contents'] = [content.to_dict(camel_case=True)] else: return_value['success'] = False return_value['messages'] = ['No content found with that ID.'] else: # No ID passed... we should return more than one result. current_page = payload.get('current_page', 1) page_size = payload.get('page_size', 5) content_type = payload.get('content_type', 'post') published = payload.get('published', True) contents = Content.filter(Content.type == content_type)\ .filter(Content.published == published)\ .order_by(Content.published_on.desc()) contents, maxpages = paginate(contents, current_page, page_size) if contents: return_value['contents'] = results_to_dict( contents, camel_case=True) return jsonify(return_value)
def upload(): payload = get_payload(request) ufile = request.files['file'] file_id = upload_file(payload, ufile) if file_id: flash("File uploaded!") else: flash("There was a problem uploading that file.") return redirect("/admin/files/add")
def search_page(): payload = get_payload(request) search = payload.get('search') contents = Content.filter(or_(Content.body.ilike('%{}%'.format(search)), Content.tags.ilike('%{}%'.format(search)), Content.title.ilike('%{}%'.format(search))))\ .filter(Content.published == True).all() return render('search.html', user=import_user(), contents=contents, menu_items=get_menu_items())
def admin_content_delete(): return_value = success('The content has been deleted.') payload = get_payload(request) content = Content.get(payload.get('id')) if content: content.delete() safe_commit() else: return_value = failure('Content not found.') return jsonify(return_value)
def create_content(): return_value = success('The content was created.') payload = get_payload(request) editing = False if payload.get('id'): content = Content.get(payload.get('id')) editing = True return_value = success('The content was updated.') else: content = Content() content.type = payload.get('type').lower() content.template = '{}.html'.format(content.type) content.title = payload.get('title') content.body = payload.get('body') or '' content.theme = payload.get('theme') content.preview = payload.get('preview') or '' content.user_id = payload.get('user_id') tags = [t.strip() for t in payload.get('tags', '').split(',') if t.strip()] for tag in tags: count = Tag.filter(Tag.name == tag).count() if not count: new_tag = Tag(name=tag) new_tag.insert() content.tags = ",".join(tags) content.parser = payload.get('parser', 'markdown') published = json.loads(payload.get('published', 'false')) content.published = published menu_item = json.loads(payload.get('menu_item', 'false')) content.menu_item = menu_item if not editing: content.slug = make_slug(content.title) else: published_on = payload.get('published_on') if published_on: content.published_on = parser.parse(published_on) valid = content.validate() if valid['success'] or editing: print(content.to_dict()) content.insert() safe_commit() return_value['id'] = content.id # with app.context(): # cache.clear() else: return_value = valid return jsonify(return_value)
def admin_settings_post(): return_value = success('All settings have been updated.') payload = get_payload(request) for key in payload: setting = Setting.filter(Setting.name == key).first() setting.value = payload[key] setting.insert() safe_commit() return jsonify(return_value)
def retrieve_user(): return_value = success('The user was retrieved.') payload = get_payload(request) user = User.get(payload.get('id')) if not user: return_value = failure('That user does not exist.') else: return_value['user'] = user.to_dict(camel_case=True) return_value['user'].pop('password') return_value['user'].pop('openid') return jsonify(return_value)
def delete_user(): return_value = success('The user was deleted.') payload = get_payload(request) if not g.user or g.user.id != payload.get('id'): user = User.filter(User.id == payload.get('id')).first() if user: user.delete() safe_commit() else: return_value = failure('That user does not exist.') else: return_value = failure('You cannot delete the current user.') return jsonify(return_value)
def delete_user(): return_value = success('The user was deleted.') payload = get_payload(request) if not g.user or g.user.id != payload.get('id'): user = User.filter(User.id == payload.get('id')).first() if user: user.active = False user.insert() safe_commit() else: return_value = failure('That user does not exist.') else: return_value = failure('You cannot delete the current user.') return jsonify(return_value)
def post_login(): payload = get_payload(request) user = User.filter(User.email == payload.get('email')).first() if user: if check_password_hash(user.password, payload['password']): session['userid'] = user.id next_url = request.args.get('next', '') if next_url: return redirect(next_url) else: return redirect(url_for('admin')) else: flash("Incorrect password") else: flash("Invalid user") return redirect(url_for('login'))
def create_user(): return_value = success('The user was created.') payload = get_payload(request) user = User(username=payload.get('email'), password=payload.get('password'), name=payload.get('name')) valid = user.validate() if valid['success']: user.insert() safe_commit() return_value['id'] = user.id else: del(user) return_value = valid return jsonify(return_value)
def create_content(): return_value = success('The content was created.') payload = get_payload(request) editing = False if payload.get('id'): content = Content.get(payload.get('id')) editing = True return_value = success('The content was updated.') else: content = Content() content.type = payload.get('type').lower() content.title = payload.get('title') content.body = payload.get('body') content.user_id = payload.get('user_id') tags = [t.strip() for t in payload.get('tags', '').split(',') if t.strip()] for tag in tags: count = Tag.filter(Tag.name == tag).count() if not count: new_tag = Tag(name=tag) new_tag.insert() content.tags = ",".join(tags) content.parser = payload.get('parser', 'markdown') content.published = bool(payload.get('published', False)) if not editing: content.slug = make_slug(content.title) else: created_on = payload.get('created_on') if created_on: content.created_on = parser.parse(created_on) valid = content.validate() if valid['success'] or editing: content.insert() safe_commit() return_value['id'] = content.id else: return_value = valid return jsonify(return_value)
def admin_files_delete(): return_value = success('The file has been deleted.') payload = get_payload(request) afile = File.get(payload.get('id')) if afile: try: os.unlink(afile.path) except OSError: pass try: os.unlink(afile.thumbnail_path) except OSError: pass afile.delete() safe_commit() else: return_value = failure('File not found.') return jsonify(return_value)
def update_user(): return_value = success('The user was updated.') payload = get_payload(request) user = User.get(payload.get('id')) if not user: return_value = failure('That user does not exist.') else: if payload.get('password'): user.set_password(payload.get('password')) if payload.get('email'): user.email = payload.get('email') if payload.get('name'): user.name = payload.get('name') safe_commit() return_value['user'] = user.to_dict(camel_case=True) return jsonify(return_value)
def update_user(): return_value = success('The user was updated.') payload = get_payload(request) user = User.get(payload.get('id')) if not user: return_value = failure('That user does not exist.') else: if payload.get('password'): hashed_password = generate_password_hash(payload.get('password')) if payload.get('email'): user.email = payload.get('email') if payload.get('name'): user.name = payload.get('name') user.password = hashed_password safe_commit() return_value['user'] = user.to_dict(camel_case=True) return jsonify(return_value)
def create_user(): return_value = success('The user was created.') payload = get_payload(request) hashed_password = generate_password_hash(payload.get('password')) user = User() user.email = payload.get('email') user.name = payload.get('name') user.password = hashed_password valid = user.validate() if valid['success']: user.insert() safe_commit() return_value['id'] = user.id else: del(user) return_value = valid return jsonify(return_value)
def setup(): import shlex import subprocess user_count = User.count() # print(user_count) if user_count > 0: # We already have a user. No running setup. return redirect(url_for('.index')) if request.method == 'POST': payload = get_payload(request) if payload.get('email') and payload.get('password'): user = User(username=payload.get('email'), password=payload.get('password'), firstname=payload.get('firstname'), lastname=payload.get('lastname')) my_role = Role(name='admin') my_role.add_abilities('create_users', 'delete_users', 'create_content', 'delete_content', 'upload_files', 'delete_files', 'change_settings') user.add_roles('admin', 'superadmin') login_user(user) args = shlex.split("alembic history") p = subprocess.Popen(args, stdout=subprocess.PIPE) output, error = p.communicate() data = output.split('\n') latest_alembic = None for row in data: if "(head)" in row: cols = row.split(" ") latest_alembic = cols[2].strip() if latest_alembic: print("Stamping with latest Alembic revision: %s" % latest_alembic) args = shlex.split("alembic stamp %s" % latest_alembic) subprocess.Popen(args, stdout=subprocess.PIPE) from impression.upgrade import THEMES, SYNTAX_THEMES # Create some system settings Setting(name='blog-title', vartype='str', system=True).insert() Setting(name='blog-copyright', vartype='str', system=True).insert() Setting(name='blog-theme', vartype='str', system=True, value='impression').insert() Setting(name='posts-per-page', vartype='int', system=True, value=4).insert() Setting(name='bootstrap-theme', vartype='str', system=True, value='sandstone', allowed=json.dumps(THEMES)).insert() Setting(name='syntax-highlighting-theme', vartype='str', system=True, value='monokai.css', allowed=json.dumps(SYNTAX_THEMES)).insert() Setting(name='custom-front-page', vartype='str', system=True).insert() Setting(name='allowed-extensions', vartype='list', system=True, value="['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'tiff']").insert() Setting(name='upload-directory', vartype='str', system=True, value='uploads/').insert() Setting(name='max-file-size', vartype='int', system=True, value=16777216).insert() safe_commit() flash("Initial Setup Complete", "success") return redirect(url_for('admin_controller.admin_settings')) return render('setup.html')