Esempio n. 1
0
def init_app(app):
    for version in routes.ROUTES:
        SWAGGER_URL = f'/{version}/api/docs'
        API_URL = f'/static/{version}/swagger.json'
        blueprint = Blueprint(version, __name__)
        module = 'project.server.controllers.%s.' % version

        swaggerui_blueprint = get_swaggerui_blueprint(
            SWAGGER_URL,
            API_URL,
            config={'app_name': "Sql Module"},
        )

        for route in routes.ROUTES[version]:
            endpoint = route.get('endpoint')
            function = route.get('function')
            method = route.get('method')
            rule = route.get('rule')
            opts = route.get('opts', {})
            auth_required = opts.get('auth_required', False)
            __import__(module + endpoint, fromlist=[''])
            view_function = restful.restful(**opts)(getattr(
                sys.modules[module + endpoint], function))
            if auth_required:
                view_function = jwt_required(
                    restful.restful(**opts)(getattr(
                        sys.modules[module + endpoint], function)))
            blueprint.add_url_rule(rule,
                                   endpoint=endpoint + ' ' + function,
                                   view_func=view_function,
                                   methods=[method],
                                   strict_slashes=False)
        app.register_blueprint(blueprint, url_prefix='/' + version)
        app.register_blueprint(swaggerui_blueprint, url_prefix=SWAGGER_URL)
Esempio n. 2
0
 def register(self):
     blueprint = Blueprint("index", __name__, template_folder="templates")
     blueprint.add_url_rule("/", "default", self.render_default)
     blueprint.add_url_rule("/data", "data", self.render_data)
     blueprint.add_url_rule("/graph", "graph", self.render_graph)
     blueprint.add_url_rule("/graph.json", "graph_data", self.render_graph_data)
     blueprint.add_url_rule("/ble", "ble", self.render_ble)
     blueprint.context_processor(self.fill)
     return blueprint
Esempio n. 3
0
    def create():
        blueprint = Blueprint('people', 'people')

        blueprint.add_url_rule(
            '/person',
            view_func=PeopleListOrCreateView.as_view('people-list-or-create'),
        )

        return blueprint
Esempio n. 4
0
def build_auth_entry():
    bp_entry = Blueprint("auth", __name__)
    bp_entry.add_url_rule("/login",
                          endpoint='ep_login',
                          view_func=template_controller.login,
                          methods=['GET'])

    rest_api = Api(bp_entry)
    rest_api.add_resource(auth_resource.LoginResource, 'login_api')
    rest_api.add_resource(auth_resource.UserResource, 'user_api')
    rest_api.add_resource(auth_resource.AuthResource, 'auth_api')

    return bp_entry
Esempio n. 5
0
def init_app(app):
    for version in routes.ROUTES:
        blueprint = Blueprint(version, __name__)
        module = 'project.server.controllers.%s.' % version

        for route in routes.ROUTES[version]:
            endpoint = route.get('endpoint')
            function = route.get('function')
            method = route.get('method')
            rule = route.get('rule')
            __import__(module + endpoint, fromlist=[''])
            blueprint.add_url_rule(rule,
                                   endpoint=endpoint + ' ' + function,
                                   view_func=getattr(
                                       sys.modules[module + endpoint],
                                       function),
                                   methods=[method],
                                   strict_slashes=False)
        app.register_blueprint(blueprint, url_prefix='/' + version)
Esempio n. 6
0
 def init_app(self, app: Flask):
     install_apps = app.config.get("INSTALL_APPS", [])
     for app_str in install_apps:
         mod_path = f"{app_str}.urls"
         try:
             urls = get_mod_attr(mod_path, "urls")
             b = Blueprint(import_name=mod_path, name=app_str)
             for url in urls:
                 if isinstance(url, Url):
                     b.add_url_rule(rule=url.rule,
                                    endpoint=url.endpoint,
                                    view_func=url.view_func,
                                    **url.options)
             app.register_blueprint(b)
         except ImportError as e:
             app.logger.warn(f"Import module {mod_path} err {e}")
         except IndexError as e:
             app.logger.warn(f"Split module {mod_path} attr error {e}")
         except AttributeError as e:
             app.logger.warn(
                 f"Get attr from url module {mod_path}, error {e}")
Esempio n. 7
0
    def create_module_blueprint(self, model, methods=READONLY_METHODS, url_prefix='/module', module_name=None, jqgrid=None,
                               module_link=None, authentication_required=None,
                               template_name=None, template_folder=None, form=None, view=ModuleView):

        if module_name is None:
            module_name = model.__tablename__

        view_endpoint = '/%s' % module_name
        apiname = ModuleManager.APINAME_FORMAT % module_name


        if jqgrid == None:
            pager = "jqgrid_%s_pager" % module_name
            jqgrid = JqGrid(self.model, data_url='api'+view_endpoint, pager_id=pager)

        if template_name is None:
            template_name = 'core/simple_crud.html'

        view_func =  view.as_view(apiname, template_name=template_name, jqgrid=jqgrid, model=model, module_name=module_name)

        blueprintname = self._next_blueprint_name(apiname)

        if template_folder:
            blueprint = Blueprint(blueprintname, __name__, url_prefix=url_prefix, template_folder=template_folder)
        else:
            blueprint = Blueprint(blueprintname, __name__, url_prefix=url_prefix)

        # endpoint functions views
        blueprint.add_url_rule(view_endpoint+'/<method>', view_func=view_func)

        url_view = url_prefix + view_endpoint + '/view'
        if module_link:
            module_link['url'] = url_view
            self.app.config['MODULE_LIST'].append(module_link)
        else:
            module_link = {'url':url_view, 'label':module_name.title(), 'icon_class':'nails'}
            self.app.config['MODULE_LIST'].append(module_link)


        return blueprint
Esempio n. 8
0

class BalanceController(BaseView):
    def get(self):
        self.get_user(request)
        user_stocks = (session.query(mx.StockBalance).filter(
            mx.StockBalance.user_id == self.user.id).all())
        data = {
            'money':
            get_money(session, self.user.id),
            'stocks': [{
                'stock_id':
                item.stock_id,
                'balance':
                get_stocks(
                    session,
                    self.user.id,
                    item.stock_id,
                ),
            } for item in user_stocks]
        }

        return json_data(data)


