from application import Module __author__ = 'newbie' api_v1 = Module('api_v1', __name__, url_prefix='/api/v1') from . import users from . import news from . import comments
from flask import render_template, redirect, request, url_for, abort from flask.json import jsonify from application import Module from application.utils.validator import Validator from application.tasks.email import send_password_restore_ref from application.models.user import User, PasswordRestore from application.bl.users import restore_password module = Module('password', __name__, url_prefix='/password') @module.get("/restore") def restore(): return render_template('password/restore.html') @module.post('/restore') def restore_post(): v = Validator(request.form) v.field('email').required().email() if v.is_valid(): email = request.form.get("email") user = User.get_by_email(email) if user: token = PasswordRestore.add_token(user) print(token) send_password_restore_ref.delay(user.email, user.full_name, token) return jsonify({"status": "ok"}) return jsonify({"status": "fail",
from flask import render_template, redirect, request, url_for from flask.json import jsonify from application import Module from application.utils.validator import Validator from application.utils import auth module = Module('login', __name__, url_prefix='/login') @module.get("/") def login(): return render_template('login.html') @module.post("/") def login_post(): v = Validator(request.form) v.field("login").required() v.field("password").required() if v.is_valid(): login = v.valid_data.login password = v.valid_data.password if auth.service.login(login, password): return jsonify({"status": "ok"}) else: v.add_error('login', 'Логин или пароль не верен', 'wrong_login_or_password') return jsonify({"status": "fail", "errors": v.errors})
from flask import request from flask.json import jsonify from application import Module, db from application.utils import auth from application.utils.validator import Validator from application.models.vote import Vote module = Module('vote', __name__, url_prefix='/vote') @module.delete("/<int:id>") def delete(id): user = auth.service.get_user() if user.is_authorized(): vote = Vote.get(id) if vote and vote.user == user: db.session.delete(vote) db.session.flush() entity = vote.get_entity() if entity: entity.after_delete_vote(vote) db.session.commit() return jsonify({'status': 'ok', 'vote': vote.as_dict()}) return jsonify({'status': 'fail'})
from flask import request, render_template, redirect, url_for, abort from collections import defaultdict from application import Module, ldap, db from application.utils import auth from application.models.department import Department from application.models.user import User from application.utils.datatables_sqlalchemy.datatables import row2dict module = Module('company_structure', __name__, url_prefix='/structure') @module.before_request def before_request(): user = auth.service.get_user() if not user.is_authorized(): return redirect(url_for('login.login')) def get_departments(parent_id=None): dep_list = [] departments = db.session.query(Department).filter_by( parent_id=parent_id).all() for dep in departments: dep_dict = row2dict(dep) if dep_dict["user_id"] != 'None': user = User.get_by_id(dep_dict["user_id"]) dep_dict["user"] = row2dict(user) print(dep_dict) dep_dict['dep_list'] = get_departments(dep.id) dep_list.append(dep_dict)
from flask import request, render_template, abort, redirect, url_for from flask.json import jsonify from application import Module from application.utils.validator import Validator from application.utils import auth from application.utils.widget import widget from application.models.user import User from application.models.department import Department from application.db import db from application.bl.users import modify_password, PasswordError, DataProcessingError, update_user from application.utils.datatables_sqlalchemy.datatables import ColumnDT, DataTables from application.models.view_users4search import ViewUsers4Search module = Module('user', __name__, url_prefix='/user') @module.before_request def before_request(): user = auth.service.get_user() if not user.is_authorized(): return redirect(url_for('login.login')) @module.get("/profile") @module.get("/profile/<int:user_id>") def profile(user_id=None): user = auth.service.get_user() if user_id is None else User.get_by_id( user_id) if user is None: abort(404)
from flask import render_template, redirect, url_for from application import Module from application.utils import auth module = Module('admin', __name__, url_prefix='/admin') @module.before_request def before_request(): user = auth.service.get_user() if not user.is_authorized(): return redirect(url_for('login.login')) if not user.is_admin and ('moderator' not in [r.name for r in user.roles]): return render_template('403.html') @module.get('/') def admin_index(): return redirect(url_for('admin.s_users')) @module.get("/logout") def logout(): return redirect(url_for('login.login'))
import datetime from PIL import Image from application.models.file import File from application.utils import image from collections import defaultdict import json from application import Module, db from application.models.comment import Comment from application.utils import auth from application.utils.validator import Validator from flask import request from flask.json import jsonify module = Module('comment', __name__, url_prefix='/comment') @module.delete("/<int:id>") def delete(id): user = auth.service.get_user() if user.is_authorized(): comment = Comment.get(id) if comment and (user.is_admin or comment.author == user or 'manage_comments' in user.get_permissions()): comment_json = None def delete_parent(comment): should_delete = True if comment is not None and comment.status == Comment.Status.DELETED: for quote in comment.quotes: if quote.status != Comment.Status.DELETED:
from flask import render_template, request, abort, redirect, url_for from flask.json import jsonify from application import Module, db from application.utils.decorators import requires_permissions from application.utils import auth from application.utils.validator import Validator from application.models.user import User from application.models.news import News from application.models.news_category import NewsCategory from application.models.news_tag import NewsTag from application.views.main import main from application.tasks.email import send_news_notification module = Module('news', __name__, url_prefix='/news') @module.before_request def before_request(): user = auth.service.get_user() if not user.is_authorized(): return redirect(url_for('login.login')) @main.get("/") @module.get('/') def list_all(): news = News.all() return render_template('news/all.html', **{'news': news}) @module.get('/category/<int:id>')
from application.models.community import Community, CommunityMember from application.models.file import File from application import Module, db from application.models.post import Post from application.models.user import User from application.utils import auth from application.utils.decorators import requires_permissions from application.utils.validator import Validator from flask import render_template, request, abort, redirect, url_for from flask.json import jsonify from application.views.main import main from application import utils module = Module('community', __name__, url_prefix='/community') @module.before_request def before_request(): user = auth.service.get_user() if not user.is_authorized(): return redirect(url_for('login.login')) @main.get('/communities') def list_communities(): communities = Community.all_active() return render_template('community/all.html', **{'communities': communities}) @main.get('/communities/mine') def mine_communities(): communities = Community.all_mine() return render_template('community/all.html', **{'communities': communities})
from datetime import datetime import re import uuid import os from application import Module from application.utils.validator import Validator from flask import request, send_from_directory, abort from flask.json import jsonify import application module = Module('file', __name__, url_prefix='/file') @module.get("/<path:filepath>") def get(filepath): path = os.path.join(application.files_folder, os.path.dirname(filepath)) name = os.path.basename(filepath) name = re.sub(r'(.*)\._(.*)_\.(.*)', r'\1.\3', name) full_path = os.path.join(path, name) if os.path.exists(full_path): if filepath.startswith('uploads/'): mdate = datetime.fromtimestamp(os.stat(full_path).st_mtime) delta = datetime.now().date() - mdate.date() if delta.days > 0: os.system('touch %s' % full_path) # Update modified date return send_from_directory(path, name) else: abort(404)