Exemple #1
0
def weigh_delivery_task(id_):
    class DeliveryTaskForm(Form):
        weight = IntegerField("weight", [validators.required()])
        url = HiddenField("url")

    from lite_mms.apis.delivery import get_delivery_task
    from lite_mms.basemain import nav_bar

    task = get_delivery_task(id_)
    if not task:
        abort(404)
    if request.method == "POST":
        form = DeliveryTaskForm(request.form)
        if form.validate():
            weight = form.weight.data - task.last_weight
            result = task.update(weight=weight)
            if not result:
                abort(500)
            import fsm
            from lite_mms.apis import todo

            fsm.fsm.reset_obj(task.delivery_session)
            fsm.fsm.next(constants.delivery.ACT_WEIGHT, current_user)
            todo.remove_todo(todo.WEIGH_DELIVERY_TASK, id_)
        else:
            if request.form.get("action") == "delete":
                try:
                    task.delete()
                    flash(u"删除发货任务成功")
                except:
                    abort(403)
            else:
                return render_template(
                    "validation-error.html",
                    errors=form.errors,
                    back_url=delivery_session_view.url_for_object(
                        model=task.unload_session.model),
                    nav_bar=nav_bar), 403
        return redirect(form.url.data or url_for("delivery.delivery_session",
                                                 id_=task.delivery_session_id))
    else:
        return render_template("delivery/delivery-task.html",
                               titlename=u"发货任务称重",
                               task=task,
                               nav_bar=nav_bar)
Exemple #2
0
    def delete(self):
        us = self.unload_session
        do_commit(self.model, "delete")
        from lite_mms.portal.cargo.fsm import fsm
        fsm.reset_obj(us)
        from flask.ext.login import current_user
        from lite_mms.basemain import timeline_logger

        timeline_logger.info(u"删除了卸货任务%d" % self.id,
                             extra={"obj": self.unload_session.model,
                                    "obj_pk": self.unload_session.id,
                                    "action": u"删除卸货任务",
                                    "actor": current_user})
        fsm.next(constants.cargo.ACT_WEIGHT, current_user)

        from lite_mms.apis import todo
        # delete
        todo.remove_todo(todo.WEIGH_UNLOAD_TASK, self.id)
        return True
Exemple #3
0
    def delete(self):
        ds = self.delivery_session
        do_commit(self.model, "delete")
        from lite_mms.portal.delivery.fsm import fsm

        fsm.reset_obj(ds)
        from flask.ext.login import current_user
        from lite_mms.basemain import timeline_logger

        timeline_logger.info(u"删除了发货任务%d" % self.id,
                             extra={"obj": self.delivery_session.model,
                                    "obj_pk": self.delivery_session.id,
                                    "action": u"删除发货任务",
                                    "actor": current_user})
        fsm.next(constants.delivery.ACT_WEIGHT, current_user)

        from lite_mms.apis import todo
        # delete todo
        todo.remove_todo(todo.WEIGH_DELIVERY_TASK, self.id)
        return True
Exemple #4
0
def weigh_unload_task(id_):
    from lite_mms import apis
    from lite_mms.apis import todo

    task = apis.cargo.get_unload_task(id_)
    if not task:
        abort(404)
    if request.method == 'GET':
        return dict(plate=task.unload_session.plate, task=task, nav_bar=nav_bar,
                    product_types=apis.product.get_product_types(),
                    products=json.dumps(apis.product.get_products()),
                    customers=apis.customer.get_customer_list(),
                    titlename=u"收货任务")
    else:  # POST
        class _ValidationForm(Form):
            weight = IntegerField('weight', [validators.required()])
            customer = IntegerField('customer', [validators.required()])
            product = IntegerField('product')

        form = _ValidationForm(request.form)
        if form.validate():
            customer = apis.customer.get_customer(form.customer.data)
            weight = task.last_weight - form.weight.data
            if weight < 0 or not customer:
                abort(403)
            task.update(weight=weight, product_id=form.product.data, customer=customer)
            from flask.ext.login import current_user

            fsm.fsm.reset_obj(task.unload_session)
            fsm.fsm.next(cargo_const.ACT_WEIGHT, current_user)
            todo.remove_todo(todo.WEIGH_UNLOAD_TASK, id_)
            return redirect(
                request.form.get("url", unload_session_model_view.url_for_object(model=task.unload_session.model)))
        else:
            if request.form.get("action") == "delete":
                if task.delete():
                    flash(u"删除卸货任务%d成功" % task.id)
                    return redirect(request.form.get("url", unload_session_model_view.url_for_object(
                        model=task.unload_session.model)))
            return redirect(url_for("error", errors=form.errors,
                                    url=unload_session_model_view.url_for_object(model=task.unload_session.model)))