balance.add_url_rule(
    '/',
    view_func=BalanceController.as_view('tickets_view'),
    methods=['GET'],
)
Esempio n. 9
0
            article.content = content
            DBSession.commit()
            flash(MSG_SAVE_SUCC, MESSAGE_INFO)
            return redirect(url_for('.view', action = 'listArticle', appid = article.app_id))
        except:
            DBSession.rollback()
            traceback.print_exc()
            flash(MSG_SERVER_ERROR, MESSAGE_ERROR)
            return redirect(url_for('.view', action = 'updateArticle', id = aid))


    def delArticle(self):
        aid = _g('id')
        if not aid :
            flash(MSG_NO_ID_SUPPLIED, MESSAGE_WARNING)
            return redirect(url_for('.view'))
        try:
            article = DBSession.query(AppArticle).get(aid)
            article.active = 1
            DBSession.commit()
            flash(MSG_DELETE_SUCC, MESSAGE_INFO)
            return redirect(url_for('.view', action = 'listArticle', appid = article.app_id))
        except:
            DBSession.rollback()
            flash(MSG_SERVER_ERROR, MESSAGE_ERROR)
            return redirect(url_for('.view', action = 'updateArticle', id = aid))


bpConsoles.add_url_rule('/', view_func = ConsolesView.as_view('view'), defaults = {'action':'index'})
bpConsoles.add_url_rule('/<action>', view_func = ConsolesView.as_view('view'))
Esempio n. 10
0
            current_app.logger.error(e)
        if result == 0:
            return jsonify(SUCCESS())
        elif result == 1:
            return jsonify(PERMISSION_DENIED_ERROR)
        elif result == 2:
            return jsonify(USER_AGENT_MEMBER_NOT_NULL)
        elif result == 3:
            return jsonify(POST_PARA_ERROR)
        else:
            return jsonify(OTHER_ERROR)


# 创建代理
user_agent_bp.add_url_rule('/create',
                           methods=['POST'],
                           view_func=CreateAgent.as_view('create_agent'))
# 查询所有代理
user_agent_bp.add_url_rule('/all',
                           methods=['POST'],
                           view_func=QueryAllAgent.as_view('all_agent'))
# 查询单个代理,通过id
user_agent_bp.add_url_rule(
    '/query/<agent_id>',
    methods=['POST'],
    view_func=QueryAgentByID.as_view('query_agent_by_id'))
# 通过id修改代理
user_agent_bp.add_url_rule(
    '/update/<agent_id>',
    methods=['POST'],
    view_func=ChangeAgentByID.as_view('update_agent_by_id'))
Esempio n. 11
0
# coding=utf-8
from __future__ import absolute_import
from flask.views import MethodView
from flask.blueprints import Blueprint

from firefly.models.topic import Category, Post
from firefly.libs.template import render_template


bp = Blueprint("category", __name__, url_prefix="/category")


class CategoryView(MethodView):

    def get(self, slug):
        category = Category.objects.get_or_404(_slug=slug)
        posts = Post.objects.filter(
            category=category
        ).order_by("-recent_activity_time")
        return render_template('categories/detail.html',
                               category=category.name,
                               posts=posts)

bp.add_url_rule('/<slug>/', view_func=CategoryView.as_view('detail'))
Esempio n. 12
0
from flask.blueprints import Blueprint
from app.views.index.views import IndexView

index_bp = Blueprint('index', __name__,
                     template_folder='index')

index_bp.add_url_rule('/', view_func=IndexView.as_view('index'))

Esempio n. 13
0
        ticket = TicketModel.add_to_process(data.get('processId'), data.get('ticket'))
        return {'ticket': ticket}

    def delete(self, _id):
        res = TicketModel.delete_from_process(request.args.get('processId'), _id)
        return {'ticket': res}

    def patch(self, _id):
        data = request_data_to_dict(request.form)

        # Move ticket to another process
        if 'oldProcessId' in data and 'newProcessId' in data:
            ticket = TicketModel.move_to_process(
                old_process_id=data.get('oldProcessId'),
                new_process_id=data.get('newProcessId'),
                ticket=data.get('ticket')
            )
        # Edit existing ticket
        else:
            ticket = TicketModel.modify(data.get('processId'), _id, data.get('ticket'))

        return {'ticket': ticket}


ticket_blueprint = Blueprint('ticket_blueprint', __name__)
ticket_view = TicketResource.as_view('ticket_view')

ticket_blueprint.add_url_rule('/tickets', 'tickets', ticket_view)
ticket_blueprint.add_url_rule('/tickets/<string:_id>', 'ticket', ticket_view)

Esempio n. 14
0
            obj.full_path = new_full_path
            obj.full_path_ids = new_full_ids[:-1]

        DBSession.commit()
        flash(MSG_SAVE_SUCC, MESSAGE_INFO)
#        except:
#            DBSession.rollback()
#            _error(traceback.print_exc())
#            flash(MSG_SERVER_ERROR, MESSAGE_ERROR)
        return redirect(self.default())



    @templated('warehouse/view_items.html')
    def view_items(self):
        id = _g('id')
        w = DBSession.query(InventoryLocation).get(id)
        ids = w.full_path_ids.split("|")

        result = DBSession.query(InventoryItem, InventoryLocation).filter(and_(
                                                   InventoryItem.active == 0,
                                                   InventoryItem.location_id.in_(ids),
                                                   InventoryLocation.active == 0,
                                                   InventoryItem.location_id == InventoryLocation,
                                                   )).order_by(InventoryItem.create_time).all()
        return {'result' : result , 'location' : w}


bpWarehouse.add_url_rule('/', view_func = WarehouseView.as_view('view'), defaults = {'action':'index'})
bpWarehouse.add_url_rule('/<action>', view_func = WarehouseView.as_view('view'))
Esempio n. 15
0
__all__ = ['bpMaster']

bpMaster = Blueprint('bpMaster', __name__)

class MasterView(BasicView):

    def index(self):
        type = _g('type')
        master_mapping = {
                          'customer' : Customer,
#                          'vendor' : Vendor,
#                          'item' : Item,
                          }

        if type not in master_mapping :
            flash(MSG_NO_SUCH_ACTION, MESSAGE_ERROR)
            return redirect('/index')

        clz = master_mapping[type]
        result = DBSession.query(clz).filter(clz.active == 0).order_by(clz.name)
        return render_template('master/%s_index.html' % type, result = result)


    def update(self):
        return ''


bpMaster.add_url_rule('/', view_func = MasterView.as_view('view'), defaults = {'action':'index'})
bpMaster.add_url_rule('/<action>', view_func = MasterView.as_view('view'))
Esempio n. 16
0
    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        form = LoginForm()
        if form.validate_on_submit():
            login_user(form.user)
        return redirect(url_for('home.index'))


class RegisterView(MethodView):

    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        form = RegisterForm()
        if form.validate_on_submit():
            user = form.save()
            login_user(user)
        return redirect(url_for('home.index'))


bp.add_url_rule('/', view_func=HomeView.as_view('index'))
bp.add_url_rule('create/topic',
                view_func=CreateTopicView.as_view('create_topic'))
