def _(step, wc, department): with app.test_request_context(): with app.test_client() as c: login('s', 's', c) rv = c.post('/manufacture/schedule/[%d]' % wc.id, data=dict(department_id=department.id, procedure_id=1)) assert rv.status_code == 302
def _(step, wc): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('qi', 'qi', c) url = url_for('manufacture_ws.work_command', work_command_id=wc.id, action=wc_const.ACT_QI, auth_token=auth_token) rv = c.put(url, data={ '0.jpeg': (StringIO('foo jpg 0'), '0.jpeg'), '1.jpeg': (StringIO('foo jpg 1'), '1.jpeg'), 'qirList': json.dumps([{ 'result': qi_const.FINISHED, 'weight': wc.processed_weight }]) }) assert rv.status_code == 200 url = url_for('manufacture_ws.work_command', work_command_id=wc.id, auth_token=auth_token) rv = c.get(url) assert rv.status_code == 200 d = json.loads(rv.data) assert len(d['qirList']) == 1 qir_dict = d['qirList'][0] assert qir_dict['result'] == qi_const.FINISHED assert qir_dict['weight'] == wc.processed_weight assert qir_dict['quantity'] == wc.processed_weight assert qir_dict['actorId'] == current_user.id return qir_dict
def _(step, plate_name, us): plate_ = do_commit(models.Plate(name=plate_name)) with app.test_request_context(): with app.test_client() as c: rv = c.post(u"/cargo/unload-session/%d" % us.id, data={"plate_": plate_name}) assert 302 == rv.status_code
def _(step, wc): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('qi', 'qi', c) url = url_for('manufacture_ws.work_command', work_command_id=wc.id, action=wc_const.ACT_QI, auth_token=auth_token) rv = c.put(url, data={ '0.jpeg': (StringIO('foo jpg 0'), '0.jpeg'), '1.jpeg': (StringIO('foo jpg 1'), '1.jpeg'), 'qirList': json.dumps([{'result': qi_const.FINISHED, 'weight': wc.processed_weight}]) }) assert rv.status_code == 200 url = url_for('manufacture_ws.work_command', work_command_id=wc.id, auth_token=auth_token) rv = c.get(url) assert rv.status_code == 200 d = json.loads(rv.data) assert len(d['qirList']) == 1 qir_dict = d['qirList'][0] assert qir_dict['result'] == qi_const.FINISHED assert qir_dict['weight'] == wc.processed_weight assert qir_dict['quantity'] == wc.processed_weight assert qir_dict['actorId'] == current_user.id return qir_dict
def _(step, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-session/%d" % us.id, data={"__action__": u"生成收货单"}) assert 302 == rv.status_code return db.session.query(models.GoodsReceipt).filter( models.GoodsReceipt.unload_session_id == us.id).all()
def _(step, weight, sub_order): with app.test_request_context(): with app.test_client() as c: login('s', 's', c) rv = c.post('/order/work-command', data=dict(sub_order_id=sub_order.id, schedule_weight=weight)) assert rv.status_code == 302
def _(step, us): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('l', 'l', c) rv = c.get("/cargo_ws/unload-session-list?auth_token=" + auth_token) from flask import json assert not [i for i in json.loads(rv.data)["data"] if not i["isLocked"]]
def _(step): with app.test_request_context(): with app.test_client() as c: rv = c.get("/cargo/unload-session") from bs4 import BeautifulSoup soup = BeautifulSoup(rv.data) return [i["value"] for i in soup.find_all("option")]
def _(step, weight, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-session/%d" % us.id, data={"__action__": u"生成收货单"}) assert 302 == rv.status_code gr = models.GoodsReceipt.query.order_by(models.GoodsReceipt.id.desc()).first() assert int(weight) == sum(i.weight for i in gr.goods_receipt_entries) return gr
def _(step, weight, wc): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('tl', 'tl', c) rv = c.put( '/manufacture_ws/work-command/%d?action=%d&weight=%d&auth_token=%s' % (wc.id, lite_mms.constants.work_command.ACT_ADD_WEIGHT, int(weight), auth_token)) assert rv.status_code == 200
def _(step, order): for count, sub_order in enumerate(order.sub_order_list): with app.test_request_context(): with app.test_client() as c: rv = c.post("/order/sub-order/%d" % sub_order.id, data={"due_time": "2013-08-09"}) assert 302 == rv.status_code if count == len(order.sub_order_list) - 1: rv = c.post("/order/order/%d" % order.id, data={"__action__": u"标记为完善"}) assert 302 == rv.status_code
def _(step, goods_receipt, order_type): if order_type == constants.STANDARD_ORDER_TYPE: action = u"生成计重类型订单" else: action = u"生成计件类型订单" with app.test_request_context(): with app.test_client() as c: rv = c.post("/goods_receipt/goods-receipt/%d" % goods_receipt.id, data={"__action__": action}) assert 302 == rv.status_code return models.Order.query.order_by(models.Order.id.desc()).first()
def _(step, weight, unload_task): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/weigh-unload-task/%d" % unload_task.id, data={ "weight": weight, "product_type": 1, "product": 1, "customer": unload_task.customer.id }) assert 302 == rv.status_code
def after_login_then_redirect_to(step, username, password, content): from lite_mms.basemain import app from lite_mms.permissions import permissions import flask.ext.principal as principal with app.test_request_context(): with app.test_client() as c: rv = c.post(url_for("auth.login"), data=dict(username=username, password=password), follow_redirects=True) assert_equals(rv.status_code, 200) assert_equals(rv.data.decode("utf-8"), content)
def _(step, us): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('l', 'l', c) rv = c.get("/cargo_ws/unload-session-list?auth_token=" + auth_token) from flask import json assert not [ i for i in json.loads(rv.data)["data"] if not i["isLocked"] ]
def _(step, wc, department, team): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('dl', 'dl', c) url = '/manufacture_ws/work-command/%d?action=%d&team_id=%s\ &auth_token=%s' rv = c.put(url % (wc.id, lite_mms.constants.work_command.ACT_ASSIGN, team.id, auth_token)) assert rv.status_code == 200
def _(step, weight, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-session/%d" % us.id, data={"__action__": u"生成收货单"}) assert 302 == rv.status_code gr = models.GoodsReceipt.query.order_by( models.GoodsReceipt.id.desc()).first() assert int(weight) == sum(i.weight for i in gr.goods_receipt_entries) return gr
def _(step, us): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('l', 'l', c) rv = c.post( u"/cargo_ws/unload-task?actor_id=1&customer_id=1&harbour=foo车间&is_finished=1&session_id=%d" u"&auth_token=%s" % ( us.id, auth_token)) assert 200 == rv.status_code rv = c.post("/cargo/weigh-unload-task/%s" % rv.data, data={"weight": 2213, "product_type": 1, "product": 1, "customer": 1}) assert 302 == rv.status_code
def _(step, delivery_session, store_bill): with app.test_request_context(): with app.test_client() as c: login('cc', 'cc', c) rv = c.post("/delivery/store-bill-list/%d" % delivery_session.id, data={"store_bill_list": store_bill.id}) assert 302 == rv.status_code rv = c.post('/auth_ws/login?username=l&password=l') assert rv.status_code == 200 auth_token = json.loads(rv.data)['token'] rv = c.post("/delivery_ws/delivery-task?sid=%s&is_finished=1&remain=0&auth_token=%s" % (delivery_session.id, auth_token), data=json.dumps([{"store_bill_id": store_bill.id, "is_finished": 1}])) assert 200 == rv.status_code
def _(step, delivery_session): with app.test_request_context(): with app.test_client() as c: login('cc', 'cc', c) rv = c.post("/delivery/create-consignment-list/%s" % delivery_session.id, data={"customer-pay_mod": json.dumps({customer.id: 0 for customer in DeliverySessionWrapper( delivery_session).customer_list})}) assert 302 == rv.status_code return models.Consignment.query.order_by(models.Consignment.id.desc()).first()
def after_login_then_could(step, username, password): from lite_mms.basemain import app from lite_mms.permissions import permissions import flask.ext.principal as principal with app.test_request_context(): with app.test_client() as c: rv = c.post(url_for("auth.login"), data=dict(username=username, password=password)) assert rv.status_code == 302 from flask.ext.login import current_user for perm_dict in step.hashes: need = permissions[perm_dict["permission"]]["needs"][0] perm = principal.Permission(need) assert perm.can()
def _(step, delivery_session, store_bill): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('l', 'l', c) rv = c.post("/delivery_ws/delivery-task?sid=%s&is_finished=1&remain=0&auth_token=%s" % (delivery_session.id, auth_token), data=json.dumps([{"store_bill_id": store_bill.id, "is_finished": 1}])) assert 200 == rv.status_code delivery_task = models.DeliveryTask.query.filter( models.DeliveryTask.delivery_session == delivery_session).order_by( models.DeliveryTask.id.desc()).first() login('cc', 'cc', c) rv = c.post("/delivery/weigh-delivery-task/%d" % delivery_task.id, data={"weight": 6500}) assert rv.status_code == 302
def _(step, wc, team): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('tl', 'tl', c) rv = c.get('/manufacture_ws/work-command-list?team_id=%s&status=%d&auth_token=%s' % (team.id, lite_mms.constants.work_command.STATUS_ENDING, auth_token)) assert rv.status_code == 200 d = json.loads(rv.data)['data'][0] assert d['customerName'] == wc.sub_order.order.goods_receipt.customer.name assert d['team']['id'] == team.id assert d['team']['name'] == team.name assert d['id'] == wc.id assert d['orderID'] == wc.sub_order.order.id assert d['subOrderId'] == wc.sub_order.id assert d['orgWeight'] == wc.org_weight
def _(step, us): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('l', 'l', c) rv = c.post( u"/cargo_ws/unload-task?actor_id=1&customer_id=1&harbour=foo车间&is_finished=1&session_id=%d" u"&auth_token=%s" % (us.id, auth_token)) assert 200 == rv.status_code rv = c.post("/cargo/weigh-unload-task/%s" % rv.data, data={ "weight": 2213, "product_type": 1, "product": 1, "customer": 1 }) assert 302 == rv.status_code
def _(step, wc, team): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('tl', 'tl', c) rv = c.get( '/manufacture_ws/work-command-list?team_id=%s&status=%d&auth_token=%s' % (team.id, lite_mms.constants.work_command.STATUS_ENDING, auth_token)) assert rv.status_code == 200 d = json.loads(rv.data)['data'][0] assert d[ 'customerName'] == wc.sub_order.order.goods_receipt.customer.name assert d['team']['id'] == team.id assert d['team']['name'] == team.name assert d['id'] == wc.id assert d['orderID'] == wc.sub_order.order.id assert d['subOrderId'] == wc.sub_order.id assert d['orgWeight'] == wc.org_weight
def _(step, wc, department): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('dl', 'dl', c) url = '/manufacture_ws/work-command-list?department_id=%s&\ status=%d&auth_token=%s' rv = c.get(url % (department.id, lite_mms.constants.work_command.STATUS_ASSIGNING, auth_token)) assert rv.status_code == 200 d = json.loads(rv.data)['data'][0] assert d['customerName'] == \ wc.sub_order.order.goods_receipt.customer.name assert d['department']['id'] == department.id assert d['department']['name'] == department.name assert d['id'] == wc.id assert d['orderID'] == wc.sub_order.order.id assert d['subOrderId'] == wc.sub_order.id assert d['orgWeight'] == wc.org_weight
def _(step, wc, department): with app.test_request_context(): with app.test_client() as c: auth_token = client_login('dl', 'dl', c) url = '/manufacture_ws/work-command-list?department_id=%s&\ status=%d&auth_token=%s' rv = c.get( url % (department.id, lite_mms.constants.work_command.STATUS_ASSIGNING, auth_token)) assert rv.status_code == 200 d = json.loads(rv.data)['data'][0] assert d['customerName'] == \ wc.sub_order.order.goods_receipt.customer.name assert d['department']['id'] == department.id assert d['department']['name'] == department.name assert d['id'] == wc.id assert d['orderID'] == wc.sub_order.order.id assert d['subOrderId'] == wc.sub_order.id assert d['orgWeight'] == wc.org_weight
def _(step, weight, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-task/%d" % us.task_list[0].id, data={"weight": weight}) assert 302 == rv.status_code
def _(step, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-session/%d" % us.id, data={"__action__": u"打开"}) assert 302 == rv.status_code
def _(step, weight, unload_task): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/weigh-unload-task/%d" % unload_task.id, data={"weight": weight, "product_type": 1, "product": 1, "customer": unload_task.customer.id}) assert 302 == rv.status_code
def _(step, ut): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/ajax/unload-task/%d" % ut.id, data={"action": u"delete"}) return rv.status_code
def _(step, gr): with app.test_request_context(): with app.test_client() as c: rv = c.post("/goods_receipt/goods-receipt/%d" % gr.id) assert 403 == rv.status_code
def _(step, delivery_task): with app.test_request_context(): with app.test_client() as c: login('cc', 'cc', c) rv = c.post("/delivery/delivery-task/%d" % delivery_task.id) return rv.status_code
def build_db(): msg = u"初始化开始, 数据库是: " + app.config["SQLALCHEMY_DATABASE_URI"] app.logger.info(msg) import os dbstr = app.config["SQLALCHEMY_DATABASE_URI"] if dbstr.startswith("sqlite"): dir = os.path.split(dbstr[10:])[0] if dir and not os.path.exists(dir): os.makedirs(dir) from lite_mms.database import db, init_db from lite_mms import models db.drop_all() init_db() session = db.session # 初始化权限 for k, v in permissions.items(): do_commit(models.Permission(name=k, desc=v["brief"])) with app.test_request_context(): app.preprocess_request() # 初始化用户组,目前内置的用户组包括, 这些用户组本来就带有基于角色的权限 # - 收发员 cargo_clerk = models.Group(id=groups.CARGO_CLERK, name=u"收发员", default_url=url_for("cargo.index")) cargo_clerk.permissions = models.Permission.query.filter( models.Permission.name.like("%view_order%")).all() cargo_clerk = do_commit(cargo_clerk) # - 调度员 scheduler = models.Group(id=groups.SCHEDULER, name=u"调度员", default_url=url_for("order.index")) scheduler.permissions = models.Permission.query.filter( models.Permission.name.like( "%schedule_order%")).all() + models.Permission.query.filter( models.Permission.name.like("work_command%")).all() scheduler = do_commit(scheduler) # - 车间主任 department_leader = models.Group(id=groups.DEPARTMENT_LEADER, name=u"车间主任", default_url=url_for("manufacture.work_command_list")) department_leader = do_commit(department_leader) # - 班组长 team_leader = do_commit(models.Group(id=groups.TEAM_LEADER, name=u"班组长")) # - 质检员 quality_inspector = models.Group(id=groups.QUALITY_INSPECTOR, name=u"质检员", default_url=url_for("store_bill.index")) quality_inspector.permissions = models.Permission.query.filter( models.Permission.name.like("%view_work_command")).all() quality_inspector = do_commit(quality_inspector) # - 装卸工 loader = do_commit(models.Group(id=groups.LOADER, name=u"装卸工")) # - 财会人员 accountant = models.Group(id=groups.ACCOUNTANT, name=u"财会人员", default_url=url_for("consignment.consignment_list")) accountant.permissions = [models.Permission.query.filter(models.Permission.name.like("%export_consignment%")).one()] accountant = do_commit(accountant) # - 管理员 administrator = models.Group(id=groups.ADMINISTRATOR, name=u"管理员", default_url=url_for("admin.index")) administrator.permissions = models.Permission.query.all() administrator = do_commit(administrator) # 初始化超级用户 admin = models.User(username='******', password=md5('admin').hexdigest(), groups=[administrator]) admin.id = constants.ADMIN_USER_ID admin = do_commit(admin) # 设置默认产品类型和产品 product_type_default = do_commit(models.ProductType(constants.DEFAULT_PRODUCT_TYPE_NAME)) do_commit(models.Product(constants.DEFAULT_PRODUCT_NAME, product_type_default)) session.flush() msg = u"初始化完成" app.logger.info(msg)
def _(step, ut): with app.test_request_context(): with app.test_client() as c: rv = c.post(u"/cargo/unload-task/%d" % ut.id, data={"weight": 12312}) assert 403 == rv.status_code
def _(step, order): with app.test_request_context(): with app.test_client() as c: rv = c.post("/order/order/%s" % order.id, data={"__action__": u"下发"}) return rv.status_code
def _(step, gr): with app.test_request_context(): with app.test_client() as c: rv = c.post("/goods_receipt/goods-receipt/%d" % gr.id, data={"__action__": u"生成计重类型订单"}) assert 302 == rv.status_code
def build_db(): msg = u"初始化开始, 数据库是: " + app.config["SQLALCHEMY_DATABASE_URI"] app.logger.info(msg) import os dbstr = app.config["SQLALCHEMY_DATABASE_URI"] if dbstr.startswith("sqlite"): dir = os.path.split(dbstr[10:])[0] if dir and not os.path.exists(dir): os.makedirs(dir) from lite_mms.database import db, init_db from lite_mms import models db.drop_all() init_db() session = db.session # 初始化权限 for k, v in permissions.items(): do_commit(models.Permission(name=k, desc=v["brief"])) with app.test_request_context(): app.preprocess_request() # 初始化用户组,目前内置的用户组包括, 这些用户组本来就带有基于角色的权限 # - 收发员 cargo_clerk = models.Group(id=groups.CARGO_CLERK, name=u"收发员", default_url=url_for("cargo.index")) cargo_clerk.permissions = models.Permission.query.filter( models.Permission.name.like("%view_order%")).all() cargo_clerk = do_commit(cargo_clerk) # - 调度员 scheduler = models.Group(id=groups.SCHEDULER, name=u"调度员", default_url=url_for("order.index")) scheduler.permissions = models.Permission.query.filter( models.Permission.name.like( "%schedule_order%")).all() + models.Permission.query.filter( models.Permission.name.like("work_command%")).all() scheduler = do_commit(scheduler) # - 车间主任 department_leader = models.Group( id=groups.DEPARTMENT_LEADER, name=u"车间主任", default_url=url_for("manufacture.work_command_list")) department_leader = do_commit(department_leader) # - 班组长 team_leader = do_commit( models.Group(id=groups.TEAM_LEADER, name=u"班组长")) # - 质检员 quality_inspector = models.Group( id=groups.QUALITY_INSPECTOR, name=u"质检员", default_url=url_for("store_bill.index")) quality_inspector.permissions = models.Permission.query.filter( models.Permission.name.like("%view_work_command")).all() quality_inspector = do_commit(quality_inspector) # - 装卸工 loader = do_commit(models.Group(id=groups.LOADER, name=u"装卸工")) # - 财会人员 accountant = models.Group( id=groups.ACCOUNTANT, name=u"财会人员", default_url=url_for("consignment.consignment_list")) accountant.permissions = [ models.Permission.query.filter( models.Permission.name.like("%export_consignment%")).one() ] accountant = do_commit(accountant) # - 管理员 administrator = models.Group(id=groups.ADMINISTRATOR, name=u"管理员", default_url=url_for("admin.index")) administrator.permissions = models.Permission.query.all() administrator = do_commit(administrator) # 初始化超级用户 admin = models.User(username='******', password=md5('admin').hexdigest(), groups=[administrator]) admin.id = constants.ADMIN_USER_ID admin = do_commit(admin) # 设置默认产品类型和产品 product_type_default = do_commit( models.ProductType(constants.DEFAULT_PRODUCT_TYPE_NAME)) do_commit( models.Product(constants.DEFAULT_PRODUCT_NAME, product_type_default)) session.flush() msg = u"初始化完成" app.logger.info(msg)
def _(step, us): with app.test_request_context(): with app.test_client() as c: rv = c.post(u"/cargo/unload-session/%d" % us.id, data={"gross_weight": 123123}) assert 403 == rv.status_code
def _(step, consignment): with app.test_request_context(): with app.test_client() as c: login('cc', 'cc', c) rv = c.post("/consignment/consignment-product/%d" % consignment.product_list[0].id) return rv.status_code
def _(step, us): with app.test_request_context(): with app.test_client() as c: rv = c.post("/cargo/unload-session/%d" % us.id, data={"__action__": u"生成收货单"}) assert 302 == rv.status_code return db.session.query(models.GoodsReceipt).filter(models.GoodsReceipt.unload_session_id == us.id).all()