Exemple #5
0
def weigh_unload_task(id_):
    from lite_mms import apis
    from lite_mms.apis import todo

    task = apis.cargo.get_unload_task(id_)
    if not task:
        abort(404)
    if request.method == 'GET':
        return dict(plate=task.unload_session.plate, task=task, nav_bar=nav_bar,
                    product_types=apis.product.get_product_types(),
                    products=json.dumps(apis.product.get_products()),
                    customers=apis.customer.get_customer_list(),
                    titlename=u"收货任务")
    else:  # POST
        class _ValidationForm(Form):
            weight = IntegerField('weight', [validators.required()])
            customer = IntegerField('customer', [validators.required()])
            product = IntegerField('product')

        form = _ValidationForm(request.form)
        if form.validate():
            customer = apis.customer.get_customer(form.customer.data)
            weight = task.last_weight - form.weight.data
            if weight < 0 or not customer:
                abort(403)
            task.update(weight=weight, product_id=form.product.data, customer=customer)
            from flask.ext.login import current_user

            fsm.fsm.reset_obj(task.unload_session)
            fsm.fsm.next(cargo_const.ACT_WEIGHT, current_user)
            todo.remove_todo(todo.WEIGH_UNLOAD_TASK, id_)
            return redirect(
                request.form.get("url", unload_session_model_view.url_for_object(model=task.unload_session.model)))
        else:
            if request.form.get("action") == "delete":
                if task.delete():
                    flash(u"删除卸货任务%d成功" % task.id)
                    return redirect(request.form.get("url", unload_session_model_view.url_for_object(
                        model=task.unload_session.model)))
            return redirect(url_for("error", errors=form.errors,
                                    url=unload_session_model_view.url_for_object(model=task.unload_session.model)))
Exemple #6
0
    def delete(self):
        ds = self.delivery_session
        do_commit(self.model, "delete")
        from lite_mms.portal.delivery.fsm import fsm

        fsm.reset_obj(ds)
        from flask.ext.login import current_user
        from lite_mms.basemain import timeline_logger

        timeline_logger.info(u"删除了发货任务%d" % self.id,
                             extra={
                                 "obj": self.delivery_session.model,
                                 "obj_pk": self.delivery_session.id,
                                 "action": u"删除发货任务",
                                 "actor": current_user
                             })
        fsm.next(constants.delivery.ACT_WEIGHT, current_user)

        from lite_mms.apis import todo
        # delete todo
        todo.remove_todo(todo.WEIGH_DELIVERY_TASK, self.id)
        return True
Exemple #7
0
def weigh_delivery_task(id_):
    class DeliveryTaskForm(Form):
        weight = IntegerField("weight", [validators.required()])
        url = HiddenField("url")
    from lite_mms.apis.delivery import get_delivery_task
    from lite_mms.basemain import nav_bar

    task = get_delivery_task(id_)
    if not task:
        abort(404)
    if request.method == "POST":
        form = DeliveryTaskForm(request.form)
        if form.validate():
            weight = form.weight.data - task.last_weight
            result = task.update(weight=weight)
            if not result:
                abort(500)
            import fsm
            from lite_mms.apis import todo

            fsm.fsm.reset_obj(task.delivery_session)
            fsm.fsm.next(constants.delivery.ACT_WEIGHT, current_user)
            todo.remove_todo(todo.WEIGH_DELIVERY_TASK, id_)
        else:
            if request.form.get("action") == "delete":
                try:
                    task.delete()
                    flash(u"删除发货任务成功")
                except:
                    abort(403)
            else:
                return render_template("validation-error.html", errors=form.errors,
                                       back_url=delivery_session_view.url_for_object(model=task.unload_session.model),
                                       nav_bar=nav_bar), 403
        return redirect(form.url.data or url_for("delivery.delivery_session", id_=task.delivery_session_id))
    else:
        return render_template("delivery/delivery-task.html", titlename=u"发货任务称重", task=task, nav_bar=nav_bar)
Exemple #8
0
    def op(self, obj):
        from lite_mms.apis.todo import remove_todo, WEIGH_UNLOAD_TASK

        for task in obj.task_list:
            remove_todo(WEIGH_UNLOAD_TASK, task.id)
        super(DeleteUnloadSessionAction, self).op(obj)