bp.add_url_rule('create/comment',
                view_func=CreateCommentView.as_view('create_comment'))
bp.add_url_rule('login', view_func=LoginView.as_view('login'))
bp.add_url_rule('register', view_func=RegisterView.as_view('register'))
Esempio n. 17
0
            result = SmUserMemberService.admin_delete_by_id(self.member_id)
            if result == 0:
                return jsonify(SUCCESS())
            elif result == 1:
                return jsonify(QUERY_NO_RESULT)
            elif result == 2:
                return jsonify(OTHER_ERROR)
        except Exception as e:  # 参数解析错误
            current_app.logger.error(e)
            return jsonify(OTHER_ERROR)
        return jsonify(OTHER_ERROR)


# 创建会员
user_member_bp.add_url_rule('/create',
                            methods=['POST'],
                            view_func=CreateMember.as_view('create_member'))
# 查询所有会员
user_member_bp.add_url_rule('/all',
                            methods=['POST'],
                            view_func=QueryAllMember.as_view('all_member'))
# 查询单个会员,通过id
user_member_bp.add_url_rule(
    '/query/<member_id>',
    methods=['POST'],
    view_func=QueryMemberByID.as_view('query_member_by_id'))
# 通过id修改会员
user_member_bp.add_url_rule(
    '/update/<member_id>',
    methods=['POST'],
    view_func=ChangeMemberByID.as_view('update_member_by_id'))
Esempio n. 18
0
class CreateView(MethodView):
    def post(self):
        title = request.form.get('title')
        content = request.form.get('content')
        category_id = request.form.get('category', '')
        if category_id.isdigit():
            category_id = int(category_id)
        category = Category.objects.filter(id=category_id).first()
        post = Post(title=title, content=content, category=category)
        post.save()
        return jsonify(ok=0)


class LoginView(MethodView):
    def get(self):
        if current_user.is_authenticated():
            return redirect(url_for('index'))
        return render_template('login.html')


class LogoutView(MethodView):
    def get(self):
        logout_user()
        return redirect(url_for('index'))


bp.add_url_rule('/', view_func=HomeView.as_view('index'))
bp.add_url_rule('create', view_func=CreateView.as_view('create'))
bp.add_url_rule('login', view_func=LogoutView.as_view('login'))
bp.add_url_rule('logout', view_func=LogoutView.as_view('logout'))
Esempio n. 19
0
from flask import url_for, redirect

from flask.views import MethodView
from flask.blueprints import Blueprint
from flask.ext.login import login_required, current_user
from firefly.libs.template import render_template
from firefly.forms.user import ProfileForm


bp = Blueprint('user', __name__, url_prefix='/user')


class UserView(MethodView):
    def get(self, id):
        return ''


class UserSettingsView(MethodView):
    decorators = [login_required]

    def get(self):
        return render_template('user/settings.html', user=current_user)

    def post(self):
        form = ProfileForm()
        form.save()
        return redirect(url_for('user.settings'))

bp.add_url_rule('/<id>/', view_func=UserView.as_view('detail'))
bp.add_url_rule('/settings', view_func=UserSettingsView.as_view('settings'))
Esempio n. 20
0
# coding=utf-8
from __future__ import absolute_import

from flask.views import MethodView
from flask.blueprints import Blueprint


bp = Blueprint('user', __name__, url_prefix='/user')


class UserView(MethodView):
    def get(self, id):
        return ''

bp.add_url_rule('/<id>/', view_func=UserView.as_view('detail'))
Esempio n. 21
0
from flask.blueprints import Blueprint
from test.views import DetailView

testxx = Blueprint("test", __name__)

testxx.add_url_rule('/',view_func=DetailView.as_view('detail'))
Esempio n. 22
0
# coding=utf-8
from flask.blueprints import Blueprint
from flask.globals import request

from api.core.views import BaseResourceView
from api.models.user import UserModel


class UserResource(BaseResourceView):
    """ Resource for authentication """

    def get(self):
        # Search user
        users = UserModel.search(
            keyword=request.args.get('keyword'),
            fields=('username', '_id')
        )
        return {'users': users}

    def post(self, _id=None):
        UserModel.register(request.form)
        return 'ok'

user_blueprint = Blueprint('user_blueprint', __name__)
user_view = UserResource.as_view('user_view')

user_blueprint.add_url_rule('/users', 'users', user_view)
user_blueprint.add_url_rule('/users/<string:_id>', 'user', user_view)

Esempio n. 23
0
            current_app.logger.error(e)
            return jsonify(POST_PARA_ERROR)

    def response_agent(self):
        try:
            result = SmClerkService.query_all(agent_id=self.u_id,
                                              **self.unpack_para(request.json))
            self.pop_no_need(result['rows'])
            return jsonify(SUCCESS(result))
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(POST_PARA_ERROR)


# 创建业务员
clerk_bp.add_url_rule('/create',
                      methods=['POST'],
                      view_func=ClerkCreateView.as_view('clerk_create'))
# 删除业务员-----通过id
clerk_bp.add_url_rule('/delete/<clerk_id>',
                      methods=['POST'],
                      view_func=DeleteClerkByID.as_view('clerk_delete'))
# 更新业务员-----通过id
clerk_bp.add_url_rule('/update/<clerk_id>',
                      methods=['POST'],
                      view_func=UpdateClerkByID.as_view('clerk_update'))
# 查询所有业务员
clerk_bp.add_url_rule('/all',
                      methods=['POST'],
                      view_func=QueryAllView.as_view('clerk_query_all'))
Esempio n. 24
0
from flask.blueprints import Blueprint


v1_telegram = Blueprint('v1_telegram', __name__)

from .controllers import *

v1_telegram.add_url_rule('/msg', view_func=ManagerTelegram.as_view('ManagerTelegram'))
v1_telegram.add_url_rule('/webhook', view_func=ManagerWebhook.as_view('ManagerWebhook'))
Esempio n. 25
0
        title = request.form.get("title")
        content = request.form.get("content")
        category_id = request.form.get("category", "")
        if category_id.isdigit():
            category_id = int(category_id)
        category = Category.objects.filter(id=category_id).first()
        post = Post(title=title, content=content, category=category)
        post.save()
        html = render_template_def("/widgets/topic_item.html", "main", post=post, is_new=True)

        return jsonify(ok=0, html=html)


class LoginView(MethodView):
    def get(self):
        if current_user.is_authenticated():
            return redirect(url_for("index"))
        return render_template("login.html")


class LogoutView(MethodView):
    def get(self):
        logout_user()
        return redirect(url_for("index"))


