def get(self):
        rightful_keys = (
            'id',
            'title',
            'description',
            'inventory_version',
            'create_time',
            'update_time',
            'create_user',
            'status',
            'type',
            'page',
            'page_size',
        )

        uri_kwargs = take_out_unrightful_arguments(rightful_keys, self.url_arguments)

        page = int(uri_kwargs.pop("page", 1))
        page_size = int(uri_kwargs.pop("page_size", 5))

        with session_scope() as ss:
            publish_plan_query = ss.query(PublishPlan).filter_by(**uri_kwargs).filter(PublishPlan.status != 7).order_by(
                desc(PublishPlan.create_time))

            total_count = publish_plan_query.count()

            publish_plan_list = publish_plan_query[(page - 1) * page_size:page * page_size]

            res = [plan.to_dict() for plan in publish_plan_list]

        self.render_json_response(code=200, msg="OK", total_count=total_count, res=res)
Beispiel #2
0
    def put(self):
        res = {}
        rightful_keys = (
            'id',
            'step',
            'title',
            'note',
            'action',
            'status',
        )
        body_kwargs = take_out_unrightful_arguments(rightful_keys, self.body_arguments)

        id_ = body_kwargs.pop('id', None)
        if id_ is None:
            raise HTTPError(status_code=400, reason='Missing argument "id"')

        with session_scope() as ss:
            q = ss.query(PublishPattern).filter_by(id=id_)
            q.update(body_kwargs)

            db_res = q.one_or_none()
            if db_res is not None:
                res = db_res.to_dict()

        audit_log(self, description='更新发版步骤', resource_type=4, resource_id=id_)
        self.render_json_response(code=200, res=res)
Beispiel #3
0
    def get(self):
        # take args
        rightful_keys = ('id', 'create_time', 'update_time', 'user_id',
                         'resource_type', 'resource_id', 'description',
                         'visible', 'method', 'path', 'fullpath', 'body',
                         'page', 'page_size', 'order_by', 'desc',
                         'between_time', 'return_resource')
        uri_kwargs = take_out_unrightful_arguments(rightful_keys,
                                                   self.url_arguments)

        page = int(uri_kwargs.pop("page", 1))
        page_size = int(uri_kwargs.pop("page_size", 15))

        order_by = uri_kwargs.pop('order_by', None)
        try:
            desc_ = int(uri_kwargs.pop('desc', 0))
        except ValueError:
            desc_ = 0

        try:
            return_resource = int(uri_kwargs.pop('return_resource', 0))
        except ValueError:
            return_resource = 0

        between_time = uri_kwargs.pop('between_time', None)
        if between_time is not None:
            uri_kwargs.pop('create_time', None)
            between_time = between_time.split(',')
            if len(between_time) < 2:
                self.render_json_response(code=400,
                                          msg='between_time need 2 arguments',
                                          res=[])

        with session_scope() as ss:
            # join sql
            q = ss.query(AuditLog).filter_by(**uri_kwargs)

            if between_time:
                q = q.filter(
                    AuditLog.create_time.between(between_time[0],
                                                 between_time[1]))

            if order_by is not None:
                if desc_:
                    order_by = desc(order_by)
                q = q.order_by(order_by)

            total_count = q.count()

            res = pagination(q, page, page_size)
            res = [r.to_dict(return_resource) for r in res]

        return self.render_json_response(code=200,
                                         msg='ok',
                                         total_count=total_count,
                                         res=res)
    def put(self):
        res = {}
        rightful_keys = (
            'id',
            'publish_pattern_id',
            'publish_host_id',
            'status',
        )
        body_kwargs = take_out_unrightful_arguments(rightful_keys,
                                                    self.body_arguments)

        _id = body_kwargs.pop('id', None)
        pattern_id = body_kwargs.pop('publish_pattern_id', None)
        host_id = body_kwargs.pop('publish_host_id', None)
        if (_id is None) and (pattern_id is None or host_id is None):
            raise HTTPError(
                status_code=400,
                reason=
                '"id" or ("publish_pattern_id" and "publish_host_id") is required'
            )

        with session_scope() as ss:
            if _id is not None:
                q = ss.query(PublishPatternHost).filter_by(
                    id=_id).with_for_update()
            else:
                q = ss.query(PublishPatternHost).filter_by(
                    publish_pattern_id=pattern_id, publish_host_id=host_id)

            pattern_host = q.one_or_none()
            if pattern_host is None:
                raise HTTPError(status_code=400,
                                reason='Id not found: %d' % _id)

            q.update(body_kwargs)
            ss.flush()

            new_status = body_kwargs.pop('status', None)
            if new_status is not None:
                for t in pattern_host.publish_pattern_tasks:
                    t.status = new_status
                ss.flush()
                upgrade_pattern_status(ss, pattern_host.publish_pattern_id)

            res = pattern_host.to_dict()

        self.render_json_response(code=200, res=res)
Beispiel #5
0
    def get(self):
        res = []
        rightful_keys = (
            'id',
            'create_time',
            'update_time',
            'publish_plan_id',
            'step',
            'title',
            'note',
            'action',
            'status',
            'page',
            'page_size',
            'order_by',
            'desc',
        )
        uri_kwargs = take_out_unrightful_arguments(rightful_keys, self.url_arguments)
        page = int(uri_kwargs.pop("page", 1))
        page_size = int(uri_kwargs.pop("page_size", 15))
        order_by = uri_kwargs.pop("order_by", None)
        try:
            desc_ = int(uri_kwargs.pop('desc', 0))
        except ValueError:
            desc_ = 0

        with session_scope() as ss:
            q = ss.query(PublishPattern).filter_by(**uri_kwargs)
            if order_by is not None:
                if desc_:
                    order_by = desc(order_by)
                q = q.order_by(order_by)
            total_count = q.count()
            db_res = pagination(q, page, page_size)

            for pattern in db_res:
                r = pattern.to_dict()
                r['publish_application_hosts'] = get_publish_hosts(pattern)

                res.append(r)

            self.render_json_response(code=200, msg='ok', total_count=total_count, res=res)
Beispiel #6
0
    def get(self):
        rightful_keys = (
            'id',
            'create_time',
            'update_time',
            'page',
            'page_size',
            'order_by',
            'desc',
            'name',
            'status',
            'return_resource',
            'is_delete',
            'create_user_id',
        )
        uri_kwargs = take_out_unrightful_arguments(rightful_keys, self.url_arguments)
        page = int(uri_kwargs.pop("page", 1))
        page_size = int(uri_kwargs.pop("page_size", 15))
        order_by = uri_kwargs.pop("order_by", None)
        try:
            desc_ = int(uri_kwargs.pop('desc', 0))
        except ValueError:
            desc_ = 0

        try:
            _return_resource = int(uri_kwargs.pop('return_resource', 0))
        except ValueError:
            _return_resource = 0

        with session_scope() as ss:
            q = ss.query(PublishProject).filter_by(**uri_kwargs)
            if order_by is not None:
                if desc_:
                    order_by = desc(order_by)
                q = q.order_by(order_by)
            total_count = q.count()
            db_res = pagination(q, page, page_size)
            res = [r.to_dict(_return_resource) for r in db_res]

        self.render_json_response(code=200, total_count=total_count, res=res)