Exemple #9
0
def work_command():
    """
    生成一个新的工单
    """
    if request.method == "GET":
        from lite_mms import apis

        sub_order = apis.order.SubOrderWrapper.get_sub_order(
            request.args.get("sub_order_id", type=int))
        if not sub_order:
            abort(404)
        try:
            dep = apis.harbor.get_harbor_model(sub_order.harbor.name).department
            return dict(sub_order=sub_order, procedure_list=dep.procedure_list, department=dep, titlename=u"预排产")
        except AttributeError:
            abort(404)
    else:
        from lite_mms.apis import manufacture, order

        class PreScheduleForm(Form):
            sub_order_id = HiddenField('sub_order_id', [validators.required()])
            schedule_weight = IntegerField('schedule_weight',
                                           [validators.required()])
            procedure = IntegerField('procedure')
            tech_req = TextField('tech_req')
            schedule_count = IntegerField('schedule_count')
            urgent = BooleanField('urgent')
            url = HiddenField("url")

        form = PreScheduleForm(request.form)
        sub_order = order.get_sub_order(form.sub_order_id.data)
        if not sub_order:
            abort(404)
        if form.validate():
            try:
                inst = manufacture.new_work_command(
                    sub_order_id=sub_order.id,
                    org_weight=form.schedule_weight.data,
                    procedure_id=form.procedure.data,
                    org_cnt=form.schedule_count.data,
                    urgent=form.urgent.data,
                    tech_req=form.tech_req.data)
                if inst:
                    from lite_mms.apis.todo import remove_todo, DISPATCH_ORDER

                    remove_todo(DISPATCH_ORDER, sub_order.order.id)

                    from lite_mms.basemain import timeline_logger

                    timeline_logger.info(u"新建",
                                         extra={"obj": inst,
                                                "actor": current_user if current_user.is_authenticated() else None,
                                                "action": u"新建", "obj_pk": inst.id})

                    if inst.sub_order.returned:
                        flash(u"成功创建工单(编号%d),请提醒质检员赶快处理" % inst.id)
                    else:
                        flash(u"成功创建工单(编号%d)" % inst.id)
            except ValueError as a:
                return render_template("error.html", msg=a.message,
                                       back_url=form.url.data or url_for('order.order', id_=sub_order.order.id)), 403
            return redirect(form.url.data or url_for('order.order', id_=sub_order.order.id))
        else:
            return render_template("error.html", msg=form.errors,
                                   back_url=url_for('order.order', id_=sub_order.order.id)), 403
Exemple #10
0
def work_command():
    """
    生成一个新的工单
    """
    if request.method == "GET":
        from lite_mms import apis

        sub_order = apis.order.SubOrderWrapper.get_sub_order(
            request.args.get("sub_order_id", type=int))
        if not sub_order:
            abort(404)
        try:
            dep = apis.harbor.get_harbor_model(sub_order.harbor.name).department
            return dict(sub_order=sub_order, procedure_list=dep.procedure_list, department=dep, titlename=u"预排产")
        except AttributeError:
            abort(404)
    else:
        from lite_mms.apis import manufacture, order

        class PreScheduleForm(Form):
            sub_order_id = HiddenField('sub_order_id', [validators.required()])
            schedule_weight = IntegerField('schedule_weight',
                                           [validators.required()])
            procedure = IntegerField('procedure')
            tech_req = TextField('tech_req')
            schedule_count = IntegerField('schedule_count')
            urgent = BooleanField('urgent')
            url = HiddenField("url")

        form = PreScheduleForm(request.form)
        sub_order = order.get_sub_order(form.sub_order_id.data)
        if not sub_order:
            abort(404)
        if form.validate():
            try:
                inst = manufacture.new_work_command(
                    sub_order_id=sub_order.id,
                    org_weight=form.schedule_weight.data,
                    procedure_id=form.procedure.data,
                    org_cnt=form.schedule_count.data,
                    urgent=form.urgent.data,
                    tech_req=form.tech_req.data)
                if inst:
                    from lite_mms.apis.todo import remove_todo, DISPATCH_ORDER

                    remove_todo(DISPATCH_ORDER, sub_order.order.id)

                    from lite_mms.basemain import timeline_logger

                    timeline_logger.info(u"新建",
                                         extra={"obj": inst,
                                                "actor": current_user if current_user.is_authenticated else None,
                                                "action": u"新建", "obj_pk": inst.id})

                    if inst.sub_order.returned:
                        flash(u"成功创建工单(编号%d),请提醒质检员赶快处理" % inst.id)
                    else:
                        flash(u"成功创建工单(编号%d)" % inst.id)
            except ValueError as a:
                return render_template("error.html", msg=a.message,
                                       back_url=form.url.data or url_for('order.order', id_=sub_order.order.id)), 403
            return redirect(form.url.data or url_for('order.order', id_=sub_order.order.id))
        else:
            return render_template("error.html", msg=form.errors,
                                   back_url=url_for('order.order', id_=sub_order.order.id)), 403
Exemple #11
0
    def op(self, obj):
        from lite_mms.apis.todo import remove_todo, WEIGH_UNLOAD_TASK

        for task in obj.task_list:
            remove_todo(WEIGH_UNLOAD_TASK, task.id)
        super(DeleteUnloadSessionAction, self).op(obj)
Exemple #12
0
    def op(self, obj):
        from lite_mms.apis.todo import remove_todo, WEIGH_DELIVERY_TASK

        for task in obj.delivery_task_list:
            remove_todo(WEIGH_DELIVERY_TASK, task.id)
        super(DeleteDeliverySession, self).op(obj)