Example #1
0
class SuperdeskSentry:
    """Sentry proxy that will do nothing in case sentry is not configured."""
    def __init__(self, app):
        if app.config.get(SENTRY_DSN):
            if "verify_ssl" not in app.config[SENTRY_DSN]:
                app.config[SENTRY_DSN] += "?verify_ssl=0"
            app.config.setdefault("SENTRY_NAME",
                                  app.config.get("SERVER_DOMAIN"))
            self.sentry = Sentry(app,
                                 register_signal=False,
                                 wrap_wsgi=False,
                                 logging=True,
                                 level=logging.WARNING)
            register_logger_signal(self.sentry.client)
            register_signal(self.sentry.client)
        else:
            self.sentry = None

    def captureException(self, exc_info=None, **kwargs):
        if self.sentry:
            self.sentry.captureException(exc_info, **kwargs)

    def captureMessage(self, message, **kwargs):
        if self.sentry:
            self.sentry.captureMessage(message, **kwargs)
Example #2
0
class SuperdeskSentry():
    """Sentry proxy that will do nothing in case sentry is not configured."""

    def __init__(self, app):
        if app.config.get('SENTRY_DSN'):
            self.sentry = Sentry(app, register_signal=False, wrap_wsgi=False)
        else:
            self.sentry = None

    def captureException(self, exc_info=None, **kwargs):
        if self.sentry:
            self.sentry.captureException(exc_info, **kwargs)

    def captureMessage(self, message, **kwargs):
        if self.sentry:
            self.sentry.captureMessage(message, **kwargs)
Example #3
0
class SuperdeskSentry():
    """Sentry proxy that will do nothing in case sentry is not configured."""

    def __init__(self, app):
        if app.config.get('SENTRY_DSN'):
            app.config.setdefault('SENTRY_NAME', app.config.get('SERVER_NAME'))
            self.sentry = Sentry(app, register_signal=False, wrap_wsgi=False)
        else:
            self.sentry = None

    def captureException(self, exc_info=None, **kwargs):
        if self.sentry:
            self.sentry.captureException(exc_info, **kwargs)

    def captureMessage(self, message, **kwargs):
        if self.sentry:
            self.sentry.captureMessage(message, **kwargs)
Example #4
0
def to_callback(site, account, companyName, callback_ip=''):
    '''进行回调'''
    sentry = Sentry(
        app,
        dsn=
        'https://*****:*****@192.168.20.244:9000//6'
    )

    # 进行回调 回调参数:db_name,collection,_id
    if not callback_ip:
        callback_host = ''
        callback_port = ''
    else:
        callback_host = callback_ip.split(':')[0]
        callback_port = callback_ip.split(':')[1]

    try:
        callBack(site,
                 account,
                 companyName,
                 callback_host=callback_host,
                 callback_port=callback_port)
    except Exception as e:
        sentry.captureException()
Example #5
0
]


# Read source data into memory
try:
    dams = read_dataframe("data/derived/dams.feather").set_index(["id"])
    dams_with_networks = dams.loc[dams.HasNetwork]

    barriers = read_dataframe("data/derived/small_barriers.feather").set_index(["id"])
    barriers_with_networks = barriers.loc[barriers.HasNetwork]

    print("Data loaded")

except:
    print("ERROR: not able to load data")
    sentry.captureException()


def validate_type(barrier_type):
    if not barrier_type in TYPES:
        abort(
            400,
            "type is not valid: {0}; must be one of {1}".format(
                barrier_type, ", ".join(TYPES)
            ),
        )


