def lists(page=1): """ 型录列表 :param page: :return: """ template_name = 'catalogue/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('catalogue lists') # 搜索条件 form = ProductionSearchForm(request.form) form.production_brand.choices = get_production_brand_choices() # app.logger.info('') search_condition = [] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.production_brand.data != DEFAULT_SEARCH_CHOICES_STR_OPTION: search_condition.append( Production.production_brand == form.production_brand.data) if form.production_model.data: search_condition.append( Production.production_model == form.production_model.data) # 处理导出 if form.op.data == 1: # 检查导出权限 if not permission_production_section_export.can(): abort(403) column_names = Production.__table__.columns.keys() query_sets = get_production_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('catalogue lists')) # 翻页数据 pagination = get_catalogue_pagination(page, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): template_name = 'customer/invoice/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('customer invoice lists') # 搜索条件 form = CustomerInvoiceSearchForm(request.form) # app.logger.info('') search_condition = [ CustomerInvoice.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.customer_cid.data and form.customer_company_name.data: search_condition.append( CustomerInvoice.cid == form.customer_cid.data) if form.company_tax_id.data: search_condition.append( CustomerInvoice.contact_name == form.company_tax_id.data) # 处理导出 if form.op.data == 1: # 检查导出权限 if not permission_customer_section_export.can(): abort(403) column_names = CustomerInvoice.__table__.columns.keys() query_sets = get_customer_invoice_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('customer invoice lists')) # 翻页数据 pagination = get_customer_invoice_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 账目列表 :return: """ template_name = 'bank_account/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('bank account lists') # 搜索条件 form = BankAccountSearchForm(request.form) form.bank_id.choices = get_bank_choices() # form.id.choices = get_bank_account_choices() # app.logger.info('') search_condition = [ BankAccount.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.bank_id.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append( BankAccount.bank_id == form.bank_id.data) if form.type_current.data: search_condition.append( BankAccount.type_current == form.type_current.data) if form.type_account.data: search_condition.append( BankAccount.type_account == form.type_account.data) if form.start_record_date.data: search_condition.append( BankAccount.record_date >= form.start_record_date.data) if form.end_record_date.data: search_condition.append( BankAccount.record_date <= form.end_record_date.data) # 处理导出 if form.op.data == 1: # 检查导出权限 if not permission_account_section_export.can(): abort(403) column_names = BankAccount.__table__.columns.keys() query_sets = get_bank_account_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('bank account lists')) # 批量删除 if form.op.data == 2: bank_account_ids = request.form.getlist('bank_account_id') # 检查删除权限 if not (permission_role_administrator.can() or permission_role_stock_keeper.can()): ext_msg = _('Permission Denied') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') else: permitted = True for bank_account_id in bank_account_ids: # 检查是否正在使用 # 库存、货架 if count_inventory( **{ 'bank_account_id': bank_account_id, 'status_delete': STATUS_DEL_NO }): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if count_rack( **{ 'bank_account_id': bank_account_id, 'status_delete': STATUS_DEL_NO }): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if permitted: result_total = True for bank_account_id in bank_account_ids: current_time = datetime.utcnow() bank_account_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_bank_account(bank_account_id, bank_account_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_bank_account_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 采购订单列表 :return: """ template_name = 'buyer/order/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('buyer order lists') # 搜索条件 form = BuyerOrderSearchForm(request.form) form.uid.choices = get_buyer_order_user_list_choices() # app.logger.info('') search_condition = [ BuyerOrder.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.uid.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append(BuyerOrder.uid == form.uid.data) if form.supplier_cid.data and form.supplier_company_name.data: search_condition.append( BuyerOrder.supplier_cid == form.supplier_cid.data) if form.start_create_time.data: search_condition.append( BuyerOrder.create_time >= form.start_create_time.data) if form.end_create_time.data: search_condition.append( BuyerOrder.create_time <= form.end_create_time.data) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_buyer_order_section_export.can(): abort(403) column_names = BuyerOrder.__table__.columns.keys() query_sets = get_buyer_order_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('buyer order lists')) # 批量删除 if form.op.data == OPERATION_DELETE: # 检查删除权限 if not permission_buyer_order_section_del.can(): abort(403) order_ids = request.form.getlist('buyer_order_id') permitted = True for order_id in order_ids: # TODO 资源删除权限验证 if False: ext_msg = _('Permission Denied') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if permitted: result_total = True for order_id in order_ids: current_time = datetime.utcnow() quotation_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_buyer_order(order_id, quotation_data) if result: # 发送删除信号 signal_data = { 'order_id': order_id, 'status_delete': STATUS_DEL_OK, 'current_time': current_time, } signal_buyer_orders_status_delete.send( app, **signal_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_buyer_order_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 货架列表 :return: """ template_name = 'rack/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('rack lists') # 搜索条件 form = RackSearchForm(request.form) form.warehouse_id.choices = get_warehouse_choices() # app.logger.info('') search_condition = [ Rack.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.warehouse_id.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append( Rack.warehouse_id == form.warehouse_id.data) if form.name.data: search_condition.append(Rack.name == form.name.data) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_rack_section_export.can(): abort(403) column_names = Rack.__table__.columns.keys() query_sets = get_rack_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('rack lists')) # 批量删除 if form.op.data == OPERATION_DELETE: # 检查删除权限 if not permission_rack_section_del.can(): abort(403) rack_ids = request.form.getlist('rack_id') permitted = True for rack_id in rack_ids: # 检查是否正在使用 # 库存 if count_inventory(**{ 'rack_id': rack_id, 'status_delete': STATUS_DEL_NO }): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if permitted: result_total = True for rack_id in rack_ids: current_time = datetime.utcnow() rack_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_rack(rack_id, rack_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_rack_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 敏感产品列表 :return: """ template_name = 'production/sensitive/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('production sensitive lists') # 搜索条件 form = ProductionSensitiveSearchForm(request.form) form.production_brand.choices = get_production_sensitive_brand_choices() # app.logger.info('') search_condition = [ ProductionSensitive.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.customer_cid.data and form.customer_company_name.data: search_condition.append( ProductionSensitive.customer_cid == form.customer_cid.data) if form.production_brand.data != DEFAULT_SEARCH_CHOICES_STR_OPTION: search_condition.append(ProductionSensitive.production_brand == form.production_brand.data) if form.production_model.data: search_condition.append( ProductionSensitive.production_model.like( '%%%s%%' % form.production_model.data)) # 处理导出 if form.op.data == 1: # 检查导出权限 if not permission_production_section_export.can(): abort(403) column_names = ProductionSensitive.__table__.columns.keys() query_sets = get_production_sensitive_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('production sensitive lists')) # 批量删除 if form.op.data == 2: production_sensitive_ids = request.form.getlist( 'production_sensitive_id') # 检查删除权限 if not permission_role_administrator.can(): ext_msg = _('Permission Denied') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') else: result_total = True for production_sensitive_id in production_sensitive_ids: current_time = datetime.utcnow() production_sensitive_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_production_sensitive( production_sensitive_id, production_sensitive_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_production_sensitive_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 报价列表 :return: """ template_name = 'quotation/items/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('quotation item lists') # 搜索条件 form = QuotationItemsSearchForm(request.form) # form.uid.choices = get_quotation_user_list_choices() # app.logger.info('') search_condition = [ QuotationItems.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.customer_cid.data and form.customer_company_name.data: search_condition.append(QuotationItems.customer_cid == form.customer_cid.data) if form.production_model.data: # 注意查询效率 search_condition.append( or_( QuotationItems.production_model.like('%%%s%%' % form.production_model.data), QuotationItems.enquiry_production_model.like('%%%s%%' % form.production_model.data) ) ) if form.start_create_time.data: search_condition.append(QuotationItems.create_time >= form.start_create_time.data) if form.end_create_time.data: search_condition.append(QuotationItems.create_time <= form.end_create_time.data) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_quotation_section_export.can(): abort(403) column_names = QuotationItems.__table__.columns.keys() query_sets = get_quotation_items_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('quotation item lists') ) # 翻页数据 pagination = get_quotation_items_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template( template_name, form=form, pagination=pagination, **document_info )
def lists(): """ 客户联系方式列表 :return: """ template_name = 'customer/contact/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('customer contact lists') # 搜索条件 form = CustomerContactSearchForm(request.form) # app.logger.info('') search_condition = [ CustomerContact.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.customer_cid.data and form.customer_company_name.data: search_condition.append(CustomerContact.cid == form.customer_cid.data) if form.customer_contact_name.data: search_condition.append(CustomerContact.name == form.customer_contact_name.data) if form.address.data: search_condition.append(CustomerContact.address.like('%%%s%%' % form.address.data)) if form.mobile.data: search_condition.append(CustomerContact.mobile == form.mobile.data) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_customer_section_export.can(): abort(403) column_names = CustomerContact.__table__.columns.keys() query_sets = get_customer_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('customer contact lists') ) # 批量删除 if form.op.data == OPERATION_DELETE: # 检查删除权限 if not permission_customer_section_del.can(): abort(403) customer_contact_ids = request.form.getlist('customer_contact_id') # 检查删除权限 permitted = True for customer_contact_id in customer_contact_ids: # TODO 资源删除权限验证 if False: ext_msg = _('Permission Denied') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if permitted: result_total = True for customer_contact_id in customer_contact_ids: current_time = datetime.utcnow() customer_contact_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_customer_contact(customer_contact_id, customer_contact_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_customer_contact_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template( template_name, form=form, pagination=pagination, **document_info )
def lists(): """ 用户列表 :return: """ template_name = 'user/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('user lists') # 搜索条件 form = UserSearchForm(request.form) search_condition = [ User.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.name.data: search_condition.append(User.name == form.name.data) if form.role_id.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append(User.role_id == form.role_id.data) if form.start_create_time.data: search_condition.append(User.create_time >= form.start_create_time.data) if form.end_create_time.data: search_condition.append(User.create_time <= form.end_create_time.data) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_user_section_export.can(): abort(403) column_names = User.__table__.columns.keys() query_sets = get_user_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('user lists') ) # 批量删除 if form.op.data == OPERATION_DELETE: # 检查删除权限 if not permission_user_section_del.can(): abort(403) user_ids = request.form.getlist('user_id') # 检查删除权限 permitted = True for user_id in user_ids: # 检查是否正在使用 # 1、报价 if count_quotation(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break # 2、销售订单 if count_sales_order(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break # 3、销售出货 if count_delivery(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break # 4、询价 if count_enquiry(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break # 5、采购订单 if count_buyer_order(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break # 6、采购进货 if count_purchase(**{'uid': user_id, 'status_delete': STATUS_DEL_NO}): ext_msg = _('Currently In Use') flash(_('Del Failure, %(ext_msg)s', ext_msg=ext_msg), 'danger') permitted = False break if permitted: result_total = True for user_id in user_ids: current_time = datetime.utcnow() user_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_user(user_id, user_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_user_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template( template_name, form=form, pagination=pagination, **document_info )
def lists(): """ 期货列表 :return: """ template_name = 'futures/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('futures lists') # 搜索条件 form = FuturesSearchForm(request.form) form.production_brand.choices = get_futures_brand_choices() # app.logger.info('') search_condition = [ Futures.status_delete == STATUS_DEL_NO, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.production_brand.data != DEFAULT_SEARCH_CHOICES_STR_OPTION: search_condition.append( Futures.production_brand == form.production_brand.data) if form.production_model.data: search_condition.append( Futures.production_model.like('%%%s%%' % form.production_model.data)) if form.req_date.data: search_condition.append(Futures.req_date <= form.req_date.data) if form.acc_date.data: search_condition.append(Futures.acc_date <= form.acc_date.data) # 处理导出 if form.op.data == 1: # 检查导出权限 if not permission_futures_section_export.can(): abort(403) column_names = Futures.__table__.columns.keys() query_sets = get_futures_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('futures lists')) # 批量删除 if form.op.data == 2: # 检查删除权限 if not permission_futures_section_del.can(): abort(403) futures_ids = request.form.getlist('futures_id') result_total = True for futures_id in futures_ids: current_time = datetime.utcnow() futures_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_futures(futures_id, futures_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_futures_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)
def lists(): """ 库存列表 :return: """ template_name = 'inventory/lists.html' # 文档信息 document_info = DOCUMENT_INFO.copy() document_info['TITLE'] = _('inventory lists') # 搜索条件 form = InventorySearchForm(request.form) form.warehouse_id.choices = get_warehouse_choices() form.rack_id.choices = get_rack_choices(form.warehouse_id.data) # app.logger.info('') inventory_brand_choices = [ (brand, brand) for brand in get_distinct_inventory_brand(status_delete=STATUS_DEL_NO) if brand != '' ] form.production_brand.choices = DEFAULT_SEARCH_CHOICES_STR + inventory_brand_choices search_condition = [ Inventory.status_delete == STATUS_DEL_NO, Inventory.stock_qty_current > 0, ] if request.method == 'POST': # 表单校验失败 if not form.validate_on_submit(): flash(_('Search Failure'), 'danger') # 单独处理csrf_token if hasattr(form, 'csrf_token') and getattr(form, 'csrf_token').errors: map(lambda x: flash(x, 'danger'), form.csrf_token.errors) else: if form.warehouse_id.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append( Inventory.warehouse_id == form.warehouse_id.data) if form.rack_id.data != DEFAULT_SEARCH_CHOICES_INT_OPTION: search_condition.append(Inventory.rack_id == form.rack_id.data) if form.production_brand.data != DEFAULT_SEARCH_CHOICES_STR_OPTION: search_condition.append( Inventory.production_brand == form.production_brand.data) if form.production_model.data: search_condition.append( Inventory.production_model.like( '%%%s%%' % form.production_model.data)) # 处理导出 if form.op.data == OPERATION_EXPORT: # 检查导出权限 if not permission_inventory_section_export.can(): abort(403) column_names = Inventory.__table__.columns.keys() query_sets = get_inventory_rows(*search_condition) return excel.make_response_from_query_sets( query_sets=query_sets, column_names=column_names, file_type='csv', file_name='%s.csv' % _('inventory lists')) # 批量删除 if form.op.data == OPERATION_DELETE: # 检查删除权限 if not permission_inventory_section_del.can(): abort(403) inventory_ids = request.form.getlist('inventory_id') result_total = True for inventory_id in inventory_ids: current_time = datetime.utcnow() inventory_data = { 'status_delete': STATUS_DEL_OK, 'delete_time': current_time, 'update_time': current_time, } result = edit_inventory(inventory_id, inventory_data) result_total = result_total and result if result_total: flash(_('Del Success'), 'success') else: flash(_('Del Failure'), 'danger') # 翻页数据 pagination = get_inventory_pagination(form.page.data, PER_PAGE_BACKEND, *search_condition) # 渲染模板 return render_template(template_name, form=form, pagination=pagination, **document_info)