Beispiel #1
0
    def get(self):
        names = self.get_arg('names','')
        if '' == names:
            self.out_fail(code = 1001, msg = 'names')
            return
        names = str_helper.format_str_to_list_filter_empty(names, ',')

        users = []
        for name in names:
            if str_helper.is_null_or_empty(name):
                continue
            user = user_logic.query_user_by_name_cache(name = name)    
            if None != user:
                users.append(user)
                
        json = str_helper.json_encode(users)
        self.out_ok(data = json)
        return
Beispiel #2
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error

_query_sql = '''  select id, operID, operUserName, operRealName, appCode, funcPath,
						action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime from  sso_oper_log as u where 1 = 1 '''
_query_col = str_helper.format_str_to_list_filter_empty(
    'id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime ',
    ',')


def query_page(operID, operUserName, appCode, funcPath, action, operIp,
               beginTime, endTime, page, size):
    sql = _query_sql
    ps = []
    if None != operID and 0 != operID:
        sql = sql + ' and u.operID = %s '
        ps.append(operID)
    if None != operUserName and '' != operUserName:
        sql = sql + ' and u.operUserName = %s '
        ps.append(operUserName)
    if None != appCode and '' != appCode:
        sql = sql + ' and u.appCode = %s '
        ps.append(appCode)
    if None != funcPath and '' != funcPath:
        sql = sql + ' and u.funcPath = %s '
        ps.append(funcPath)
    if None != action and '' != action:
        sql = sql + ' and u.action = %s '
        ps.append(action)
Beispiel #3
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error

_query_sql = '''  select  id, `name`, `status`, remark, isDelete, 
                    creater, createTime, lastUpdater, lastUpdateTime  
                    from  sso_department   where  isDelete = %s   '''
_query_col = str_helper.format_str_to_list_filter_empty(
    'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime',
    ',')
''' 分页查询部门信息 '''


def query_page(name='', status=0, page=1, size=12):
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%' + name + '%')

    sql = sql + ' order by createTime asc '
    yz = tuple(ps)
    deps = mysql.find_page(sql, yz, _query_col, page, size)
    if None != deps['data']:
        for r in deps['data']:
            r['statusname'] = state.Status.get(r['status'])
Beispiel #4
0
            pw4 = True

    if (pw1 == True or pw2 == True) and pw3 == True:
        return 0
    else:
        return 103012





_login_sql = '''  select id, realName, departmentID, email, mobile, tel , name, loginCount 
                        from sso_user where name = %s and passWord = %s and status = %s and 
                        beginDate <= now() and endDate >= now() 
                        and isDelete = %s   '''
_login_col = str_helper.format_str_to_list_filter_empty('id, realName, departmentID, email, mobile, tel , name, loginCount', ',')
''' 用户登录 '''
def login( name, password):
    password = _format_user_password_md5(password)
    user = mysql.find_one(_login_sql, (name, password, state.statusActive, state.Boole['false']), _login_col)
    return user