bp.add_url_rule("/", view_func=HomeView.as_view("index"))
bp.add_url_rule("create", view_func=CreateView.as_view("create"))
bp.add_url_rule("login", view_func=LoginView.as_view("login"))
bp.add_url_rule("logout", view_func=LogoutView.as_view("logout"))
Esempio n. 26
0
    def get(self):
        processes = ProcessModel.query(spec={})
        return {'processes': [p for p in processes]}

    def post(self):
        process = request.form.to_dict()
        process_id = ProcessModel.create(process)
        return {'process': {'_id': process_id}}

    def delete(self, _id):
        ProcessModel.delete(_id)
        return {'process': {}}

    def patch(self, _id):
        process = request.form.to_dict()
        # Get id of process will be updated
        _id = process['_id']
        # Delete _id in process for update process without touching _id
        del process['_id']
        process = ProcessModel.modify(_id, process)
        return {'process': process}


process_blueprint = Blueprint('process_blueprint', __name__)
process_view = ProcessResource.as_view('process_view')

process_blueprint.add_url_rule('/processes', 'processes', process_view)
process_blueprint.add_url_rule('/processes/<string:_id>', 'process', process_view)

Esempio n. 27
0
                                            data.get('ticket'))
        return {'ticket': ticket}

    def delete(self, _id):
        res = TicketModel.delete_from_process(request.args.get('processId'),
                                              _id)
        return {'ticket': res}

    def patch(self, _id):
        data = request_data_to_dict(request.form)

        # Move ticket to another process
        if 'oldProcessId' in data and 'newProcessId' in data:
            ticket = TicketModel.move_to_process(
                old_process_id=data.get('oldProcessId'),
                new_process_id=data.get('newProcessId'),
                ticket=data.get('ticket'))
        # Edit existing ticket
        else:
            ticket = TicketModel.modify(data.get('processId'), _id,
                                        data.get('ticket'))

        return {'ticket': ticket}


ticket_blueprint = Blueprint('ticket_blueprint', __name__)
ticket_view = TicketResource.as_view('ticket_view')

ticket_blueprint.add_url_rule('/tickets', 'tickets', ticket_view)
ticket_blueprint.add_url_rule('/tickets/<string:_id>', 'ticket', ticket_view)
Esempio n. 28
0

class LoginView(MethodView):
    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        # TODO 解决在首页登录框中无法获取 csrf_token 的问题
        form = LoginForm(csrf_enabled=False)
        if form.validate_on_submit():
            login_user(form.user)
        return redirect(url_for('home.index'))


class RegisterView(MethodView):
    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        form = RegisterForm(csrf_enabled=False)
        if form.validate_on_submit():
            user = form.save()
            login_user(user)
        return redirect(url_for('home.index'))


bp.add_url_rule('/', view_func=HomeView.as_view('index'))
bp.add_url_rule('create', view_func=CreateView.as_view('create'))
bp.add_url_rule('login', view_func=LoginView.as_view('login'))
bp.add_url_rule('register', view_func=RegisterView.as_view('register'))
Esempio n. 29
0
        if waitlist_id is None:
            waitlists = db.session.query(Waitlist).all()
            return jsonify(make_json_waitlists_base_data(waitlists))
        else:
            waitlist = db.session.query(Waitlist).get(waitlist_id)
            if waitlist is None:
                flask.abort(404, "No such waitlist")
            if waitlist_id is None:
                flask.abort(404, 'No Waitlist with this ID found')
            return jsonify(make_json_waitlist_base_data(waitlist))


groups_view = WaitlistGroupsAPI.as_view('groups')
waitlist_base_view = WaitlistBaseDataAPI.as_view('wlbasedata')

bp.add_url_rule(rule='/groups/',
                defaults={'group_id': None},
                view_func=groups_view,
                methods=['GET'])
bp.add_url_rule(rule='/groups/<int:group_id>',
                view_func=groups_view,
                methods=['GET'])

bp.add_url_rule(rule='/waitlists/',
                defaults={'waitlist_id': None},
                view_func=waitlist_base_view,
                methods=['GET'])
bp.add_url_rule(rule='/waitlists/<int:waitlist_id>',
                view_func=waitlist_base_view,
                methods=['GET'])
Esempio n. 30
0
def listen_func() -> str:
    """
    行情报价的处理函数.接受交易平台推送过来的实时报价.
    典型的url:
    """

    headers = request.headers
    mes = {"message": "success"}
    headers = {
        k.lower(): (v.lower() if isinstance(v, str) else v)
        for k, v in headers.items()
    }
    auth_req = headers.get("x-auth", "")
    auth_str = "274e9735e2c94d60bd903e45c96fc3b6"
    # if auth_str != auth_req:
    #     return abort(404)
    # else:
    #     mes = {"message": "success"}
    return json.dumps(mes)


"""集中注册函数"""

quotations_blueprint.add_url_rule(rule="/",
                                  view_func=index_func,
                                  methods=['get', 'post'])  # hello world
quotations_blueprint.add_url_rule(rule="/listen",
                                  view_func=listen_func,
                                  methods=['get', 'post'])  # 接收实时行情
Esempio n. 31
0
 def register(self):
     blueprint = Blueprint("index", __name__, template_folder="templates")
     blueprint.add_url_rule("/", "default", self.render_default)
     blueprint.add_url_rule("/data", "data", self.render_data)
     blueprint.add_url_rule("/graph", "graph", self.render_graph)
     blueprint.add_url_rule("/graph.json", "graph_data", self.render_graph_data)
     blueprint.add_url_rule("/setup", "setup", self.render_setup, methods=["GET", "POST"])
     blueprint.add_url_rule("/ble", "ble", self.render_ble)
     blueprint.add_url_rule("/serial", "serial", self.render_serial)
     blueprint.add_url_rule("/tc66c-import", "tc66c_import", self.render_tc66c_import, methods=["GET", "POST"])
     blueprint.context_processor(self.fill)
     return blueprint
Esempio n. 32
0
        user = AuthModel.get_current_user()
        return {'user': user}

    def post(self):
        """ Login user """

        user = AuthModel.auth(request.form.get('username'), request.form.get('password'))
        if user:
            session_id = AuthModel.login(user)
            resp = jsonify({'user': user})
            resp.set_cookie(SESSION_NAME, session_id)
            return resp
        else:
            raise CannotLogin('Cannot login user. Please verify your information.')

    def delete(self):
        """ Logout user """

        resp = Response()
        session_id = request.cookies.get(SESSION_NAME)
        if session_id:
            Db.sessions.remove({'_id': session_id})
            resp.set_cookie(SESSION_NAME, '', expires=0)
        return resp

auth_blueprint = Blueprint('auth_blueprint', __name__)
auth_view = AuthResource.as_view('auth_view')