def validate_layer(layer):
    if not layer in LAYERS:
        abort(
Example #6
0
def taskExport_yunzhangfang_out(login_info, ztList, site, callback_ip):

    browser = pool.get_browser('chrome', 'yunzhangfang')
    sentry = Sentry(
        app,
        dsn=
        'https://*****:*****@192.168.20.244:9000//6'
    )
    # browser = DockerForBrowsers(conn_url=Config.YZF_CHROME_URL).connect_to_browser()

    # 取出数据
    account = login_info['account']
    to_sql = Save_to_sql(site, account, sentry)
    getInfo = yunzhangfang_GetInfo(browser, to_sql=to_sql, sentry=sentry)

    #登陆
    i = 1
    while True:
        msg = getInfo.login(login_info)
        if msg == '登陆成功':
            break
        elif msg == '账号和密码不匹配,请重新输入':
            return
        elif i > 4:
            return '错误次数过多,需人工介入'
        elif msg == '验证码错误,请重新输入':
            i += 1
            continue

    time.sleep(0.5)

    ztData = getInfo.getAllzt()
    new_ztlist = []
    for zt in ztData:
        new_ztlist.append(zt.get('qymc', '').strip())
    # 判断需要导出的账套是否存在
    for zz in ztList:
        if zz not in new_ztlist:
            # 创建zt
            zt = to_sql.init_zt(zz, status='账套不存在')

    for zt in ztData:
        currentKjnd = zt['currentKjnd']
        currentKjqj = zt['currentKjqj']
        qyid = zt['qyid']
        companyName = zt['qymc'].strip()

        #拼接url
        # getInfo.createUrl(currentKjnd,currentKjqj,qyid)

        if companyName not in ztList:  #判断是否在传递过来的账套里面
            continue

        if not to_sql.is_finished(companyName):  #判断是否已经导出成功,忽略
            #成功之后,直接回调
            to_callback(site, account, companyName, callback_ip=callback_ip)
            continue

        # 创建zt
        zt = to_sql.init_zt(companyName, status='start')
        zt_id = zt.id

        #获取所有期间
        Qjlist, ztdm = getInfo.dates(qyid, currentKjnd, companyName)
        time.sleep(0.5)

        #企业信息
        try:
            msg = getInfo.company_info(qyid, companyName, zt_id, '企业信息')
        except Exception as e:
            msg = '获取企业信息失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #会计科目
        try:
            msg = getInfo.kjkm(ztdm, qyid, companyName, currentKjnd,
                               currentKjqj, zt_id, '会计科目')
        except Exception as e:
            msg = '获取会计科目失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #凭证
        try:
            msg = getInfo.voucher(Qjlist, ztdm, zt_id, '凭证')
        except Exception as e:
            msg = '获取凭证失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)

        time.sleep(0.5)

        #币别列表
        Bilist = getInfo.bibie(ztdm)
        time.sleep(0.5)

        #科目余额
        try:
            msg = getInfo.kmye(Qjlist, ztdm, qyid, Bilist, zt_id, '科目余额')
        except Exception as e:
            msg = '获取科目余额失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #获取数量金额科目余额表
        try:
            getInfo.sljeye(Qjlist, ztdm, qyid, Bilist, zt_id, '数量金额科目余额表')
        except Exception as e:
            msg = '获取数量金额科目余额表失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)

        # 记录一个账套导出成功
        msg = '%s 导出完成' % companyName
        to_sql.update_zt_status(zt, msg)
        to_sql.update_zt_finised_time(zt)

        # 进行回调 回调参数:db_name,collection,_id
        to_callback(site, account, companyName, callback_ip=callback_ip)

    # 任务完成后,断开浏览器的连接
    pool.close_browser(browser)
Example #7
0
def taskExport_kungeek_out(login_info, ztList, site, callback_ip):
    print('++++kungeek_in+++++')
    # browser = DockerForBrowsers(conn_url=Config.KUNGEEK_CHROME_URL).connect_to_browser()
    browser = pool.get_browser('chrome', 'kungeek')
    sentry = Sentry(
        app,
        dsn=
        'https://*****:*****@192.168.20.244:9000//6'
    )

    # 取出数据
    account = login_info['account']
    to_sql = Save_to_sql(site, account)
    getInfo = kungeek_GetInfo(browser, to_sql=to_sql)

    #登陆
    i = 1
    while True:
        msg = getInfo.login(login_info)
        if msg == '登陆成功':
            break
        elif msg == '账号和密码不匹配,请重新输入':
            return
        elif msg == '账号已停用或合同未审核通过':
            return
        elif msg == '账号不存在或已停用':
            return
        elif i > 4:
            return '错误次数过多,需人工介入'
        elif msg == '验证码错误,请重新输入':
            i += 1
            continue

    time.sleep(0.5)

    ztData = getInfo.getAllzt()
    new_ztlist = []
    for zt in ztData:
        new_ztlist.append(zt.get('name', '').strip())
    # 判断需要导出的账套是否存在
    for zz in ztList:
        if zz not in new_ztlist:
            # 创建zt
            zt = to_sql.init_zt(zz, status='账套不存在')

    for z in ztData:
        ztId = z['ztId']
        khId = z['id']
        companyName = z['name'].strip()

        if companyName not in ztList:  #判断是否在传递过来的账套里面
            continue

        if not to_sql.is_finished(companyName):  #判断是否已经导出成功,忽略
            # 成功之后,直接回调
            to_callback(site, account, companyName, callback_ip=callback_ip)
            continue

        # 创建zt
        zt = to_sql.init_zt(companyName, status='start')
        zt_id = zt.id

        QjList = getInfo.switchZt(ztId, khId)

        #凭证
        print('+++++开始凭证++++')
        try:
            msg = getInfo.voucher(QjList, ztId, zt_id, '凭证')
        except Exception as e:
            msg = '获取凭证失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #科目余额表
        try:
            msg = getInfo.kmsheet(QjList, ztId, zt_id, '科目余额表')
            to_sql.update_zt_status(zt, msg)
        except Exception as e:
            msg = '获取科目余额表失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #会计科目
        try:
            msg = getInfo.kjkmsheet(ztId, zt_id, '会计科目')
            to_sql.update_zt_status(zt, msg)
        except Exception as e:
            msg = '获取会计科目失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #基础设置
        try:
            msg = getInfo.settings(ztId, zt_id, '基础设置')
        except Exception as e:
            msg = '获取基础设置失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        # 记录一个账套导出成功
        msg = '%s 导出完成' % companyName
        to_sql.update_zt_status(zt, msg)
        to_sql.update_zt_finised_time(zt)

        # 进行回调 回调参数:db_name,collection,_id
        to_callback(site, account, companyName, callback_ip=callback_ip)
        print(companyName)

    #任务完成后,断开浏览器的连接
    pool.close_browser(browser)
Example #8
0
def taskExport_datawisee_out(login_info, ztList, site, callback_ip):

    # browser = DockerForBrowsers(conn_url=Config.QMX_CHROME_URL).connect_to_browser()
    browser = pool.get_browser('chrome', 'datawisee')
    sentry = Sentry(
        app,
        dsn=
        'https://*****:*****@192.168.20.244:9000//6'
    )

    #取出数据
    account = login_info['account']
    to_sql = Save_to_sql(site, account)
    getInfo = yiqidai_GetInfo(browser, to_sql=to_sql)

    #登陆
    i = 1
    while True:
        msg = getInfo.login(login_info)
        if msg == '登陆成功':
            break
        elif msg == '账号和密码不匹配,请重新输入':
            return
        elif msg == '账号已停用或合同未审核通过':
            return
        elif msg == '账号不存在或已停用':
            return
        elif i > 4:
            return '错误次数过多,需人工介入'
        elif msg == '验证码错误,请重新输入':
            i += 1
            continue

    time.sleep(0.5)

    ztData = getInfo.getAllzt()
    new_ztlist = []
    for zt in ztData:
        new_ztlist.append(zt.get('customerFullName', '').strip())
    # 判断需要导出的账套是否存在
    for zz in ztList:
        if zz not in new_ztlist:
            # 创建zt
            zt = to_sql.init_zt(zz, status='账套不存在')

    for z in ztData:
        params = {
            'customerId': z['customerId'],
            'accountSetId': z['accountSetId'],
            'customerName': z['customerName'],
            'customerShortName': z['customerName']
        }
        accountSetId = z['accountSetId']
        customerId = z['customerId']
        companyName = z['customerFullName'].strip()

        if companyName not in ztList:  #判断是否在传递过来的账套里面
            continue

        if not to_sql.is_finished(companyName):  #判断是否已经导出成功,忽略
            # 成功之后,直接回调
            to_callback(site, account, companyName, callback_ip=callback_ip)
            continue

        #创建zt
        zt = to_sql.init_zt(companyName, status='start')
        zt_id = zt.id

        #切换公司
        QjList = getInfo.switchZt(params)
        #凭证
        try:
            msg = getInfo.voucher(QjList, zt_id, '凭证')
        except Exception as e:
            msg = '获取凭证失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        # 现金流量
        try:
            msg = getInfo.xjll(QjList, zt_id, '现金流量')
        except Exception as e:
            msg = '获取现金流量失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #科目余额表
        try:
            msg = getInfo.kmsheet(QjList, zt_id, '科目余额表')
        except Exception as e:
            msg = '获取科目余额表失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        #辅助核算余额表  注释说明:辅助核算余额表不用抓取,科目余额里可以解析出来
        # try:
        #     msg = getInfo.fzhssheet(QjList, zt_id)
        # except Exception as e:
        #     msg = '获取辅助核算余额失败:%s' % str(e)
        #     to_sql.update_zt_status(zt, msg)
        #     sentry.captureException()
        # else:
        #     to_sql.update_zt_status(zt, msg)
        # time.sleep(0.5)

        #基础设置
        try:
            msg = getInfo.settings(customerId, zt_id, accountSetId, QjList,
                                   '基础设置')
        except Exception as e:
            msg = '获取基础设置失败:%s' % str(e)
            to_sql.update_zt_status(zt, msg)
            sentry.captureException()
        else:
            to_sql.update_zt_status(zt, msg)
        time.sleep(0.5)

        # 记录一个账套导出成功
        msg = '%s 导出完成' % companyName
        to_sql.update_zt_status(zt, msg)
        to_sql.update_zt_finised_time(zt)

        # 进行回调 回调参数:db_name,collection,_id
        to_callback(site, account, companyName, callback_ip=callback_ip)
        print(companyName)

    #任务完成后,断开浏览器的连接
    pool.close_browser(browser)