''' 登录应用,获得登录的url '''
def get_goto_user_url( userID, appCode, ip, backUrl = ''):
    '''   
        保存为这样的格式:
        {"id": 1, "tel": "123", "email": "*****@*****.**", "name": "\u4f59\u6d77", "rights": 
            [{"id":12, "path":"xx.aa", "realName":"abc","right":1, "customRight": [1,2,3]}, {"id":13, "path":"xx.aa.bb","right":1, "customRight": []}]}

{"code":0,"msg":"OK","data":{"tel": "123", "name": "yuhai", "rights": [{"path": "SOCRight.Login", "right": 15, "id": 18, "customRight": []}, 
{"path": "SOCRight.AppManager", "right": 15, "id": 9, "customRight": []}, {"path": "SOCRight.FuncManager", "right": 15, "id": 10, "customRight": [1, 2]},
Beispiel #5
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error, redis_cache
import config

from logic import func_logic, role_logic

_query_sql = '''  select id, name, status, remark, isDelete, creater, createTime, 
                    lastUpdater, lastUpdateTime from sso_user_group where isDelete = %s  '''
_query_col = str_helper.format_str_to_list_filter_empty(
    'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime',
    ',')
''' 分页查询用户组信息 '''


def query_page(id='', name='', status=0, page=1, size=12):
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if '' != id:
        sql = sql + ' and id = %s '
        ps.append(id)
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%' + name + '%')
    yz = tuple(ps)
    sql = sql + ' order by id desc '
    def post(self):
        ps = self.get_page_config('创建项目')
        if ps['isedit']:
            ps['title'] = self.get_page_title('编辑项目')

        project = self.get_args(['name', 'teamPath', 'productUserName', 'productUserRealName', 
                        'devUserName', 'devUserRealName','startDate', 'endDate', 'remark'], '')
        project['status'] = int(self.get_arg('status', '0'))
        project['id'] = int(self.get_arg('id', '0'))        
        project['productIDs'] = str_helper.format_str_to_list_filter_empty(self.get_arg('productIDs',''), ',')
        project['products'] = product_logic.ProductLogic.instance().query_by_ids(project['productIDs'])

        ps = self._init_template_info(ps)

        '''  获取绑定的用户  BEGIN '''
        users = []
        oneUserNames = {}        
        for role in ps['projectRoles']:
            rid = role['id']
            if role['isOne']:
                #单人
                un = self.get_arg('role_select_'+str(rid), '')
                urn = self.get_arg('user_real_name_'+str(rid), '')
                if un != '':                    
                    project['userName_'+str(rid)] = un
                    users.append({'type':rid, 'userName':un, 'userRealName': urn})
                if rid == state.productManagerRoleID:
                    project['productUserName'] = un
                    project['productUserRealName'] = urn
                elif rid == state.devManagerRoleID:
                    project['devUserName'] = un
                    project['devUserRealName'] = urn
            else:
                #多人
                uns = str_helper.format_str_to_list_filter_empty(self.get_arg('userNames_'+str(rid),''), ',')
                for un in uns:
                    for unn in ps['roleUsers'][rid]:
                        if un != unn['userName']:
                            continue
                        users.append({'type':rid, 'userName':un, 'userRealName': unn['userRealName']})
        '''  获取绑定的用户  END '''
        project['users'] = users

        ps['project'] = project

        if len(project['productIDs']) <= 0:
            ps['msg'] = '请选择产品'
            self.render('admin/project/add_or_edit.html', **ps)
            return

        if len(project['users']) <= 0:
            ps['msg'] = '请选择人员'
            self.render('admin/project/add_or_edit.html', **ps)
            return
        
        msg = self.check_str_empty_input(project, ['name', 'productUserName', 'productUserRealName', 
                            'devUserName', 'devUserRealName','startDate', 'endDate'])
        if str_helper.is_null_or_empty(msg) == False:
            ps['msg'] = msg
            self.render('admin/project/add_or_edit.html', **ps)
            return

        project['user'] = self.get_oper_user()
        if ps['isedit']:
            # self.check_oper_right(right = state.operEdit)
            try:
                info = project_logic.ProjectLogic.instance().update(id = project['id'], name = project['name'], 
                        teamPath = project['teamPath'], productUserName = project['productUserName'], 
                        productUserRealName = project['productUserRealName'], devUserName = project['devUserName'], 
                        devUserRealName = project['devUserRealName'], startDate = project['startDate'], 
                        endDate = project['endDate'], status = project['status'], 
                        remark = project['remark'], user = project['user'], productIDs = project['productIDs'], users = project['users'])
                if info:
                    self.redirect(ps['siteDomain'] + 'Admin/Project/List')
                    return
                else:
                    ps['msg'] = state.ResultInfo.get(101, '')
            except error.ProjectError as e:
                ps['msg'] = e.msg
        else:
            # self.check_oper_right(right = state.operAdd)
            try:
                info = project_logic.ProjectLogic.instance().add(name = project['name'], 
                        teamPath = project['teamPath'], productUserName = project['productUserName'], 
                        productUserRealName = project['productUserRealName'], devUserName = project['devUserName'], 
                        devUserRealName = project['devUserRealName'], startDate = project['startDate'], 
                        endDate = project['endDate'], status = project['status'], 
                        remark = project['remark'], user = project['user'], productIDs = project['productIDs'], users = project['users'])
                if info > 0:
                    self.redirect(ps['siteDomain'] + 'Admin/Project/List')
                    return
                else:
                    ps['msg'] = state.ResultInfo.get(101, '')
            except error.ProjectError as e:
                ps['msg'] = e.msg
        ps = self.format_none_to_empty(ps)
        self.render('admin/project/add_or_edit.html', **ps)
Beispiel #7
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error, redis_cache
import config

from logic import func_logic, role_logic



_query_sql = '''  select id, name, status, remark, isDelete, creater, createTime, 
                    lastUpdater, lastUpdateTime from sso_user_group where isDelete = %s  '''
_query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',')
''' 分页查询用户组信息 '''
def query_page( id = '', name = '', status = 0, page = 1, size = 12):
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if '' != id:
        sql = sql + ' and id = %s '
        ps.append(id)
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%'+name+'%')
    yz = tuple(ps)
    sql = sql + ' order by id desc '
    usergroups = mysql.find_page(sql, yz, _query_col, page, size)
    if None != usergroups['data']:
Beispiel #8
0
    def post(self):
        ps = self.get_page_config('创建项目')
        if ps['isedit']:
            ps['title'] = self.get_page_title('编辑项目')

        project = self.get_args([
            'name', 'teamPath', 'productUserName', 'productUserRealName',
            'devUserName', 'devUserRealName', 'startDate', 'endDate', 'remark'
        ], '')
        project['status'] = int(self.get_arg('status', '0'))
        project['id'] = int(self.get_arg('id', '0'))
        project['productIDs'] = str_helper.format_str_to_list_filter_empty(
            self.get_arg('productIDs', ''), ',')
        project['products'] = product_logic.ProductLogic.instance(
        ).query_by_ids(project['productIDs'])

        ps = self._init_template_info(ps)
        '''  获取绑定的用户  BEGIN '''
        users = []
        oneUserNames = {}
        for role in ps['projectRoles']:
            rid = role['id']
            if role['isOne']:
                #单人
                un = self.get_arg('role_select_' + str(rid), '')
                urn = self.get_arg('user_real_name_' + str(rid), '')
                if un != '':
                    project['userName_' + str(rid)] = un
                    users.append({
                        'type': rid,
                        'userName': un,
                        'userRealName': urn
                    })
                if rid == state.productManagerRoleID:
                    project['productUserName'] = un
                    project['productUserRealName'] = urn
                elif rid == state.devManagerRoleID:
                    project['devUserName'] = un
                    project['devUserRealName'] = urn
            else:
                #多人
                uns = str_helper.format_str_to_list_filter_empty(
                    self.get_arg('userNames_' + str(rid), ''), ',')
                for un in uns:
                    for unn in ps['roleUsers'][rid]:
                        if un != unn['userName']:
                            continue
                        users.append({
                            'type': rid,
                            'userName': un,
                            'userRealName': unn['userRealName']
                        })
        '''  获取绑定的用户  END '''
        project['users'] = users

        ps['project'] = project

        if len(project['productIDs']) <= 0:
            ps['msg'] = '请选择产品'
            self.render('admin/project/add_or_edit.html', **ps)
            return

        if len(project['users']) <= 0:
            ps['msg'] = '请选择人员'
            self.render('admin/project/add_or_edit.html', **ps)
            return

        msg = self.check_str_empty_input(project, [
            'name', 'productUserName', 'productUserRealName', 'devUserName',
            'devUserRealName', 'startDate', 'endDate'
        ])
        if str_helper.is_null_or_empty(msg) == False:
            ps['msg'] = msg
            self.render('admin/project/add_or_edit.html', **ps)
            return

        project['user'] = self.get_oper_user()
        if ps['isedit']:
            # self.check_oper_right(right = state.operEdit)
            try:
                info = project_logic.ProjectLogic.instance().update(
                    id=project['id'],
                    name=project['name'],
                    teamPath=project['teamPath'],
                    productUserName=project['productUserName'],
                    productUserRealName=project['productUserRealName'],
                    devUserName=project['devUserName'],
                    devUserRealName=project['devUserRealName'],
                    startDate=project['startDate'],
                    endDate=project['endDate'],
                    status=project['status'],
                    remark=project['remark'],
                    user=project['user'],
                    productIDs=project['productIDs'],
                    users=project['users'])
                if info:
                    self.redirect(ps['siteDomain'] + 'Admin/Project/List')
                    return
                else:
                    ps['msg'] = state.ResultInfo.get(101, '')
            except error.ProjectError as e:
                ps['msg'] = e.msg
        else:
            # self.check_oper_right(right = state.operAdd)
            try:
                info = project_logic.ProjectLogic.instance().add(
                    name=project['name'],
                    teamPath=project['teamPath'],
                    productUserName=project['productUserName'],
                    productUserRealName=project['productUserRealName'],
                    devUserName=project['devUserName'],
                    devUserRealName=project['devUserRealName'],
                    startDate=project['startDate'],
                    endDate=project['endDate'],
                    status=project['status'],
                    remark=project['remark'],
                    user=project['user'],
                    productIDs=project['productIDs'],
                    users=project['users'])
                if info > 0:
                    self.redirect(ps['siteDomain'] + 'Admin/Project/List')
                    return
                else:
                    ps['msg'] = state.ResultInfo.get(101, '')
            except error.ProjectError as e:
                ps['msg'] = e.msg
        ps = self.format_none_to_empty(ps)
        self.render('admin/project/add_or_edit.html', **ps)
Beispiel #9
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error


_query_sql = '''  select id, operID, operUserName, operRealName, appCode, funcPath,
						action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime from  sso_oper_log as u where 1 = 1 '''
_query_col = str_helper.format_str_to_list_filter_empty(
    'id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime ', ',')
def query_page( operID , operUserName, appCode, funcPath, action, operIp, beginTime, endTime, page, size):
    sql = _query_sql
    ps = []
    if None != operID and 0 != operID:
        sql = sql + ' and u.operID = %s '
        ps.append(operID)
    if None != operUserName and '' != operUserName:
        sql = sql + ' and u.operUserName = %s '
        ps.append(operUserName)
    if None != appCode and '' != appCode:
        sql = sql + ' and u.appCode = %s '
        ps.append(appCode)
    if None != funcPath and '' != funcPath:
        sql = sql + ' and u.funcPath = %s '
        ps.append(funcPath)
    if None != action and '' != action:
        sql = sql + ' and u.action = %s '
        ps.append(action)
    if None != operIp and '' != operIp:
        sql = sql + ' and u.operIp = %s '
        ps.append(operIp)
class ProjectLogic():
    def __init__(self):
        return

    _instance = None

    @classmethod
    def instance(cls):
        if cls._instance == None:
            cls._instance = cls()
        return cls._instance

    _query_sql = '''  SELECT id, name, teamPath, productUserName, productUserRealName, devUserName, 
                        devUserRealName, startDate, endDate, `status`, remark, isDelete, creater, createTime, 
                        lastUpdater, lastUpdateTime  FROM  pm_project WHERE isDelete = %s   '''
    _query_col = str_helper.format_str_to_list_filter_empty(
        'id, name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime',
        ',')
    ''' 分页查询项目信息 '''

    def query_page(self,
                   name='',
                   productUserRealName='',
                   devUserRealName='',
                   status=0,
                   page=1,
                   size=12):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != status:
            sql = sql + ' and status = %s '
            ps.append(status)
        if '' != name:
            sql = sql + ' and name like %s '
            ps.append('%' + name + '%')
        if '' != productUserRealName:
            sql = sql + ' and productUserRealName like %s '
            ps.append('%' + productUserRealName + '%')
        if '' != devUserRealName:
            sql = sql + ' and devUserRealName like %s '
            ps.append('%' + devUserRealName + '%')
        sql = sql + ' order by createTime desc '
        yz = tuple(ps)
        projects = mysql.find_page(sql, yz, self._query_col, page, size)

        if None != projects['data']:
            for r in projects['data']:
                r['statusname'] = state.ProjectStatus.get(r['status'])
        return projects

    ''' 根据id查询项目信息 '''

    def query_one(self, id=0):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != id:
            sql = sql + ' and id = %s '
            ps.append(id)
        else:
            return None
        yz = tuple(ps)
        project = mysql.find_one(sql, yz, self._query_col)
        if None != project:
            project['statusname'] = state.ProjectStatus.get(project['status'])
        return project

    ''' 根据名称查询项目信息 '''

    def query_one_by_name(self, name=''):
        sql = self._query_sql
        isdelete = state.Boole['false']
        sql = sql + ' and name = %s '
        yz = (isdelete, name)
        project = mysql.find_one(sql, yz, self._query_col)
        if None != project:
            project['statusname'] = state.ProjectStatus.get(project['status'])
        return project

    _query_all_by_active_sql = '''  SELECT id, name FROM pm_project WHERE isDelete = %s  '''
    _query_all_by_active_col = str_helper.format_str_to_list_filter_empty(
        'id, name', ',')
    ''' 查询所有可用项目 '''

    def query_all_by_active(self):
        sql = self._query_all_by_active_sql
        isdelete = state.Boole['false']
        sql = sql + ' and status != %s order by createTime desc '
        yz = (isdelete, state.projectStatusActive)
        products = mysql.find_all(sql, yz, self._query_all_by_active_col)
        return products

    _add_sql = '''   INSERT INTO pm_project(name, teamPath, productUserName, productUserRealName, 
                        devUserName, devUserRealName, startDate, endDate, `status`, remark, isDelete, 
                        creater, createTime, lastUpdater, lastUpdateTime)  
                        VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now())  '''
    ''' 添加项目 '''

    def add(self,
            name,
            teamPath,
            productUserName,
            productUserRealName,
            devUserName,
            devUserRealName,
            startDate,
            endDate,
            status,
            remark,
            user,
            productIDs=[],
            users=[]):
        obj = self.query_one_by_name(name=name)
        if None != obj:
            raise error.ProjectError(code=111002)

        isdelete = state.Boole['false']
        yz = (name, teamPath, productUserName, productUserRealName,
              devUserName, devUserRealName, startDate, endDate, status, remark,
              isdelete, user, user)
        result = mysql.insert_or_update_or_delete(self._add_sql,
                                                  yz,
                                                  isbackinsertid=True)
        if result > 0:
            self._bind_project_product(result, productIDs, user)
            self._bind_project_user(projectID=result, users=users, user=user)
        return result

    _update_sql = '''   UPDATE pm_project SET name = %s, teamPath = %s, 
                            productUserName = %s, productUserRealName = %s, 
                            devUserName = %s, devUserRealName = %s, startDate = %s, endDate = %s,
                            status = %s, remark = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where id = %s '''
    ''' 更新项目 '''

    def update(self,
               id,
               name,
               teamPath,
               productUserName,
               productUserRealName,
               devUserName,
               devUserRealName,
               startDate,
               endDate,
               status,
               remark,
               user,
               productIDs=[],
               users=[]):
        obj = self.query_one_by_name(name=name)
        if None != obj and str(obj['id']) != str(id):
            raise error.ProjectError(code=111002)

        yz = (name, teamPath, productUserName, productUserRealName,
              devUserName, devUserRealName, startDate, endDate, status, remark,
              user, id)
        result = mysql.insert_or_update_or_delete(self._update_sql, yz)
        self._bind_project_product(id, productIDs, user)
        self._bind_project_user(projectID=id, users=users, user=user)
        return 0 == result

    _delete_sql = '''   UPDATE pm_project SET isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where id = %s  '''
    ''' 删除项目 '''

    def delete(self, id, user):
        isdelete = state.Boole['true']
        yz = (isdelete, user, id)
        result = mysql.insert_or_update_or_delete(self._delete_sql, yz)
        return 0 == result

    _add_bind_project_product_sql = '''  INSERT INTO pm_product_project(productID, projectID, 
                            remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime)  
                            VALUES(%s, %s, %s, %s, %s, now(), %s , now()) '''
    _del_bind_project_product_sql = '''  UPDATE pm_product_project SET isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() WHERE projectID = %s AND isDelete = %s  '''
    ''' 绑定项目与产品 '''

    def _bind_project_product(self, projectID, productIDs, user):
        isdeletefalse = state.Boole['false']
        isdeletetrue = state.Boole['true']
        yz = (isdeletetrue, user, projectID, isdeletefalse)
        result = mysql.insert_or_update_or_delete(
            self._del_bind_project_product_sql, yz)
        for productID in productIDs:
            yz = (productID, projectID, '', isdeletefalse, user, user)
            result = mysql.insert_or_update_or_delete(
                self._add_bind_project_product_sql, yz)
        return 0 == result

    _add_bind_project_user_sql = '''  INSERT INTO pm_project_user(projectID, userName, 
                            userRealName, type, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime)  
                            VALUES(%s, %s, %s, %s, %s, %s, %s, now(), %s , now()) '''
    _del_bind_project_user_sql = '''  UPDATE pm_project_user SET isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() WHERE projectID = %s AND isDelete = %s  '''
    ''' 绑定项目与人员 '''

    def _bind_project_user(self, projectID, users, user):
        isdeletefalse = state.Boole['false']
        isdeletetrue = state.Boole['true']
        yz = (isdeletetrue, user, projectID, isdeletefalse)
        result = mysql.insert_or_update_or_delete(
            self._del_bind_project_user_sql, yz)
        for u in users:
            yz = (projectID, u['userName'], u['userRealName'], u['type'], '',
                  isdeletefalse, user, user)
            result = mysql.insert_or_update_or_delete(
                self._add_bind_project_user_sql, yz)
        return 0 == result

    _query_user_by_projectID_sql = ''' select id, projectID, userName, userRealName, type, remark from pm_project_user 
                            where projectID = %s and isDelete = %s order by type asc '''
    _query_user_by_projectID_col = str_helper.format_str_to_list_filter_empty(
        'id, projectID, userName, userRealName, type, remark', ',')
    ''' 查询项目开发者 '''

    def query_user_by_project(self, projectID):
        isdelete = state.Boole['false']
        yz = (projectID, isdelete)
        users = mysql.find_all(self._query_user_by_projectID_sql, yz,
                               self._query_user_by_projectID_col)
        return users

    _query_user_by_projectID_sql = ''' select id, projectID, userName, userRealName, type, remark from pm_project_user 
                            where projectID = %s and isDelete = %s order by type asc '''
    _query_user_by_projectID_col = str_helper.format_str_to_list_filter_empty(
        'id, projectID, userName, userRealName, type, remark', ',')
    ''' 查询项目开发者_去重 '''

    def query_user_by_project_distinct(self, projectID):
        users = []
        us = self.query_user_by_project(projectID=projectID)
        if None == us or len(us) <= 0:
            return users
        for u in us:
            b = True
            for user in users:
                if u['userName'] == user['userName']:
                    b = False
                    break
            if b == True:
                users.append(u)
        return users
class ProductLogic():
    def __init__(self):
        return

    _instance = None

    @classmethod
    def instance(cls):
        if cls._instance == None:
            cls._instance = cls()
        return cls._instance

    _query_sql = '''  select id, name, userName, userRealName, `status`, remark, isDelete, 
                    creater, createTime, lastUpdater, lastUpdateTime  from  pm_product   where  isDelete = %s   '''
    _query_col = str_helper.format_str_to_list_filter_empty(
        'id, name, userName, userRealName, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime',
        ',')
    ''' 分页查询产品信息 '''

    def query_page(self, name='', userRealName='', status=0, page=1, size=12):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != status:
            sql = sql + ' and status = %s '
            ps.append(status)
        if '' != name:
            sql = sql + ' and name like %s '
            ps.append('%' + name + '%')
        if '' != userRealName:
            sql = sql + ' and userRealName like %s '
            ps.append('%' + userRealName + '%')
        sql = sql + ' order by createTime asc '
        yz = tuple(ps)
        products = mysql.find_page(sql, yz, self._query_col, page, size)
        if None != products['data']:
            for r in products['data']:
                r['statusname'] = state.Status.get(r['status'])
        return products

    ''' 根据id查询产品信息 '''

    def query_one(self, id=0):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != id:
            sql = sql + ' and id = %s '
            ps.append(id)
        else:
            return None
        yz = tuple(ps)
        product = mysql.find_one(sql, yz, self._query_col)
        if None != product:
            product['statusname'] = state.Status.get(product['status'])
        return product

    ''' 根据名称查询产品信息 '''

    def query_one_by_name(self, name=''):
        sql = self._query_sql
        isdelete = state.Boole['false']
        sql = sql + ' and name = %s '
        yz = (isdelete, name)
        product = mysql.find_one(sql, yz, self._query_col)
        if None != product:
            product['statusname'] = state.Status.get(product['status'])
        return product

    _query_all_by_active_sql = '''  select id, name from pm_product  where isDelete = %s   '''
    _query_all_by_active_col = str_helper.format_str_to_list_filter_empty(
        'id, name', ',')
    ''' 查询所有可用的产品信息 '''

    def query_all_by_active(self):
        sql = self._query_all_by_active_sql
        isdelete = state.Boole['false']
        sql = sql + ' and status = %s order by createTime asc '
        yz = (isdelete, state.statusActive)
        products = mysql.find_all(sql, yz, self._query_all_by_active_col)
        return products

    _query_all_by_project_sql = ''' select p.id, p.name from pm_product_project as pp 
                                        LEFT JOIN pm_product as p ON p.id = pp.productID
                                        WHERE pp.projectID = %s and pp.isDelete = %s order by pp.createTime asc'''
    _query_all_by_project_col = str_helper.format_str_to_list_filter_empty(
        'id, name', ',')
    ''' 根据项目ID查询产品信息 '''

    def query_all_by_project(self, projectID):
        sql = self._query_all_by_project_sql
        isdelete = state.Boole['false']
        yz = (projectID, isdelete)
        products = mysql.find_all(sql, yz, self._query_all_by_project_col)
        return products

    ''' 根据IDs查询产品信息 '''

    def query_by_ids(self, ids=[]):
        sql = self._query_all_by_active_sql
        isdelete = state.Boole['false']
        idss = ''
        for i in ids:
            if idss == '':
                idss = i
            else:
                idss = idss + ',' + i
        if idss == '':
            return []
        sql = sql + ' and id in (' + idss + ') order by createTime asc '
        yz = (isdelete)
        products = mysql.find_all(sql, yz, self._query_all_by_active_col)
        return products

    _add_sql = '''   INSERT INTO pm_product(name, userName, userRealName, `status`, remark, isDelete, 
                    creater, createTime, lastUpdater, lastUpdateTime)  
                        VALUES(%s, %s, %s, %s, %s, %s, %s, now(), %s, now())  '''
    ''' 添加产品 '''

    def add(self, name, userName, userRealName, status, remark, user):
        obj = self.query_one_by_name(name=name)
        if None != obj:
            raise error.ProjectError(code=110002)

        isdelete = state.Boole['false']
        yz = (name, userName, userRealName, status, remark, isdelete, user,
              user)
        result = mysql.insert_or_update_or_delete(self._add_sql, yz, True)
        return result

    _update_sql = '''   update pm_product set name = %s, userName = %s, 
                            userRealName = %s, status = %s, remark = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where id = %s '''
    ''' 更新产品信息 '''

    def update(self, id, name, userName, userRealName, status, remark, user):
        obj = self.query_one_by_name(name=name)
        if None != obj and str(obj['id']) != str(id):
            raise error.ProjectError(code=110002)

        yz = (name, userName, userRealName, status, remark, user, id)
        result = mysql.insert_or_update_or_delete(self._update_sql, yz)
        return 0 == result

    _delete_sql = '''   update pm_product set isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where id = %s  '''
    ''' 删除产品信息 '''

    def delete(self, id, user):
        isdelete = state.Boole['true']
        yz = (isdelete, user, id)
        result = mysql.insert_or_update_or_delete(self._delete_sql, yz)
        return 0 == result
Beispiel #12
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error

_query_sql = '''  select id, name, status, remark, isDelete, creater, createTime, 
                    lastUpdater, lastUpdateTime from sso_role where isDelete = %s  '''
_query_col = str_helper.format_str_to_list_filter_empty(
    'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime',
    ',')
''' 分页查询角色信息 '''


def query_page(id='', name='', status=0, page=1, size=12):
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if '' != id:
        sql = sql + ' and id = %s '
        ps.append(id)
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%' + name + '%')
    yz = tuple(ps)
    sql = sql + ' order by id desc '
    roles = mysql.find_page(sql, yz, _query_col, page, size)
    if None != roles['data']:
        for r in roles['data']:
Beispiel #13
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error


_query_sql = '''  select  id, `name`, `status`, remark, isDelete, 
                    creater, createTime, lastUpdater, lastUpdateTime  
                    from  sso_department   where  isDelete = %s   '''
_query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',')
''' 分页查询部门信息 '''
def query_page(name = '', status = 0, page = 1 , size = 12):        
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%'+name+'%')

    sql = sql + ' order by createTime asc '
    yz = tuple(ps)
    deps = mysql.find_page(sql, yz, _query_col, page, size)
    if None != deps['data']:
        for r in deps['data']:
            r['statusname'] = state.Status.get(r['status'])
    return deps

''' 根据编号查询部门信息 '''
Beispiel #14
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error


_query_all_by_app_sql = '''  select id, name, code, parentID, path, rights, 
                    sort, customJson from sso_func  where  isDelete = %s   '''    
_query_all_by_app_col = str_helper.format_str_to_list_filter_empty('id, name, code, parentID, path, rights, sort, customJson', ',')
''' 根据appcode查询应用的功能信息 '''
def query_all_by_app(appCode):
    sql = _query_all_by_app_sql
    isdelete = state.Boole['false']
    sql = sql + ' and appCode = %s  order by sort desc'  
    yz = (isdelete, appCode)
    funcs = mysql.find_all(sql, yz, _query_all_by_app_col)
    if funcs == None:
        return []
    return _func_tree(funcs)


_query_sql = '''  select id, appCode, name, code, parentID, path, rights, customJson, 
                    sort, status, remark, isDelete, creater, createTime, 
                    lastUpdater, lastUpdateTime from sso_func  where  isDelete = %s   '''    
_query_col = str_helper.format_str_to_list_filter_empty('id, appCode, name, code, parentID, path, rights, customJson, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',')
''' 根据path获取功能信息 '''
def query_one_by_path( path):
    sql = _query_sql
    isdelete = state.Boole['false']
    sql = sql + ' and path = %s '        
    yz = (isdelete, path)
Beispiel #15
0
            pw3 = True
        else:
            pw4 = True

    if (pw1 == True or pw2 == True) and pw3 == True:
        return 0
    else:
        return 103012





_login_sql = '''select a.user_key, a.user_name, a.cust_key, a.dept_key, a.region_key, a.user_tel, a.user_loginCount,b.cust_title,\
    b.cust_name from wqt_user a inner join wqt_cust b on a.user_id = %s and a.user_password = %s and a.cust_key = b.cust_key'''
_login_col = str_helper.format_str_to_list_filter_empty('user_key, user_name, cust_key, dept_key, region_key, user_tel, \
    user_loginCount,cust_title,cust_name', ',')
''' 用户登录 '''


def login(user_id, user_password):
    user_password = _format_user_password_md5(user_password)
    # user = str_helper.utf8(mysql.find_one(_login_sql,(name, password),_login_col))
    user = mysql.find_one(_login_sql,(user_id, user_password), _login_col)
    print(user)
    if None == user:
        return None
    return user

''' 登录应用,获得登录的url '''
# def get_goto_user_url( userID, appCode, ip, backUrl = ''):
#     '''
class TaskHistoryLogic():
    def __init__(self):
        return

    _instance = None

    @classmethod
    def instance(cls):
        if cls._instance == None:
            cls._instance = cls()
        return cls._instance

    _query_sql = '''  SELECT t.id, t.name, t.projectID, t.userName, t.userRealName, 
                            t.startDate, t.endDate, t.users, t.preID, t.parentID, t.sort, t.`status`, 
                            t.remark, t.isDelete, t.creater, t.createTime, t.lastUpdater, 
                            t.lastUpdateTime , ta.name AS preName
                    FROM pm_task AS t 
                    LEFT JOIN pm_task as ta ON ta.id = t.preID 
                    WHERE isDelete = %s   '''
    _query_col = str_helper.format_str_to_list_filter_empty(
        'id, name, projectID, userName, userRealName, startDate, endDate, users, preID, parentID, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime, preName',
        ',')

    def query_page(self, projectID):
        sql = self._query_sql
        isdelete = state.Boole['false']
        sql = sql + ' AND projectID = %s order by sort asc '
        tasks = mysql.find_all(sql, yz, self._query_col)
        yz = (isdelete, projectID)
        tasks = self._format_project_tasks(tasks)
        return tasks

    def query_one(self, id=0):
        sql = self._query_sql
        ps = [isdelete]
        isdelete = state.Boole['false']
        if 0 != id:
            sql = sql + ' and id = %s '
            ps.append(id)
        else:
            return None
        yz = tuple(ps)
        task = mysql.find_one(sql, yz, self._query_col)
        task = self._format_task_status(task)
        return task

    _add_sql = '''   INSERT INTO pm_task(name, projectID, userName, 
                        userRealName, startDate, endDate, users, `preID`, parentID, sort, 
                        status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime)  
                        VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now())  '''

    def add(self, name, projectID, userName, userRealName, startDate, endDate,
            users, preID, parentID, sort, status, remark, user):
        isdelete = state.Boole['false']
        yz = (name, projectID, userName, userRealName, startDate, endDate,
              users, preID, parentID, sort, status, remark, isdelete, user,
              user)
        result = mysql.insert_or_update_or_delete(self._add_sql,
                                                  yz,
                                                  isbackinsertid=True)
        return result

    _update_sql = '''   UPDATE pm_task SET name = %s, userName = %s, 
                            userRealName = %s, users = %s, status = %s, 
                            remark = %s, lastUpdater = %s, 
                            lastUpdateTime = now() WHERE id = %s '''

    def update(self, id, name, userName, userRealName, users, status, remark,
               user):
        yz = (name, userName, userRealName, users, status, remark, user, id)
        result = mysql.insert_or_update_or_delete(self._update_sql, yz)
        return 0 == result

    _update_taskid_sql = '''   UPDATE pm_task_history SET taskID = %s WHERE taskID = %s '''

    def update_taskid(self, newTaskID, oldTaskID, user):
        yz = (newTaskID, oldTaskID)
        result = mysql.insert_or_update_or_delete(self._update_taskid_sql, yz)
        return 0 == result

    _delete_sql = '''   UPDATE pm_task SET isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where projectID = %s AND isDelete = %s  '''

    def delete_by_projectID(self, projectID, user):
        isdelete = state.Boole['true']
        isdeletefalse = state.Boole['false']
        yz = (isdelete, user, projectID, isdeletefalse)
        result = mysql.insert_or_update_or_delete(self._delete_sql, yz)
        return 0 == result