auth_blueprint.add_url_rule('/auth', 'auth', auth_view)
Esempio n. 33
0
                data = r['data']
                data = BytesIO(initial_bytes=data)
                resp = make_response(
                    send_file(data,
                              attachment_filename=file_name,
                              as_attachment=True,
                              mimetype=mime_type))
                return resp
        else:
            mes['message'] = '无效的id'
    else:
        mes['message'] = "不支持的操作"
    return json.dumps(mes)


def page_flash_images():
    """
    分页显示闪卡
    :return:
    """


"""集中注册函数"""
"""hello"""
flash_blueprint.add_url_rule(rule="/hello",
                             view_func=hello,
                             methods=['get', 'post'])
"""保存或者获取文件(mongodb存储)"""
flash_blueprint.add_url_rule(rule="/file/<action>/<table_name>",
                             view_func=file_func,
                             methods=['post', 'get'])
Esempio n. 34
0
# coding=utf-8
from flask import request
from flask.views import MethodView
from flask.blueprints import Blueprint
from flask_mako import render_template

from firefly.models.consts import KEYBOARD_URL_MAPS

bp = Blueprint('keyboard', __name__, url_prefix='/keyboard')


class KeyboardView(MethodView):
    def get(self):
        url = request.args.get('url', '')
        url_pattern = url.rsplit('/', 1)[0]
        keyboards = KEYBOARD_URL_MAPS['default']
        if url_pattern in KEYBOARD_URL_MAPS:
            keyboards += KEYBOARD_URL_MAPS[url_pattern]
        return render_template('widgets/keyboard.html', keyboards=keyboards)


bp.add_url_rule('/', view_func=KeyboardView.as_view('keyboard'))
Esempio n. 35
0
                mes['message'] = ms
        elif the_type == "un_follow":
            """反跟随老师"""
            mes = WXUser.un_follow(user_id=user['_id'])
        else:
            ms = "未知的操作:{}".format(the_type)
            logger.exception(msg=ms)
            mes['message'] = ms
    return json.dumps(mes)


"""集中注册函数"""


"""hello"""
user_blueprint.add_url_rule(rule="/hello", view_func=hello, methods=['get', 'post'])
"""短信的发送和验证  send/check"""
user_blueprint.add_url_rule(rule="/sms/<key>", view_func=sms_func, methods=['get', 'post'])
"""保存或者获取文件(mongodb存储)"""
user_blueprint.add_url_rule(rule="/file/<action>/<table_name>", view_func=file_func, methods=['post', 'get'])
"""通用页面视图"""
user_blueprint.add_url_rule(rule="/html/<html_name>", view_func=common_view_func, methods=['post', 'get'])
"""获取用户授权页面"""
user_blueprint.add_url_rule(rule="/auth_demo/<key>", view_func=auth_demo, methods=['post', 'get'])
"""页面授权示范页"""
user_blueprint.add_url_rule(rule="/page_auth_demo", view_func=page_auth_demo, methods=['post', 'get'])
"""生产环境,获取用户code"""
user_blueprint.add_url_rule(rule="/get_code_and_redirect", view_func=get_code_and_redirect, methods=['post', 'get'])
"""生产环境,获取用户信息"""
user_blueprint.add_url_rule(rule="/draw_user_info", view_func=draw_user_info, methods=['post', 'get'])
"""生产环境,获取JS-SDK初始化用的脚本"""
Esempio n. 36
0
# -*- coding: utf-8 -*-

"""
.. module:: pravis.simple
   :synopsis: Blueprint setup for Simple module
"""

from flask.blueprints import Blueprint
from pravis.simple.views import LoginView

