Beispiel #1
0
    async def post(self, *args, **kwargs):
        post_json = self.get_post_body_dict()
        user_id = post_json.get('user_id', None)
        password = post_json.get('password', None)
        nickname = post_json.get('nickname', "默认昵称")

        if list_have_none_mem(*[user_id, password]) or user_id == 'admin':
            return ConstData.msg_args_wrong
        mongo_conn = self.get_async_mongo()
        mycol = mongo_conn['g_users']

        res = await mycol.find_one({'user_id': user_id})
        _id = None
        if res:
            if res['is_del'] is False:
                return ConstData.msg_exist
            _id = res['_id']

        rand_salt = get_rand_salt()
        data = dict(
            nickname=nickname,
            user_id=user_id,
            passwd=hashlibmd5with_salt(password, rand_salt),
            salt=rand_salt,
        )

        data = wrap_default_rc_tag(data)  # 加上默认的标签
        if _id:
            await mycol.update({'_id': _id}, {'$set': data}, upsert=True)
        else:
            _id = await mycol.insert(data)

        # todo: select orgnization
        user_org_col = mongo_conn['user_org_rel']
        res = await user_org_col.find_one({'user': _id})
        data = dict(
            user_name=nickname,
            user=_id,
            # organization=org_id,
            is_active=True,
            # org_name=org_name,
            is_default=False,
            is_owner=False,
            is_current=True)
        if res is None:
            org_col = mongo_conn['organization']
            res = await org_col.find_one({
                'is_del': False,
            })
            org_name = res['name']
            org_id = res['_id']
        else:
            org_name = res['org_name']
            org_id = res['organization']
        data['org_name'] = org_name
        data['organization'] = org_id

        data = wrap_default_rc_tag(data)  # 加上默认的标签
        await user_org_col.update({'user': _id}, {'$set': data}, upsert=True)
        return ConstData.msg_succeed
Beispiel #2
0
    async def post(self, *args, **kwargs):
        post_json = self.get_post_body_dict()
        content_id = post_json.get('content_id', None)
        pro_id = post_json.get('pro_id', "5a7fb0cd47de9d5cf3d13a44")
        group = post_json.get('group', "test")
        time_stamp = post_json.get('date_time', None)
        content = post_json.get('content', None)

        if list_have_none_mem(*[pro_id, group, time_stamp, content]):
            return ConstData.msg_args_wrong
        mongo_conn = self.get_async_mongo()
        mycol = mongo_conn['dashboard_content']
        timeArray = time.localtime(int(time_stamp) / 1000.0)
        date_time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
        data = dict(
            pro_id=ObjectId(pro_id),
            group=group,
            date_time=date_time,
            content=content,
        )
        data = wrap_default_rc_tag(data)  # 加上默认的标签
        if content_id:
            await mycol.update({'_id': ObjectId(content_id)}, {'$set': data}, upsert=True)
            return ConstData.msg_succeed
        else:
            _id = await mycol.insert(data)
            msg_succeed = '{"code":%s,"msg":"%s","data":{"_id": "%s"}}' % (ResCode.ok, "success", _id)
            return msg_succeed