Beispiel #17
0
#-*- encoding: utf-8 -*-

from helper import str_helper
from common import mysql, state, error


_query_sql = '''  select id, name, status, remark, isDelete, creater, createTime, 
                    lastUpdater, lastUpdateTime from sso_role where isDelete = %s  '''
_query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',')
''' 分页查询角色信息 '''
def query_page( id = '', name = '', status = 0, page = 1, size = 12):
    sql = _query_sql
    isdelete = state.Boole['false']
    ps = [isdelete]
    if '' != id:
        sql = sql + ' and id = %s '
        ps.append(id)
    if 0 != status:
        sql = sql + ' and status = %s '
        ps.append(status)
    if '' != name:
        sql = sql + ' and name like %s '
        ps.append('%'+name+'%')
    yz = tuple(ps)
    sql = sql + ' order by id desc '
    roles = mysql.find_page(sql, yz, _query_col, page, size)
    if None != roles['data']:
        for r in roles['data']:
            r['statusname'] = state.Status.get(r['status'])
    return roles
Beispiel #18
0
class TaskLogic():
    def __init__(self):
        return

    _instance = None

    @classmethod
    def instance(cls):
        if cls._instance == None:
            cls._instance = cls()
        return cls._instance

    _query_sql = '''  SELECT t.id, t.name, t.type, t.projectID, t.userName, t.userRealName, t.date,
                            t.startDate, t.endDate, t.users, t.preID, t.parentID, t.sort, t.`status`, t.degree,
                            t.remark, t.isDelete, t.creater, t.createTime, t.lastUpdater, 
                            t.lastUpdateTime , ta.name AS preName, p.name AS projectName
                    FROM pm_task AS t 
                    LEFT JOIN pm_task as ta ON ta.id = t.preID 
                    LEFT JOIN pm_project as p ON p.id = t.projectID 
                    WHERE t.isDelete = %s   '''
    _query_col = str_helper.format_str_to_list_filter_empty(
        'id, name, type, projectID, userName, userRealName, date, startDate, endDate, users, preID, parentID, sort, status, degree, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime, preName, projectName',
        ',')

    def query_by_projectID(self, projectID):
        sql = self._query_sql
        isdelete = state.Boole['false']
        sql = sql + ' AND t.projectID = %s AND t.type = %s order by sort asc '
        yz = (isdelete, projectID, state.TaskProjectPlanType)
        tasks = mysql.find_all(sql, yz, self._query_col)

        if tasks != None or len(tasks) > 0:
            for task in tasks:
                task = self._format_task_status_type(task)
        return tasks

    ''' 分页查询任务 '''

    def query_by_type_userName_status_begin_end(self,
                                                type,
                                                userName,
                                                status,
                                                startDate,
                                                endDate,
                                                page=1,
                                                size=12):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != type:
            sql = sql + ' and t.type = %s '
            ps.append(type)
        if not str_helper.is_null_or_empty(userName):
            sql = sql + ' and  t.userName = %s '
            ps.append(userName)
        if 0 != status:
            sql = sql + ' and t.`status` = %s '
            ps.append(status)
        if not str_helper.is_null_or_empty(startDate):
            sql = sql + ' and t.startDate >= %s '
            ps.append(startDate)
        if not str_helper.is_null_or_empty(endDate):
            sql = sql + ' and t.startDate <= %s '
            ps.append(endDate)
        sql = sql + ' order by t.startDate asc '
        yz = tuple(ps)
        tasks = mysql.find_page(sql, yz, self._query_col, page, size)
        if None != tasks['data']:
            for r in tasks['data']:
                r = self._format_task_status_type(r)
        return tasks

    def query_one(self, id=0):
        sql = self._query_sql
        isdelete = state.Boole['false']
        ps = [isdelete]
        if 0 != id:
            sql = sql + ' and t.id = %s '
            ps.append(id)
        else:
            return None
        yz = tuple(ps)
        task = mysql.find_one(sql, yz, self._query_col)
        task = self._format_task_status_type(task)
        return task

    def save_tasks(self, projectID, tasks, user):
        '''  保存任务信息(还没有事务)
            1、isdelete原有的任务信息
            2、插入新的任务信息,并获取ID
            3、如果有老的ID,原来的关系替换成新的ID
            4、设置preid、parentID
        '''
        code = self._check_tasks_info(tasks)
        if code != 0:
            raise error.ProjectError(code=code)
        #删除老任务
        result = self.delete_by_projectID(projectID=projectID, user=user)
        if not result:
            raise error.ProjectError(code=112005)

        #插入新任务
        sortMap = {0: 0}
        for task in tasks:
            s = self.get_task_status(degree=task['degree'])
            taskid = self.add(name=task['name'],
                              type=task['type'],
                              projectID=projectID,
                              userName=task['userName'],
                              userRealName=task['userRealName'],
                              date=task['date'],
                              startDate=task['startDate'],
                              endDate=task['endDate'],
                              users=task['users'],
                              preID=0,
                              parentID=0,
                              sort=task['sort'],
                              status=s,
                              degree=task['degree'],
                              remark='',
                              user=user)
            task['id'] = taskid
            sortMap[task['sort']] = taskid
            if task.get('taskID', 0) > 0:
                #如果有老ID,替换成新ID
                task_history_logic.TaskHistoryLogic.instance().update_taskid(
                    newTaskID=taskid, oldTaskID=task['taskID'], user=user)

        #检索,如果有preid和parentid的进行设置
        for task in tasks:
            if task['parentID'] > 0 or task['preID'] > 0:
                parentID = sortMap.get(task['parentID'], 0)
                preID = sortMap.get(task['preID'], 0)
                self.update_parentID_preID(id=task['id'],
                                           parentID=parentID,
                                           preID=preID,
                                           user=user)

        return True

    _add_sql = '''   INSERT INTO pm_task(name, type, projectID, userName, 
                        userRealName, date, startDate, endDate, users, `preID`, parentID, sort, 
                        status, degree, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime)  
                        VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now())  '''

    def add(self, name, type, projectID, userName, userRealName, date,
            startDate, endDate, users, preID, parentID, sort, status, degree,
            remark, user):
        isdelete = state.Boole['false']
        yz = (name, type, projectID, userName, userRealName, date, startDate,
              endDate, users, preID, parentID, sort, status, degree, remark,
              isdelete, user, user)
        result = mysql.insert_or_update_or_delete(self._add_sql,
                                                  yz,
                                                  isbackinsertid=True)
        return result

    _update_parentID_preID_sql = '''   UPDATE pm_task SET parentID = %s, preID = %s, 
                            lastUpdater = %s, lastUpdateTime = now() WHERE id = %s '''

    def update_parentID_preID(self, id, parentID, preID, user):
        yz = (parentID, preID, user, id)
        result = mysql.insert_or_update_or_delete(
            self._update_parentID_preID_sql, yz)
        return 0 == result

    _update_sql = '''   UPDATE pm_task SET name = %s, userName = %s, 
                            userRealName = %s, `date` = %s, startDate = %s, endDate = %s,
                             users = %s, status = %s, degree = %s,
                            remark = %s, lastUpdater = %s, 
                            lastUpdateTime = now() WHERE id = %s '''

    def update(self, id, name, userName, userRealName, date, startDate,
               endDate, users, degree, remark, user):
        s = self.get_task_status(degree=degree)
        yz = (name, userName, userRealName, date, startDate, endDate, users, s,
              degree, remark, user, id)
        result = mysql.insert_or_update_or_delete(self._update_sql, yz)
        return 0 == result

    update_degree_remark_sql = '''   UPDATE pm_task SET status = %s, degree = %s, users = %s, 
                            remark = %s, lastUpdater = %s, 
                            lastUpdateTime = now() WHERE id = %s '''

    def update_degree_remark(self, id, degree, users, remark, user):
        s = self.get_task_status(degree=degree)
        yz = (s, degree, users, remark, user, id)
        result = mysql.insert_or_update_or_delete(
            self.update_degree_remark_sql, yz)
        return 0 == result

    _delete_sql = '''   UPDATE pm_task SET isDelete = %s, lastUpdater = %s, 
                            lastUpdateTime = now() where projectID = %s AND isDelete = %s  '''

    def delete_by_projectID(self, projectID, user):
        isdelete = state.Boole['true']
        isdeletefalse = state.Boole['false']
        yz = (isdelete, user, projectID, isdeletefalse)
        result = mysql.insert_or_update_or_delete(self._delete_sql, yz)
        return 0 == result

    def get_task_status(self, degree):
        if 0 < degree and 100 > degree:
            return state.TaskRunningStatus
        elif 100 == degree:
            return state.TaskRunedStatus
        else:
            return state.TaskNoRunStatus

    def _format_task_status_type(self, task):
        if None == task:
            return None
        for s in state.TaskStatus:
            if s['id'] == task['status']:
                task['statusname'] = s['name']
                break

        for t in state.TaskTypes:
            if t['id'] == task['type']:
                task['typename'] = t['name']
                break
        return task

    def _check_tasks_info(self, tasks):
        if None == tasks or type(tasks) != list:
            return 112001

        for task in tasks:
            if str_helper.is_null_or_empty(task.get(
                    'userName', '')) or str_helper.is_null_or_empty(
                        task.get('userRealName', '')):
                return 112002
            if str_helper.is_null_or_empty(task.get(
                    'startDate', '')) or str_helper.is_null_or_empty(
                        task.get('endDate', '')):
                return 112003
            if str_helper.is_null_or_empty(task.get('name', '')):
                return 112004
            if task.get('degree', 0) < 0 or task.get('degree', 0) > 100:
                return 112008

        return 0