blueprint = Blueprint('simple', __name__, url_prefix='/simple/')
blueprint.add_url_rule('/', view_func=LoginView.as_view('simple'))
Esempio n. 37
0
class Module(metaclass=ModuleMeta):
    id: str = None
    endpoint: str = None
    label: str = None
    managed_class: type = None
    list_view = None
    list_view_columns: List[Dict[str, Any]] = []
    single_view = None
    components: Tuple = ()

    # class based views. If not provided will be automaticaly created from
    # EntityView etc defined below
    base_template = "base.html"
    view_cls = EntityView
    edit_cls = EntityEdit
    create_cls = EntityCreate
    delete_cls = EntityDelete
    json_search_cls = JSONWhooshSearch
    JSON2_SEARCH_LENGTH = 50

    # form_class. Used when view_cls/edit_cls are not provided
    edit_form_class = None
    view_form_class = None  # by default, same as edit_form_class

    url = None
    name = None
    view_new_save_and_add = False  # show 'save and add new' button in /new form
    static_folder = None
    view_template = None
    view_options = None
    related_views: List["RelatedView"] = []
    blueprint = None
    search_criterions = (
        search.TextSearchCriterion("name", attributes=("name", "nom")),
    )
    # used mostly to change datatable search_label
    tableview_options = {}  # type: ignore
    _urls: List[Tuple] = []

    def __init__(self) -> None:
        # If endpoint name is not provided, get it from the class name
        if self.endpoint is None:
            class_name = self.__class__.__name__
            if class_name.endswith("Module"):
                class_name = class_name[0 : -len("Module")]
            self.endpoint = class_name.lower()

        if self.label is None:
            self.label = labelize(self.endpoint)

        if self.id is None:
            self.id = self.managed_class.__name__.lower()

        # If name is not provided, use capitalized endpoint name
        if self.name is None:
            self.name = self._prettify_name(self.__class__.__name__)

        if self.view_options is None:
            self.view_options = {}

        # self.single_view = make_single_view(self.edit_form_class,
        #                                     view_template=self.view_template,
        #                                     **self.view_options)
        if self.view_form_class is None:
            self.view_form_class = self.edit_form_class

        # init class based views
        kw = {
            "Model": self.managed_class,
            "pk": "entity_id",
            "module": self,
            "base_template": self.base_template,
        }
        self._setup_view(
            "/<int:entity_id>",
            "entity_view",
            self.view_cls,
            Form=self.view_form_class,
            **kw,
        )
        view_endpoint = self.endpoint + ".entity_view"

        self._setup_view(
            "/<int:entity_id>/edit",
            "entity_edit",
            self.edit_cls,
            Form=self.edit_form_class,
            view_endpoint=view_endpoint,
            **kw,
        )

        self._setup_view(
            "/new",
            "entity_new",
            self.create_cls,
            Form=self.edit_form_class,
            chain_create_allowed=self.view_new_save_and_add,
            view_endpoint=view_endpoint,
            **kw,
        )

        self._setup_view(
            "/<int:entity_id>/delete",
            "entity_delete",
            self.delete_cls,
            Form=self.edit_form_class,
            view_endpoint=view_endpoint,
            **kw,
        )

        self._setup_view("/json", "list_json", ListJson, module=self)

        self._setup_view(
            "/json_search",
            "json_search",
            self.json_search_cls,
            Model=self.managed_class,
        )

        self.init_related_views()

        # copy criterions instances; without that they may be shared by
        # subclasses
        self.search_criterions = copy.deepcopy(self.__class__.search_criterions)

        for sc in self.search_criterions:
            sc.model = self.managed_class

        self.__components = {}
        for component in self.components:
            component.init_module(self)
            self.__components[component.name] = component

    def get_component(self, name):
        return self.__components.get(name)

    def _setup_view(self, url: str, attr: str, cls: Any, *args, **kwargs) -> None:
        """Register class based views."""
        view = cls.as_view(attr, *args, **kwargs)
        setattr(self, attr, view)
        self._urls.append((url, attr, view.methods))

    def init_related_views(self) -> None:
        related_views = []
        for view in self.related_views:
            if not isinstance(view, RelatedView):
                view = DefaultRelatedView(*view)
            related_views.append(view)
        self.related_views = related_views

    @property
    def action_category(self) -> str:
        return f"module:{self.endpoint}"

    def get_grouped_actions(self) -> OrderedDict:
        items = actions.for_category(self.action_category)
        groups = OrderedDict()
        for action in items:
            groups.setdefault(action.group, []).append(action)

        return groups

    def register_actions(self) -> None:
        ACTIONS = [
            ModuleAction(
                self,
                "entity",
                "create",
                title=_l("Create New"),
                icon=FAIcon("plus"),
                endpoint=Endpoint(self.endpoint + ".entity_new"),
                button="default",
            )
        ]
        for component in self.components:
            ACTIONS.extend(component.get_actions())

        actions.register(*ACTIONS)

    def create_blueprint(self, crud_app: "CRUDApp") -> Blueprint:
        """Create a Flask blueprint for this module."""
        # Store admin instance
        self.crud_app = crud_app
        self.app = crud_app.app

        # If url is not provided, generate it from endpoint name
        if self.url is None:
            self.url = f"{self.crud_app.url}/{self.endpoint}"
        else:
            if not self.url.startswith("/"):
                self.url = f"{self.crud_app.url}/{self.url}"

        # Create blueprint and register rules
        self.blueprint = Blueprint(self.endpoint, __name__, url_prefix=self.url)

        for url, name, methods in self._urls:
            self.blueprint.add_url_rule(url, name, getattr(self, name), methods=methods)

        # run default_view decorator
        default_view(self.blueprint, self.managed_class, id_attr="entity_id")(
            self.entity_view
        )

        # delay registration of our breadcrumbs to when registered on app; thus
        # 'parents' blueprint can register theirs befores ours
        self.blueprint.record_once(self._setup_breadcrumb_preprocessors)

        return self.blueprint

    def _setup_breadcrumb_preprocessors(self, state: BlueprintSetupState) -> None:
        self.blueprint.url_value_preprocessor(self._add_breadcrumb)

    def _add_breadcrumb(self, endpoint: str, values: Dict[Any, Any]) -> None:
        g.breadcrumb.append(
            BreadcrumbItem(label=self.label, url=Endpoint(".list_view"))
        )

    @property
    def base_query(self) -> EntityQuery:
        """Return a query instance for :attr:`managed_class`."""
        return self.managed_class.query

    @property
    def read_query(self):
        """Return a query instance for :attr:`managed_class` filtering on
        `READ` permission."""
        return self.base_query.with_permission(READ)

    @property
    def listing_query(self) -> EntityQuery:
        """Like `read_query`, but can be made lightweight with only columns and
        joins of interest.

        `read_query` can be used with exports for example, with lot more
        columns (generallly it means more joins).
        """
        return self.base_query.with_permission(READ)

    def query(self, request: Request):
        """Return filtered query based on request args."""
        args = request.args
        search = args.get("sSearch", "").replace("%", "").lower()
        query = self.read_query.distinct()

        for crit in self.search_criterions:
            query = crit.filter(query, self, request, search)

        return query

    def list_query(self, request: Request) -> EntityQuery:
        """Return a filtered query based on request args, for listings.

        Like `query`, but subclasses can modify it to remove costly
        joined loads for example.
        """
        args = request.args
        search = args.get("sSearch", "").replace("%", "").lower()
        query = self.listing_query
        query = query.distinct()

        for crit in self.search_criterions:
            query = crit.filter(query, self, request, search)

        return query

    def ordered_query(
        self, request: Request, query: Optional[EntityQuery] = None
    ) -> EntityQuery:
        """Order query according to request args.

        If query is None, the query is generated according to request
        args with self.query(request)
        """
        if query is None:
            query = self.query(request)

        engine = query.session.get_bind(self.managed_class.__mapper__)
        args = request.args
        sort_col = int(args.get("iSortCol_0", 1))
        sort_dir = args.get("sSortDir_0", "asc")
        sort_col_def = self.list_view_columns[sort_col]
        sort_col_name = sort_col_def["name"]
        rel_sort_names = sort_col_def.get("sort_on", (sort_col_name,))
        sort_cols = []

        for rel_col in rel_sort_names:
            sort_col = getattr(self.managed_class, rel_col)
            if hasattr(sort_col, "property") and isinstance(
                sort_col.property, orm.properties.RelationshipProperty
            ):
                # this is a related model: find attribute to filter on
                query = query.outerjoin(sort_col_name, aliased=True)

                rel_model = sort_col.property.mapper.class_
                default_sort_name = "name"
                if issubclass(rel_model, BaseVocabulary):
                    default_sort_name = "label"

                rel_sort_name = sort_col_def.get("relationship_sort_on", None)
                if rel_sort_name is None:
                    rel_sort_name = sort_col_def.get("sort_on", default_sort_name)
                sort_col = getattr(rel_model, rel_sort_name, None)

            # XXX: Big hack, date are sorted in reverse order by default
            if isinstance(sort_col, (Date, DateTime)):
                sort_dir = "asc" if sort_dir == "desc" else "desc"

            elif (
                isinstance(sort_col, sa.types.String)
                or hasattr(sort_col, "property")
                and isinstance(sort_col.property.columns[0].type, sa.types.String)
            ):
                sort_col = func.lower(sort_col)

            if sort_col is not None:
                try:
                    direction = desc if sort_dir == "desc" else asc
                    sort_col = direction(sort_col)
                except Exception:
                    # FIXME
                    pass

                # sqlite does not support 'NULLS FIRST|LAST' in ORDER BY
                # clauses
                if engine.name != "sqlite":
                    nullsorder = nullslast if sort_dir == "desc" else nullsfirst
                    try:
                        sort_col = nullsorder(sort_col)
                    except Exception:
                        # FIXME
                        pass

                sort_cols.append(sort_col)

        if sort_cols:
            try:
                query = query.order_by(*sort_cols)
            except Exception:
                # FIXME
                pass
        query.reset_joinpoint()
        return query

    #
    # Exposed views
    #
    @expose("/")
    def list_view(self) -> str:
        actions.context["module"] = self
        table_view = AjaxMainTableView(
            name=self.managed_class.__name__.lower(),
            columns=self.list_view_columns,
            ajax_source=url_for(".list_json"),
            search_criterions=self.search_criterions,
            options=self.tableview_options,
        )
        rendered_table = table_view.render()

        ctx = {
            "rendered_table": rendered_table,
            "module": self,
            "base_template": self.base_template,
        }
        return render_template("default/list_view.html", **ctx)

    def list_json2_query_all(self, q):
        """Implements the search query for the list_json2 endpoint.

        May be re-defined by a Module subclass in order to customize
        the search results.

        - Return: a list of results (not json) with an 'id' and a
          'text' (that will be displayed in the select2).
        """
        cls = self.managed_class
        query = db.session.query(cls.id, cls.name)
        query = (
            query.filter(cls.name.ilike("%" + q + "%"))
            .distinct()
            .order_by(cls.name)
            .limit(self.JSON2_SEARCH_LENGTH)
        )
        results = query.all()
        results = [{"id": r[0], "text": r[1]} for r in results]
        return results

    @expose("/json2")
    def list_json2(self):
        """Other JSON endpoint, this time used for filling select boxes
        dynamically.

        You can write your own search method in list_json2_query_all,
        that returns a list of results (not json).
        """
        args = request.args

        q = args.get("q", "").replace("%", " ")
        if not q or len(q) < 2:
            raise BadRequest()

        results = self.list_json2_query_all(q)
        return {"results": results}

    #
    # Utils
    #
    def is_current(self):
        return request.path.startswith(self.url)

    @staticmethod
    def _prettify_name(name: str) -> str:
        """Prettify class name by splitting name by capital characters.

        So, 'MySuperClass' will look like 'My Super Class'

        `name`
          String to prettify
        """
        return re.sub(r"(?<=.)([A-Z])", r" \1", name)