Beispiel #3
0
    async def post(self):
        """
        客户端将整个报告上传到服务器
        :return:
        """
        req_dict = self.get_post_body_dict()

        # 做好字段的检查工作
        pro_id = req_dict.get('pro_id', None)
        failures = req_dict.get('failures', None)
        errors = req_dict.get('errors', None)
        details = req_dict.get('details', None)
        skipped = req_dict.get('skipped', None)
        pro_version = req_dict.get('pro_version', None)
        run_time = req_dict.get('run_time', None)
        total = req_dict.get('total', None)
        was_successful = req_dict.get('was_successful', None)

        if list_have_none_mem(*[
                pro_id,
                failures,
                errors,
                details,
                skipped,
                pro_version,
                run_time,
                total,
                was_successful,
        ]):
            return ConstData.msg_args_wrong

        if len(pro_version) > 32:  # 如果版本号长度大于32,比如出现了没有标定版本号的情况
            pro_version = '0.0.0.0.0'
            req_dict['pro_version'] = pro_version

        db = self.get_async_mongo()
        proj_col = db.test_project
        test_data_col = db.unit_test_data

        # project = await Project.objects.get(id=ObjectId(pro_id))
        project = await proj_col.find_one({'_id': ObjectId(pro_id)})
        """:type:Project"""

        app_org = await self.get_organization()
        """:type:Organization"""

        # if (project is None) or (project.organization is None):
        if project is None:
            return ConstData.msg_forbidden

        # 权限鉴定,不允许越权访问别人的组织的项目
        pro_org_id = project['organization']
        if pro_org_id != app_org:
            return ConstData.msg_forbidden

        # todo 后续的一些更细节的字段内在的约束检查

        req_dict = wrap_project_tag(req_dict, project)  # 加上项目标签
        req_dict = wrap_default_rc_tag(req_dict)  # 加上默认的标签
        req_dict = wrap_org_tag(req_dict, str(pro_org_id))  # 加上组织的标签
        insert_res = await test_data_col.insert(req_dict)

        return ConstData.msg_succeed
Beispiel #4
0
    async def post(self):
        """
        客户端将整个报告上传到服务器
        :return:
        """
        token = self.get_argument('token', None)
        req_dict = self.get_post_body_dict()

        # 做好字段的检查工作
        pro_id = req_dict.get('pro_id', None)
        failures = req_dict.get('failures', None)
        errors = req_dict.get('errors', None)
        details = req_dict.get('details', None)
        skipped = req_dict.get('skipped', None)
        pro_version = req_dict.get('pro_version', None)
        run_time = req_dict.get('run_time', None)
        total = req_dict.get('total', None)
        was_successful = req_dict.get('was_successful', None)
        tag = req_dict.get('tag', 'default')

        if list_have_none_mem(*[
                pro_id,
                failures,
                errors,
                details,
                skipped,
                pro_version,
                run_time,
                total,
                was_successful,
        ]):
            return ConstData.msg_args_wrong

        if len(pro_version) > 32:  # 如果版本号长度大于32,比如出现了没有标定版本号的情况
            pro_version = '0.0.0.0.0'
            req_dict['pro_version'] = pro_version

        db = self.get_async_mongo()
        proj_col = db.test_project
        test_data_col = db.unit_test_data

        # project = await Project.objects.get(id=ObjectId(pro_id))
        project = await proj_col.find_one({'_id': ObjectId(pro_id)})
        """:type:Project"""

        app_org = await self.get_organization()
        """:type:Organization"""

        # if (project is None) or (project.organization is None):
        if project is None:
            return ConstData.msg_forbidden

        # 权限鉴定,不允许越权访问别人的组织的项目
        pro_org_id = project['organization']
        if pro_org_id != app_org:
            return ConstData.msg_forbidden

        # todo 后续的一些更细节的字段内在的约束检查

        req_dict = wrap_project_tag(req_dict, project)  # 加上项目标签
        req_dict = wrap_default_rc_tag(req_dict)  # 加上默认的标签
        req_dict = wrap_org_tag(req_dict, str(pro_org_id))  # 加上组织的标签
        insert_res = await test_data_col.insert(req_dict)
        if 'tags' in project.keys():
            pro_tags = project['tags']
            # if tag in pro_tags:
            #     return ConstData.res_tpl % (ResCode.ok, 'success', '"' + str(insert_res) + '"')
        else:
            pro_tags = []
        if tag not in pro_tags:
            pro_tags.append(tag)
        await proj_col.update({'_id': ObjectId(pro_id)},
                              {'$set': {
                                  'tags': pro_tags
                              }})
        # return ConstData.res_tpl % (ResCode.ok, 'success', '"' + str(insert_res) + '"')
        self.redirect('/share/get-utest-share-link/?token={}&rep_id={}'.format(
            token, insert_res))