Example #1
0
def lookupvalues_upload(store_id):
    from application.forms.ops import CreateLookupvalueForm
    from application.createlookupvalues import generate_lookup, generate_lookupvalue
    from application.nutils.excel import load_excel

    store_name = Store.find_storename_by_store_id(store_id).name

    form = CreateLookupvalueForm()

    redirect_url = redirect(
        url_for('ops.lookupvalues_upload', store_id=store_id), code=303)

    if form.validate_on_submit():
        filename = secure_filename(form.lookupvalue_file.data.filename)
        if check_filename(filename, store_id):
            lookupvalues_file = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
            form.lookupvalue_file.data.save(lookupvalues_file)

            lookupvalues_data = load_excel(lookupvalues_file)

            lookup_ids = generate_lookup(store_id)

            if generate_lookupvalue(lookup_ids, lookupvalues_data):
                flash_success(u"店面信息导入完成")
                return redirect_url

        else:
            flash_error(u'上传的文件名错误')
            return redirect_url

    return render_template('ops/lookupvalues_upload.html', storename=store_name, form=form)
Example #2
0
def lookupvalues_add(lookup_id):
    from application.models.lookup import Lookup
    from application.createlookupvalues import add_lookupvalue, check_looupvalue

    lookup_by_store_and_name = Lookup.get_description_by_store_id(lookup_id)
    descriptions = get_stores_descriptions_and_lookupvalues(lookup_id)
    version = lookup_by_store_and_name.version

    store_name = Store.find_storename_by_store_id(lookup_by_store_and_name.store_id).name

    if request.method == 'POST':
        changevalues = convert_changevalues(request.form)
        message = check_looupvalue(lookup_id, changevalues)
        if message:
            flash_error(message)
            return redirect(url_for('ops.lookupvalues_add', lookup_id=lookup_id), code=303)

        count = add_lookupvalue(lookup_id, version, changevalues)
        if count is None:
            flash_error(u"更新失败!")
        elif count == 0:
            flash_info(u"未发生更新!")
        else:
            flash_success(u"成功更新%s条信息!" % count)

        return redirect(url_for('ops.lookupvalues_add', lookup_id=lookup_id), code=303)

    return render_template('ops/lookupvalues_add.html', store_name=store_name, lookup_by_id=lookup_by_store_and_name,
                           descriptions=descriptions, lookup_id=lookup_id)
Example #3
0
def modify_password():
    form = ResetPasswordForm()

    if form.validate_on_submit():
        if form.new_password.data != form.confirm_password.data:
            flash_error(u'两次输入密码不一致')
        else:
            success = False
            error_msg = u'非常抱歉服务器出错了, 请稍后重试或者联系系统管理员.'
            if g.user.system == 'ucenter':
                try:
                    success = uc_change_password(g.user.id,
                                                 form.original_password.data,
                                                 form.new_password.data)
                except Exception as e:
                    if hasattr(e, 'message'):
                        error_msg = e.message
            else:
                result = bmw_change_password(g.user.id,
                                             form.original_password.data,
                                             form.new_password.data)
                if isinstance(result, dict):
                    if 'status' in result and result['status'] == 0:
                        success = True
                    if 'message' in result:
                        error_msg = result['message']
            if success:
                flash_success(u'密码修改成功')
            else:
                flash_error(error_msg)
    return render_template('settings/security.html',
                           selected_menu=MODIFY_PASSWORD,
                           form=form)
Example #4
0
def login():
    form = LoginForm()
    referer = request.form.get('referer')

    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        user = None
        flashed = False
        try:
            login_response = uc_login(username, password)  #测试使用 ucenter
            if login_response:
                user = uc_save_user(login_response)
        except UserWasNotFound:
            json_r = bmw_login(username, password)  #使用原始bmw
            if bmw_is_success(json_r):
                if bmw_validate_user(json_r):
                    user = bmw_save_user(json_r)
        except UserWasNotAuthorized:
            flash_error(u'用户密码错误')
            flashed = True

        if user:
            add_user(user)
            return redirect(referer or url_for(user.dashboard_endpoint()))
        if not flashed:
            flash_error(gettext(u'login failed'))

    return render_template('account/login.html', form=form)
Example #5
0
def import_inv():
    if request.method == 'POST':
        upload_file = request.files['upload_file']
        if not upload_file or not allowed_file(upload_file.filename):
            flash_error(u'导入文件不存在或者不是合法的文件类型')
        else:
            origin_file_name = upload_file.filename
            store_id = get_or_set_store_id()
            gen_file_name = gen_inv_upload_file_path(store_id,
                                                     origin_file_name)
            upload_file.save(gen_file_name)

            import_his = InvImportHistory()
            import_his.origin_file = origin_file_name
            import_his.import_file = os.path.relpath(
                gen_file_name, current_app.config['INV_UPLOAD_FOLDER'])
            db.session.add(import_his)

            Inventory.save_from_excel(gen_file_name, store_id)
            flash_success(u'导入成功')
    return redirect(url_for('inventories.inventories'))
Example #6
0
def restore_password():
    form = RestorePasswordForm()
    if form.validate_on_submit():
        token = form.token.data
        if not token:
            flash_error(u'无效验证码')
        else:
            verify_code = form.verify_code.data
            new_password = form.new_password.data
            ip = request.remote_addr
            flashed = False
            try:
                if uc_restore_password(token, verify_code, new_password, 'isr',
                                       ip):
                    return redirect('/account/login')
            except (RestorePasswordInvalidToken,
                    RestorePasswordChecksumMissmatch) as e:
                flash_error(e.message)
                flashed = True
            if not flashed:
                flash_error(gettext(u'重置密码失败'))
    return render_template('account/restore_password.html', form=form)
Example #7
0
def cancel_order():
    current_user = g.user
    store_id = get_or_set_store_id()
    form = OrderCancelForm()

    if form.order_id.data is None or int(form.order_id.data) < 1:
        flash_error(u'订单信息错误,请选择需要取消的订单')
    else:
        order = Order.find_by_id_and_store(form.order_id.data, store_id)

        if not order:
            abort(404)

        if order and order.status not in ('delivered', 'cancelled'):
            order.status = 'cancelled'
            order.save_and_flush()
            flash_success(u'订单已取消')
        elif order:
            flash_error(u'订单已交车或已取消')
        else:
            flash_error(u'找不到需要取消的订单')

    return redirect(url_for('orders.orders'))