Esempio n. 38
0
class LoginView(MethodView):
    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        form = LoginForm()
        if form.validate_on_submit():
            login_user(form.user)
        return redirect(url_for('home.index'))


class RegisterView(MethodView):
    def get(self):
        return redirect(url_for('home.index'))

    def post(self):
        form = RegisterForm()
        if form.validate_on_submit():
            user = form.save()
            login_user(user)
        return redirect(url_for('home.index'))


bp.add_url_rule('/', view_func=HomeView.as_view('index'))
bp.add_url_rule('create/topic',
                view_func=CreateTopicView.as_view('create_topic'))
bp.add_url_rule('create/comment',
                view_func=CreateCommentView.as_view('create_comment'))
bp.add_url_rule('login', view_func=LoginView.as_view('login'))
bp.add_url_rule('register', view_func=RegisterView.as_view('register'))
Esempio n. 39
0
"""用于闪卡训练的视图函数"""


def hello() -> str:
    """hello world"""
    return "hello user"


def syllabus_view_func() -> str:
    """
    课程表
    :return:
    """


def page_flash_images():
    """
    分页显示闪卡
    :return:
    """


"""集中注册函数"""
"""hello"""
user_blueprint.add_url_rule(rule="/hello",
                            view_func=hello,
                            methods=['get', 'post'])
"""课程表"""
user_blueprint.add_url_rule(rule="/syllabus",
                            view_func=syllabus_view_func,
                            methods=['post', 'get'])
Esempio n. 40
0
        posts = Post.objects.all()
        return render_template('index.html', posts=posts)


class CreateView(MethodView):
    def post(self):
        title = request.form.get('title')
        content = request.form.get('content')
        post = Post(title=title, content=content)
        post.save()
        return jsonify(ok=0)


class LoginView(MethodView):
    def get(self):
        if current_user.is_authenticated():
            return redirect(url_for('index'))
        return render_template('login.html')


class LogoutView(MethodView):
    def get(self):
        logout_user()
        return redirect(url_for('index'))


bp.add_url_rule('/', view_func=HomeView.as_view('index'))
bp.add_url_rule('create', view_func=CreateView.as_view('create'))
bp.add_url_rule('login', view_func=LogoutView.as_view('login'))
bp.add_url_rule('logout', view_func=LogoutView.as_view('logout'))
Esempio n. 41
0
# coding=utf-8
from flask import request
from flask.views import MethodView
from flask.blueprints import Blueprint
from flask_mako import render_template

from firefly.models.consts import KEYBOARD_URL_MAPS


bp = Blueprint('keyboard', __name__, url_prefix='/keyboard')


class KeyboardView(MethodView):
    def get(self):
        url = request.args.get('url', '')
        url_pattern = url.rsplit('/', 1)[0]
        keyboards = KEYBOARD_URL_MAPS['default']
        if url_pattern in KEYBOARD_URL_MAPS:
            keyboards += KEYBOARD_URL_MAPS[url_pattern]
        return render_template('widgets/keyboard.html', keyboards=keyboards)


bp.add_url_rule('/', view_func=KeyboardView.as_view('keyboard'))
Esempio n. 42
0
    def post(self):
        """ Login user """

        user = AuthModel.auth(request.form.get('username'),
                              request.form.get('password'))
        if user:
            session_id = AuthModel.login(user)
            resp = jsonify({'user': user})
            resp.set_cookie(SESSION_NAME, session_id)
            return resp
        else:
            raise CannotLogin(
                'Cannot login user. Please verify your information.')

    def delete(self):
        """ Logout user """

        resp = Response()
        session_id = request.cookies.get(SESSION_NAME)
        if session_id:
            Db.sessions.remove({'_id': session_id})
            resp.set_cookie(SESSION_NAME, '', expires=0)
        return resp


auth_blueprint = Blueprint('auth_blueprint', __name__)
auth_view = AuthResource.as_view('auth_view')

auth_blueprint.add_url_rule('/auth', 'auth', auth_view)
Esempio n. 43
0
            "form": form
        }
        return context

    def get(self, id):
        context = self.get_context(id)
        Post.objects(id=id).update_one(inc__views=1)
        return render_template('posts/detail.html', **context)

    def post(self, id):
        if not current_user.is_authenticated():
            abort(403)

        context = self.get_context(id)
        form = context.get('form')

        if form.validate():
            comment = Comment()
            form.populate_obj(comment)
            comment.author = User.objects.get_or_404(id=current_user.id)
            comment.save()

            post = context.get('post')
            post.comments.append(comment)
            post.save()

            return redirect(url_for('post.detail', id=id))
        return render_template('posts/detail.html', **context)

