Ejemplo n.º 1
0
def create_asset(name, sign, rank, remark='', operator=None):
    '''
    创建资产模块
    '''
    if AssetModel.objects.filter(name=name).exists():
        raise errors.CommonError('资产模块名称已经存在')
    if AssetModel.objects.filter(sign=sign).exists():
        raise errors.CommonError('资产模块标识已经存在')
    data = {
        'name': name,
        'sign': sign,
        'rank': rank,
        'remark': remark,
    }
    obj = base_ctl.create_obj(AssetModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 2
0
def delete_asset(obj_id, operator):
    '''
    删除资产
    '''
    obj = base_ctl.get_obj(AssetModel, obj_id)
    if obj.user_id != operator.id:
        raise errors.CommonError('数据异常')
    base_ctl.delete_obj(AssetModel, obj_id, operator)
Ejemplo n.º 3
0
def update_mod(obj_id, name, sign, rank, operator=None):
    '''
    更新模块
    '''
    if ModModel.objects.filter(name=name).exclude(id=obj_id).exists():
        raise errors.CommonError('名称已存在')
    if ModModel.objects.filter(sign=sign).exclude(id=obj_id).exists():
        raise errors.CommonError('标识已存在')
    obj = base_ctl.get_obj(ModModel, obj_id)
    data = {
        'name': name,
        'sign': sign,
        'rank': rank,
    }
    obj = base_ctl.update_obj(ModModel, obj_id, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 4
0
def create_role(name, sign, operator=None):
    '''
    创建角色
    '''
    obj = RoleModel.objects.filter(name=name).first()
    if obj:
        raise errors.CommonError('角色已存在')
    obj = RoleModel.objects.filter(sign=sign).first()
    if obj:
        raise errors.CommonError('标识已存在')
    data = {
        'name': name,
        'sign': sign,
    }
    obj = base_ctl.create_obj(RoleModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 5
0
def create_gitlab_server(name, host, username, password, token, operator=None):
    '''
    创建Gitlab服务
    '''
    if GitlabServerModel.objects.filter(name=name).exists():
        raise errors.CommonError('Gitlab已经存在')
    if GitlabServerModel.objects.filter(host=host).exists():
        raise errors.CommonError('Gitlab已经存在')
    data = {
        'name': name,
        'host': host,
        'username': username,
        'password': password,
        'token': token,
    }
    obj = base_ctl.create_obj(GitlabServerModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 6
0
def get_enabled_aliyun_key():
    '''
    获取启用状态的阿里云key
    '''
    obj = AliyunKeyModel.objects.filter(
        status=AliyunKeyModel.ST_ENABLE).first()
    if not obj:
        raise errors.CommonError('无可用阿里云key')
    return obj.key, obj.secret
Ejemplo n.º 7
0
def delete_stopword(obj_id):
    '''
    删除停止词
    '''
    obj = StopwordModel.objects.filter(id=obj_id, is_deleted=False).first()
    if not obj:
        raise errors.CommonError('停止词不存在')
    obj.is_deleted = True
    obj.save()
Ejemplo n.º 8
0
def update_stopword(obj_id, status):
    '''
    编辑停止词
    '''
    obj = StopwordModel.objects.filter(id=obj_id, is_deleted=False).first()
    if not obj:
        raise errors.CommonError('停止词不存在')
    obj.status = status
    obj.save()
Ejemplo n.º 9
0
def login(username, password, is_ldap=False):
    '''
    登录
    '''
    base_query = UserModel.objects.filter(username=username)
    if is_ldap:
        base_query = base_query.filter(typ=UserModel.TYP_LDAP)
    obj = base_query.first()
    if not obj:
        raise errors.CommonError('用户名或密码错误')
    if not obj.check_password(password):
        raise errors.CommonError('用户名或密码错误')
    if obj.status == UserModel.ST_FORBIDDEN:
        raise errors.CommonError('用户已被禁止登录')
    data = {
        'token': obj.gen_token(),
    }
    return data
Ejemplo n.º 10
0
def update_department_user(department_id, user_id, typ, operator=None):
    '''
    编辑部门关联用户
    '''
    query = {
        'user_id': user_id,
        'department_id': department_id,
    }
    obj = DepartmentUserModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('用户未在此部门')
    if not DepartmentUserModel.check_choices('typ', typ):
        raise errors.CommonError('类型值不正确')
    data = {
        'typ': typ,
    }
    obj = base_ctl.update_obj(DepartmentUserModel, obj.id, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 11
0
def update_comment(obj_id, label):
    '''
    编辑评价
    '''
    obj = CommentModel.objects.filter(id=obj_id, is_deleted=False).first()
    if not obj:
        raise errors.CommonError('评论不存在')
    obj.label = label
    obj.status = CommentModel.ST_CHECKED
    obj.save()
Ejemplo n.º 12
0
 def wrapper(*args, **kwargs):
     key = self.gen_key(prifix, params_str, key_str, args, kwargs)
     try:
         with self.redis_cli.db.lock(
                 key, timeout=timeout,
                 blocking_timeout=timeout) as lock:
             result = func(*args, **kwargs)
     except LockError:
         raise errors.CommonError('不允许同时操作')
     return result
Ejemplo n.º 13
0
def delete_user(obj_id, operator=None):
    '''
    删除用户
    '''
    obj = base_ctl.get_obj(UserModel, obj_id)
    if is_admin(obj):
        raise errors.CommonError('超级管理员用户不允许删除')

    with transaction.atomic():
        base_ctl.delete_obj(UserModel, obj_id, operator)
Ejemplo n.º 14
0
def update_service_user(obj_id, user_id, typ, operator=None):
    '''
    编辑服务关联用户
    '''
    query = {
        'service_id': obj_id,
        'user_id': user_id,
    }
    obj = ServiceUserModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('用户未在此服务中')
    if not ServiceUserModel.check_choices('typ', typ):
        raise errors.CommonError('类型值不正确')
    data = {
        'typ': typ,
    }
    obj = base_ctl.update_obj(ServiceUserModel, obj.id, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 15
0
def create_stopword(word):
    '''
    创建停止词
    '''
    obj = StopwordModel.objects.filter(word=word, is_deleted=False).first()
    if obj:
        raise errors.CommonError('此停止词已经存在')
    data = {
        'word': word,
    }
    obj = StopwordModel.objects.create(**data)
Ejemplo n.º 16
0
def create_service_user(obj_id, user_id, typ, operator=None):
    '''
    创建服务关联用户
    '''
    query = {
        'service_id': obj_id,
        'user_id': user_id,
    }
    if ServiceUserModel.objects.filter(**query).exists():
        raise errors.CommonError('用户已在此服务中')
    if not ServiceUserModel.check_choices('typ', typ):
        raise errors.CommonError('类型值不正确')
    data = {
        'service_id': obj_id,
        'user_id': user_id,
        'typ': typ,
    }
    obj = base_ctl.create_obj(ServiceUserModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 17
0
def create_department_user(department_id, user_id, typ, operator=None):
    '''
    创建部门关联用户
    '''
    query = {
        'user_id': user_id,
        'department_id': department_id,
    }
    if DepartmentUserModel.objects.filter(**query).exists():
        raise errors.CommonError('用户已在此部门中')
    if not DepartmentUserModel.check_choices('typ', typ):
        raise errors.CommonError('类型值不正确')
    data = {
        'user_id': user_id,
        'department_id': department_id,
        'typ': typ,
    }
    obj = base_ctl.create_obj(DepartmentUserModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 18
0
def update_service(obj_id, name, sign, project_id, language_id, frame_id, gitlab_id, remark=None, operator=None):
    '''
    编辑服务
    '''
    if ServiceModel.objects.filter(name=name).exclude(id=obj_id).exists():
        raise errors.CommonError('服务名称已存在')
    if ServiceModel.objects.filter(sign=sign).exclude(id=obj_id).exists():
        raise errors.CommonError('服务标识已存在')
    data = {
        'name': name,
        'sign': sign,
        'project_id': project_id,
        'language_id': language_id,
        'frame_id': frame_id,
        'gitlab_id': gitlab_id,
        'remark': remark,
    }
    obj = base_ctl.update_obj(ServiceModel, obj_id, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 19
0
def create_berry(name, typ, time_mode=BerryModel.TIME_MODE_NOW, dt_start=None, params={}, operator=None):
    '''
    创建任务
    params: dict
    '''
    query = {
        'sign': typ,
    }
    typ_obj = BerryTypeModel.objects.filter(**query).first()
    if not typ_obj:
        raise errors.CommonError('任务类型不存在')
    if not BerryModel.check_choices('time_mode', time_mode):
        raise errors.CommonError('时间模式值不正确')

    now = time_utils.now()
    countdown = 0
    if time_mode == BerryModel.TIME_MODE_CRONTAB:
        if not dt_start:
            raise errors.CommonError('定时任务必须传开始时间')
        if dt_start <= now:
            raise errors.CommonError('不能指定过去的时间')
        countdown = dt_start - now
        countdown = int(countdown.total_seconds())
        if countdown < 5 * 60:
            raise errors.CommonError('定时任务必须指定五分钟以后的时间')
    else:
        dt_start = time_utils.now()

    data = {
        'name': name,
        'typ_id': typ_obj.id,
        'time_mode': time_mode,
        'dt_start': dt_start,
        'input_params': params,
    }
    berry_obj = base_ctl.create_obj(BerryModel, data)
    result = berry_tasks.apply_task.apply_async(countdown=countdown, args=[berry_obj.id])
    data = {
        'task_id': result.task_id,
    }
    base_ctl.update_obj(BerryModel, berry_obj.id, data)
Ejemplo n.º 20
0
def delete_user(user_id):
    '''
    删除用户
    '''
    user = UserModel.objects.filter(id=user_id, is_deleted=False).first()
    if not user:
        raise errors.CommonError('用户不存在')
    user.is_deleted = True
    user.save()
    UserRoleModel.objects.filter(user_id=user_id,
                                 is_deleted=False).update(is_deleted=True)
    return user
Ejemplo n.º 21
0
def delete_role_permission(role_id, permission_id, operator=None):
    '''
    删除角色关联权限
    '''
    query = {
        'role_id': role_id,
        'permission_id': permission_id,
    }
    obj = RolePermissionModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('角色未关联此权限')
    base_ctl.delete_obj(RolePermissionModel, obj.id, operator)
Ejemplo n.º 22
0
def delete_role_user(role_id, user_id, operator=None):
    '''
    删除角色关联用户
    '''
    query = {
        'user_id': user_id,
        'role_id': role_id,
    }
    obj = RoleUserModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('用户未关联此角色')
    base_ctl.delete_obj(RoleUserModel, obj.id, operator)
Ejemplo n.º 23
0
def set_region_status(obj_id, status, operator):
    '''
    设置地域状态
    '''
    if not RegionModel.check_choices('status', status):
        raise errors.CommonError('状态值不正确')
    data = {
        'status': status,
    }
    obj = base_ctl.update_obj(RegionModel, obj_id, data)
    data = obj.to_dict()
    return data
Ejemplo n.º 24
0
def delete_service_user(obj_id, user_id, operator=None):
    '''
    删除服务关联用户
    '''
    query = {
        'service_id': obj_id,
        'user_id': user_id,
    }
    obj = ServiceUserModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('用户未在此项目中')
    base_ctl.delete_obj(ServiceUserModel, obj.id, operator)
Ejemplo n.º 25
0
def delete_service_asset(obj_id, asset_id, operator=None):
    '''
    删除服务关联资产模块
    '''
    query = {
        'service_id': obj_id,
        'asset_id': asset_id,
    }
    obj = ServiceAssetModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('服务未关联此资产模块')
    base_ctl.delete_obj(ServiceAssetModel, obj.id, operator)
Ejemplo n.º 26
0
def delete_department_user(department_id, user_id, operator=None):
    '''
    删除部门关联用户
    '''
    query = {
        'user_id': user_id,
        'department_id': department_id,
    }
    obj = DepartmentUserModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('用户未在此部门中')
    base_ctl.delete_obj(DepartmentUserModel, obj.id, operator)
Ejemplo n.º 27
0
def delete_service_department(obj_id, department_id, operator=None):
    '''
    删除服务关联部门
    '''
    query = {
        'service_id': obj_id,
        'department_id': department_id,
    }
    obj = DepartmentServiceModel.objects.filter(**query).first()
    if not obj:
        raise errors.CommonError('服务未关联此部门')
    base_ctl.delete_obj(DepartmentServiceModel, obj.id, operator)
Ejemplo n.º 28
0
def create_aliyun_key(key, secret, operator):
    '''
    创建阿里云key
    '''
    if AliyunKeyModel.objects.filter(key=key).exists():
        raise errors.CommonError('此Key已经存在')
    data = {
        'key': key,
        'secret': secret,
    }
    obj = base_ctl.create_obj(AliyunKeyModel, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 29
0
def update_aliyun_key(obj_id, key, secret, operator):
    '''
    编辑阿里云key
    '''
    if AliyunKeyModel.objects.filter(key=key).exclude(id=obj_id).exists():
        raise errors.CommonError('此Key已经存在')
    data = {
        'key': key,
        'secret': secret,
    }
    obj = base_ctl.update_obj(AliyunKeyModel, obj_id, data, operator)
    data = obj.to_dict()
    return data
Ejemplo n.º 30
0
def update_berry_type(obj_id, name, sign, parent_id, operator=None):
    '''
    编辑任务类型
    '''
    query = {
        'name': name,
    }
    if BerryTypeModel.objects.filter(**query).exclude(id=obj_id).exists():
        raise errors.CommonError('任务类型名称已经存在')
    query = {
        'sign': sign,
    }
    if BerryTypeModel.objects.filter(**query).exclude(id=obj_id).exists():
        raise errors.CommonError('任务类型标识已经存在')
    data = {
        'name': name,
        'sign': sign,
        'parent_id': parent_id,
    }
    obj = base_ctl.update_obj(BerryTypeModel, obj_id, data, operator)
    data = obj.to_dict()
    return data