bp.add_url_rule('/<int:id>/', view_func=DetailView.as_view('detail'))
Esempio n. 44
0
                                  as_attachment=True,
                                  mimetype=mime_type))
                    return resp
            else:
                mes['message'] = '无效的id'
        else:
            mes['message'] = "不支持的操作"
        return json.dumps(mes)
    else:
        return redirect(url_for("web_blueprint.login_func"))


"""集中注册函数"""
"""注册"""
web_blueprint.add_url_rule(rule="/login",
                           view_func=login_func,
                           methods=['get', 'post'])
"""登出"""
web_blueprint.add_url_rule(rule="/logout",
                           view_func=logout_func,
                           methods=['get', 'post'])
"""对公司的简历收藏夹的操作"""
web_blueprint.add_url_rule(rule="/favorite/<key>",
                           view_func=resume_favorite_func,
                           methods=['get', 'post'])
"""分页查询司机信息"""
web_blueprint.add_url_rule(rule="/drivers",
                           view_func=driver_page_func,
                           methods=['get', 'post'])
"""公司客户查看司机简历"""
web_blueprint.add_url_rule(rule="/company/resume",
Esempio n. 45
0
        try:
            result = SmAgentDrawingService.query_withdraw_all(
                AgentID=self.u_id, **self.unpack_para(request.json))
            return jsonify(SUCCESS(result)) if result else jsonify(
                SUCCESS({
                    'total': 0,
                    'rows': []
                }))
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(SUCCESS({'total': 0, 'rows': []}))


# 充值创建
fund_bp.add_url_rule('/recharge',
                     methods=['POST'],
                     view_func=RechargeFund.as_view('fund_recharge'))
# 转账流水
fund_bp.add_url_rule(
    '/recharge_record',
    methods=['POST'],
    view_func=RechargeRecordFund.as_view('fund_recharge_record'))
# 提款
fund_bp.add_url_rule('/withdraw',
                     methods=['POST'],
                     view_func=WithdrawFund.as_view('fund_withdraw'))
# 查询会员提款
fund_bp.add_url_rule(
    '/withdraw_record',
    methods=['POST'],
    view_func=MemberWithdrawRecordFund.as_view('fund_withdraw_record_member'))
Esempio n. 46
0
# coding=utf-8
from flask.blueprints import Blueprint

from .category import category_view

bp = Blueprint("api", __name__, url_prefix="/api")

bp.add_url_rule('/category/', defaults={'name': None}, view_func=category_view)
bp.add_url_rule('/category/<string:name>', view_func=category_view)
Esempio n. 47
0
from flask.blueprints import Blueprint
from trading_system.api.auth_middleware import auth_middleware
from .controllers import TicketsController, TicketController


tickets = Blueprint('tickets', __name__, url_prefix='/tickets')
tickets.before_request(auth_middleware)

tickets.add_url_rule('/', view_func=TicketsController.as_view('tickets_view'), methods=['GET', 'POST'])
tickets.add_url_rule('/<int:ticket_id>', view_func=TicketController.as_view('ticket_view'), methods=['GET', 'DELETE'])
Esempio n. 48
0
        try:
            for f in ['discount_return_time', 'discount_return_person_id', 'discount_return_remark', 'actual_proxy_charge']:
                setattr(header, f, _g(f))
            header.is_discount_return = 1
            DBSession.commit()
            return jsonify({'code' : 0 , 'msg' : MSG_SAVE_SUCC})
        except:
            DBSession.rollback()
            _error(traceback.print_exc())
            return jsonify({'code' : 1 , 'msg' : MSG_SERVER_ERROR})


    def ajax_get_discount(self):
        id = _g('id')
        if not id:
            return jsonify({'code' : 1 , 'msg' : MSG_NO_ID_SUPPLIED})
        header = DBSession.query(OrderHeader).get(id)
        if not header:
            return jsonify({'code' : 1 , 'msg' : MSG_RECORD_NOT_EXIST})

        return jsonify({'code' : 0 , 'data' : {
                                             'ref_no' : header.ref_no,
                                             'actual_proxy_charge' : header.actual_proxy_charge,
                                             'discount_return_time' : header.discount_return_time,
                                             'discount_return_person_id' : header.discount_return_person_id,
                                             'discount_return_remark' : header.discount_return_remark,
                                             }})

bpFin.add_url_rule('/', view_func = FinView.as_view('view'), defaults = {'action':'index'})
bpFin.add_url_rule('/<action>', view_func = FinView.as_view('view'))
Esempio n. 49
0
    """ Resource for process """
    def get(self):
        processes = ProcessModel.query(spec={})
        return {'processes': [p for p in processes]}

    def post(self):
        process = request.form.to_dict()
        process_id = ProcessModel.create(process)
        return {'process': {'_id': process_id}}

    def delete(self, _id):
        ProcessModel.delete(_id)
        return {'process': {}}

    def patch(self, _id):
        process = request.form.to_dict()
        # Get id of process will be updated
        _id = process['_id']
        # Delete _id in process for update process without touching _id
        del process['_id']
        process = ProcessModel.modify(_id, process)
        return {'process': process}


process_blueprint = Blueprint('process_blueprint', __name__)
process_view = ProcessResource.as_view('process_view')

process_blueprint.add_url_rule('/processes', 'processes', process_view)
process_blueprint.add_url_rule('/processes/<string:_id>', 'process',
                               process_view)
Esempio n. 50
0
                if obj.status == 1:  # if the record is approved,update the real qty/weight/area
                    t.qty -= qty - d.qty
                    t.weight -= weight - d.weight
                    t.area -= area - d.area
                t.exp_qty -= qty - d.qty
                t.exp_weight -= weight - d.weight
                t.exp_area -= area - d.area

            d.qty = qty
            d.weight = weight
            d.area = area

        obj.qty = total_qty
        obj.area = total_area
        obj.weight = total_weight

        DBSession.commit()
        flash(MSG_UPDATE_SUCC, MESSAGE_INFO)
        return redirect(url_for(".view", action = "out_note_review", id = obj.id))


    def _p(self, v, fun, default = 0):
        try:
            return fun(v)
        except:
            return default

bpInventory.add_url_rule('/', view_func = InventoryView.as_view('view'), defaults = {'action':'index'})
bpInventory.add_url_rule('/<action>', view_func = InventoryView.as_view('view'))