Beispiel #1
0
    def updateHeader(self):
        global dailyAllowanceValue
        global totalExpensesValue
        global records
        global userEmail
        # totalExpensesValue = get_sum_of_day(currDate)[0]['total']

        # calculate sum of all records locally
        totalExpensesValue = sum([int(rec['amount']) for rec in records])
        balanceValue = dailyAllowanceValue - totalExpensesValue
        percentageUsed = int((totalExpensesValue / dailyAllowanceValue) * 100)

        self.incomeVal.setText(str(dailyAllowanceValue))
        self.expensesVal.setText(str(totalExpensesValue))
        self.balanceVal.setText(str(balanceValue))

        if (balanceValue > 0):
            self.progressBar.setValue(percentageUsed)
        else:
            send_mail(userEmail, totalExpensesValue)
            self.progressBar.setValue(100)
            self.progressBar.setTextVisible(False)
            # self.progressBar.setFormat(str(percentageUsed) + '%')
            self.progressBar.setAlignment(Qt.AlignCenter)
            self.progressBar.setStyleSheet(
                """QProgressBar::chunk { background: %s; }""" % '#ff4000')
Beispiel #2
0
def mean_squared_error(image1, image2):
	list_of_files = glob.glob('/home/pi/Desktop/camera/*.jpg')
	latest_file = max(list_of_files, key=os.path.getctime) # get latest file in our directory

	text = "Possible motion detected"
	subject = "Pi security camera alert"
	send_to = "test"
	send_from = "test"

	#Load images
	original = cv2.imread("control.jpg", 0) # control file of what the house looks like
	questionable = cv2.imread(latest_file, 0)
		
	image1 = image1.astype(float)
	image2 = image2.astype(float)
	error_rank = np.sum((image1 - image2) ** 2)
	error_rank /= float(image1.shape[0] * image1.shape[1])
	test = calculated(error_ranking)
	if test == True:
		send_mail(send_from, send_to, subject, text, latest_file)
	else: 
		time1 = time.strftime("%d/%m/%Y %H:%M:%S")
		re.sub('[^A-Za-z0-9]+', '', time1)
		f = open(error_rank+"-"time1+".txt", 'w+')
		f.close
Beispiel #3
0
def get_accounts():
    """
    RETURNS ALL SL ACCOUNTS (ACCOUNTS, KEYS AND DESCRIPTION)
    """
    # Get accounts to be procesed
    url = "https://dstnotes.lexington.ibm.com/DST/servers.nsf/CGI_SLAPIConfig?OpenAgent&login"
    request = urllib2.Request(url)
    base64string = base64.encodestring("%s:%s" % ("*****@*****.**", "sadb_uat")).replace("\n", "")
    request.add_header("Authorization", "Basic %s" % base64string)
    try:
        result = urllib2.urlopen(request)
    except Exception as e:
        send_mail("", "NOTES AGENT ERROR: Could not be possible to retrieve SL accounts and keys information")
        log.error("NOTES AGENT ERROR: Could not be possible to retrieve SL accounts and keys information")
        print "NOTES AGENT ERROR: Could not be possible to retrieve SL accounts and keys"
        sys.exit(234)
    sl_accounts = result.read().split("\n")
    # with open("accounts.txt", "r") as myfile:
    # data = myfile.read()
    # accounts = data.split('\n')
    account_data = []
    for sl_acc in sl_accounts:
        if not sl_acc:
            continue
        account_data.append(sl_acc.split("/"))
    return account_data
def register_user(**kwargs):
    kwargs.pop('password_confirm', None)
    user = User.create(**kwargs)

    signal_context = {'user': user}
    mail_context = {'user': user}

    if system_requires_confirmation():
        confirmation_token, confirmation_link = \
            generate_confirmation_token_and_link(user)
        signal_context['confirmation_token'] = confirmation_token
        mail_context['confirmation_link'] = confirmation_link

    user_registered.send(
        current_app._get_current_object(),
        **signal_context)

    send_mail(
        'Thank you for registering!',
        current_app.config['MAIL_DEFAULT_SENDER'],
        user.email,
        plain_template_path='users/emails/welcome.txt.html',
        html_template_path='users/emails/welcome.html',
        **mail_context)

    return user
Beispiel #5
0
def create_summary_html(total_count, total_pass, total_fail, pass_percentage,
                        today_date, project_name, json_data):
    fname = PATH + "/test_data/temp/summary_" + today_date + ".html"
    base_string = """
    <html>
    <head><title> """ + project_name + """ API Functionality Testing Report </title></head>
    <body>
    <table><tr><td>
    Project Name : """ + project_name + """</td></tr><tr><td>
    Exection Timestamp : """ + today_date.replace(
        "_", ":"
    ) + """</td></tr></table>
    <table style="border-collapse: collapse;border: 1px solid black;">
    <tr><th style="border-collapse: collapse;border: 1px solid black;"> Total # TCs </th><th style="border-collapse: collapse;border: 1px solid black;"> Total Pass </th><th style="border-collapse: collapse;border: 1px solid black;"> Total Failures </th><th style="border-collapse: collapse;border: 1px solid black;"> Passed % </th> </tr><tr>
    <td style="border-collapse: collapse;border: 1px solid black;">""" + str(
        total_count
    ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
        total_pass
    ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
        total_fail
    ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
        pass_percentage) + """</td>
    </table>
    </br>
    <hr>
    </br>
    Summary Report:
    </br>
    </br>
    <table style="border-collapse: collapse;border: 1px solid black;">
    <tr><th style="border-collapse: collapse;border: 1px solid black;">ID</th><th style="border-collapse: collapse;border: 1px solid black;">Summary</th><th style="border-collapse: collapse;border: 1px solid black;">API</th><th>Header Match Result</th><th style="border-collapse: collapse;border: 1px solid black;">Body Match Result</th><th style="border-collapse: collapse;border: 1px solid black;">Code Match Result</th><th style="border-collapse: collapse;border: 1px solid black;">Overall Result</th><th style="border-collapse: collapse;border: 1px solid black;">Reason of Failure</th></tr>
    """
    body_string = ""
    for test_case in json_data['data']:
        body_string = body_string + """
        <tr><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
            test_case['@id']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
            test_case['@n']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">
        """ + str(
            test_case['@api']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
            test_case['@hr']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">
        """ + str(
            test_case['@br']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
            test_case['@cr']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">
        """ + str(
            test_case['@o']
        ) + """</td><td style="border-collapse: collapse;border: 1px solid black;">""" + str(
            test_case['reason']) + """</td>
        """
    body_end_string = """
    </table>
    """
    final_string = base_string + body_string + body_end_string
    send_mail(final_string, project_name)
Beispiel #6
0
def get_sql():
    conn=pymssql.connect(host='119.29.98.161',database='emailremind',user='******',password='******')
    cur=conn.cursor()
    #now_time = judge_time()
    now_time = time.strftime('%Y/%m/%d %H:%M:00',time.localtime(time.time()))
    #print now_time
    #降序排序(升序ASC)
    cur.execute('select * FROM remind  WHERE time=%s and condition=%s' ,(now_time,"no"))
    row = cur.fetchone()
    if row != None:
        get_time = row[3].rstrip()[:-3]
        #如果提醒时间相等,开始提醒并发送邮件
        print '提醒时间 :'.decode('utf8')+ now_time
        title = '【'.decode('utf8')+row[0].rstrip()+'】'.decode('utf8') +row[1].rstrip()
        print '提醒标题 :'.decode('utf8')+ title
        content = row[2].rstrip()
        print '提醒内容 :'.decode('utf8') + content
        list = row[4]
        print '提醒邮箱 :'.decode('utf8') + list
        send_mail(list,title,content)
        cur.execute('EXEC alter_remind @title=%s,@time=%s,@email=%s',(row[1],row[3],row[4]))
        conn.commit() #提交修改
        print "-----------------------------------"

        #为了防止数据库中还剩余没有提醒过的活动,状态设为yes
        # if now_time > get_time:
        #     cur.execute('EXEC alter_remind @title=%s,@time=%s,@email=%s',(row[1],row[3],row[4]))
        #     conn.commit() #提交修改
        conn.close()
Beispiel #7
0
def report_formatter(bm_scanned, exec_time, scan_type):
    # Log file
    files = []
    curr_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    kvm_log_file = commands.getstatusoutput("ls -lat %s/logs | grep kvm | head -1 | awk \'{print $9}\'" % curr_dir)[1]
    kvm_log_file = "%s/logs/%s" % (curr_dir, kvm_log_file)
    csv_log_file = commands.getstatusoutput("ls -lat %s/logs | grep csv | head -1 | awk \'{print $9}\'" % curr_dir)[1]
    csv_log_file = "%s/logs/%s" % (curr_dir, csv_log_file)
    output_file = "%s/logs/output.log" % curr_dir
    f = open(kvm_log_file, "r")
    err_lines = []
    for line in f:
        if "SCRIPT STARTED" in line:
            script_started = line[line.find("SCRIPT STARTED"):].replace("\n", "")[15:]
        if "ERROR" in line:
            err_lines.append(line)
        if "Baremetals scanned" in line:
            bm_scanned = line[line.find("Baremetals scanned"):].replace("\n", "")[19:]
        if "END OF EXECUTION" in line:
            exec_time = line[line.find("END OF EXECUTION"):].replace("\n", "")[17:-4]
        if "total_guests" in line:
            total_guests = line[line.find("total_guests"):].replace("\n", "")[13:]
        if "total_accounts" in line:
            total_accounts = line[line.find("total_accounts"):].replace("\n", "")[15:]
    err_file = create_error_file(err_lines)
    files.append(csv_log_file)
    files.append(err_file)
    files.append(output_file)
    html = html_mail_generator(bm_scanned, script_started, exec_time, total_guests, total_accounts, scan_type)
    send_mail(files, html)
    os.system("rm %s" % err_file)
    f.close()
Beispiel #8
0
def filter_match_code(match_code, match_type):
    msg=""
    has_new_code=0
    f = my_filter(match_code)
    match_code, restrict_code, expect_loss_code = f.filter_code
    print ('') # to align the display
    if match_code:
        msg += '%s match code are : \n'%match_type
    for code in match_code:
        if code not in printed_code:
            has_new_code = 1
            msg += code+"\n"
            printed_code.append(code)
    if restrict_code:
        msg += 'restrict code are : \n'
    for code in restrict_code:
        if code not in printed_code:
            has_new_code = 1
            msg += code+"\n"
            printed_code.append(code)
    if expect_loss_code:
        msg += 'expect loss code are : \n'
    for code in expect_loss_code:
        if code not in printed_code:
            has_new_code = 1
            msg += code+"\n"
            printed_code.append(code)
    print(msg)
    if args.send_mail and has_new_code:
        send_mail(msg)
def check_named_conf_by_named_check():
    cmd = "named-checkconf %s" % named_config_path
    result = os.popen(cmd).read()
    if result != '':
        print(result)
        send_mail(
            u"%s::配置文件检查失败" % title,
            '<html><head></head><body>named-checkconf has faild:%s<br/>named will not restart and check script stopd</body></html>'
            % result)
        exit()
def fullContactEmailSend(sender, user, request, **kwargs):
	email = user.email

	data = fullContactCollect(email)
	if data['status']==200:
		messgae= data
		send_mail("Full Contact Data",
					data,
					'*****@*****.**',
					'*****@*****.**',
					fail_silently=False)
Beispiel #11
0
def modify_before_load(max_date_log, sql_script_name, increment_datatype,
                       default_date):

    try:
        if path.exists(max_date_log) == True:
            data_frame = read_csv(max_date_log, delimiter='|', quoting=1)
            max_value = data_frame.query(
                'fileName == @sql_script_name')['maxValueInLastLoad'].max()

            if (isnull(max_value) == True):
                if (increment_datatype == 'DATETIME'):
                    new_max_value = default_date
                    modify_log().info(
                        f"New max value {new_max_value} for incremental load for {sql_script_name} "
                    )
                else:
                    new_max_value = '0'
                    modify_log().info(
                        f"New max value {new_max_value} for incremental load for {sql_script_name} "
                    )
            else:
                new_max_value = max_value
                modify_log().info(
                    f"New max value {new_max_value} for incremental load for {sql_script_name} "
                )
        else:
            new_max_value = {
                True: '0',
                False: default_date
            }[increment_datatype == 'INT']
            data_frame = DataFrame({
                'fileName': [sql_script_name],
                'maxValueInLastLoad': new_max_value,
                'dataType': [increment_datatype]
            })
            data_frame.to_csv(max_date_log,
                              sep='|',
                              index=False,
                              quoting=1,
                              mode='w',
                              header=True)
            modify_log().info(
                f"new file creted with new entry for {sql_script_name}")

        return new_max_value

    except Exception as e:
        modify_log().exception(e)
        send_mail(to_address='*****@*****.**',
                  subject='ALERT: Marketing Cloud Data Feed - Execution Error',
                  email_message=traceback.format_exc())
Beispiel #12
0
def handle_uploaded_file(f):
    # media 不存在创建
    media_path = os.path.abspath(settings.MEDIA_ROOT)
    if not os.path.exists(media_path):
        os.makedirs()

    # 文件已存在则删除
    file_path = os.path.join(media_path, f.name)
    if os.path.exists(file_path):
        os.remove(file_path)
    destination = open(file_path, 'wb+')
    for chunk in f.chunks():
        destination.write(chunk)
    destination.close()
    # if is_mobi(file_path):
    send_mail(file_path)
Beispiel #13
0
def modify_after_load(max_date_log, csv_file_name, sql_script_name,
                      increment_datatype, increment_max_value):
    try:
        data_frame = csv_file_name
        df_configure_file = read_csv(
            max_date_log, delimiter='|')  #Read incremental_load_config file
        line_count = len(data_frame)

        if line_count > 0:
            max_value = increment_max_value

            if (
                (df_configure_file['fileName'] == sql_script_name).max()
            ) == True:  #if sql_script_name is present in config file then swap old max value with new max value
                index = df_configure_file.index
                df_configure_file.at[(index[df_configure_file["fileName"] ==
                                            sql_script_name].tolist()),
                                     'maxValueInLastLoad'] = max_value
                df_configure_file.to_csv(max_date_log,
                                         sep='|',
                                         index=False,
                                         quoting=1,
                                         mode='w',
                                         header=True)
            else:  #if sql_script_name is not present in config file add new entry
                new_line = {
                    'fileName': sql_script_name,
                    'maxValueInLastLoad': max_value,
                    'dataType': increment_datatype
                }
                new_df = df_configure_file.append(new_line,
                                                  ignore_index=True,
                                                  sort=False)
                new_df.to_csv(max_date_log,
                              sep='|',
                              index=False,
                              quoting=1,
                              mode='w',
                              header=True)

    except Exception as e:
        modify_log().exception(e)
        send_mail(to_address='*****@*****.**',
                  subject='ALERT: xxx Cloud Data Feed - Execution Error',
                  email_message=traceback.format_exc())
Beispiel #14
0
def forget_password():
    form = ForgetPasswordForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email = form.email.data).first()
        if user.nickname == form.nickname.data and user.ID_num == form.ID_num.data:
            if user.verify_password(form.password.data):
                flash('密码并未改变!')
                return redirect(url_for('auth.login'))
            user.password = form.password.data
            user.confirmed = False
            token = user.generate_confirmation_token()
            send_mail(user.email, '更改密码', 'auth/email/confirm', user=user, token=token)
            db.session.add(user)
            db.session.commit()
            flash('已重新向您的邮箱发送了确认邮件,请前往确认!')
            return redirect(url_for('auth.login'))
        flash ('邮箱,昵称及ID号不匹配!')
    return render_template('auth/forget_password.html', form=form)
def send_mail_to_contact_list(contact_list_file_path, subject,
                              message_template_path, attachments):
    ''' Send mail to all the contacts from the contact list file individually 
    with subject, message and attachments
    parameters:
    contact_list_file_path - the path of the contact list file, it can be a txt/xlsx/csv file
    subject - subject of the mail
    message_template_path - path of the message template file
    attachments - list of attachments to be attached
    '''
    contact_list = get_contact_list(contact_list_file_path)
    message_template = read_template(message_template_path)

    for name, email in contact_list:
        # add in the actual person name to the message template
        message = message_template.substitute(PERSON_NAME=name.title())
        send_mail(email, subject, message, attachments)
        print("message sent to : ", name)
Beispiel #16
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        user = User(nickname=form.nickname.data,
                    name=form.name.data,
                    gender=form.gender.data,
                    password=form.password.data,
                    ID_num=form.ID_num.data,
                    email=form.email.data,
                    state=True)
        db.session.add(user)
        db.session.commit()
        token = user.generate_confirmation_token()
        send_mail(user.email, '确认账户', 'auth/email/confirm', user=user, token=token)
        login_user(user, 1)
        next = request.args.get('next')
        if next is None or not next.startswith('/'):
            next = url_for('main.index')
        return redirect(next)
    return render_template('auth/register.html', form=form)    
Beispiel #17
0
 def monitor(self):
     while True:
         cur_time = time.time()
         err_msg = ''
         if cur_time - self.m_last_check > self.m_check_interval:
             log_info('monitor start checking.')
             check_beg_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.m_last_check))
             check_end_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(cur_time))
             '''do new file num check'''
             if self.m_min_file_num > 0:
                 for file_path in self.m_file_path_lst:
                     cnt = 0
                     file_lst = get_file_lst(self.m_file_pattern, file_path, False)
                     for file_item in file_lst:
                         if os.path.getmtime(file_item) > self.m_last_check:
                             cnt += 1
                     if cnt < self.m_min_file_num:
                         cur_err_msg = '[NewFileCheck] [FAILED] %s: new files num %d < %d\n\n' \
                             % (file_path, cnt, self.m_min_file_num)
                         if err_msg == '':
                             err_msg += 'From %s To %s:\n\n' % (check_beg_time, check_end_time)
                         err_msg += cur_err_msg
                         log_info(cur_err_msg)
                     else:
                         log_info('[NewFileCheck] [OK] new file num: %d' % cnt)
             if self.m_net_check_url.strip(' ') != '':
                 try:
                     urllib2.urlopen(self.m_net_check_url)
                     log_info('[NetCheck] [OK]')
                 except Exception, err:
                     cur_err_msg = '[NetCheck] [FAILED] %s\n\n' % err
                     if err_msg == '':
                         err_msg += 'From %s To %s:\n\n' % (check_beg_time, check_end_time)
                     err_msg += cur_err_msg
                     log_info(cur_err_msg)
             if err_msg != '':
                 send_mail(self.m_mail_tolist, self.m_monitor_name, err_msg, self.m_mail_server, \
                     self.m_mail_username, self.m_mail_password, self.m_mail_postfix, self.m_mail_fromname)
             self.m_last_check = cur_time
         if cur_time - self.m_last_check < self.m_check_interval:
             time.sleep(self.m_check_interval - (cur_time - self.m_last_check))
Beispiel #18
0
def change_password():
    if not current_user.is_authenticated:
        flash('您还未登录!')
        next = request.referrer
        if next is None or not next.startswith('/'):
            next = url_for('auth.login')
        return redirect(next)
    form = ChangePasswordForm()
    if form.validate_on_submit():
        current_user.password = form.password.data
        current_user.confirmed = False
        db.session.add(current_user)
        db.session.commit()
        token = user.generate_confirmation_token()
        send_mail(user.email, '确认密码', 'auth/email/confirm', user=user, token=token)
        login_user(user, 1)
        next = request.args.get('next')
        if next is None or not next.startswith('/'):
            next = url_for('main.index')
        return redirect(next)
    return render_template('auth/change_password.html', form=form)    
def send_confirmation_instructions(user):
    """Sends confirmation instructions email to the specified user

    :param user: User to send instructions to
    """

    confirmation_token, confirmation_link = \
        generate_confirmation_token_and_link(user)

    signal_context = {'user': user, 'confirmation_token': confirmation_token}
    mail_context = {'user': user, 'confirmation_link': confirmation_link}

    send_mail(
        'Please confirm your email address',
        current_app.config['MAIL_DEFAULT_SENDER'],
        user.email,
        plain_template_path='users/emails/confirmation_instructions.txt.html',
        html_template_path='users/emails/confirmation_instructions.html',
        **mail_context)

    confirmation_instructions_sent.send(
        current_app._get_current_object(),
        **signal_context)
Beispiel #20
0
def user_registration(conn):
    while True:
        print('user is asking for registration')
        user_reg_data = recieve(conn)
        user_reg_data=user_reg_data
        print(user_reg_data)
        #chcek if the user exist or not
        user=user_checker(user_reg_data['email'])
        print(user)
        if user==False:
            code=send_mail(user_reg_data['email'])
            send(conn,code)
            while True:
                email_verified = recieve(conn)
                if email_verified==True:
                    break
            create_user(user_reg_data)
            send(conn,'True')
            # send(conn,code)
            break
        else:
            send(conn,'False')
    print('going out of the registration')
Beispiel #21
0
def getWlist():
    f = open(WHITE_LIST, 'r')
    for lines in f:
        l = lines.rstrip()
        if l == '':
            continue
        tempip = IP(l)
        for x in tempip:
            wlist.append(x.strNormal())


if __name__ == '__main__':
    logs = []
    list = []
    mail_content = []
    getLogbuf(logs)
    if logs == []:
        exit()
    for l in logs:
        list.append(alert(l))
    save(list)
    if mail_content != []:
        send_mail(mail_to=[
            ADMIN_EMAIL,
        ],
                  mail_subject=SMTP_SUBJECT,
                  mail_content='\n'.join(mail_content))
    f = open(LOG_FILE, 'w')
    f.write('')
    f.close()
        tc += 1
    cr.close()

    book.close()

    title = u'{0:04d}{1:02d}{2:02d}慧聪负面新闻'.format(now.year, now.month, now.day)
    mail_send = [
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**'
    ]
    # mail_send = ['*****@*****.**']
    body = ''
    send_mail(
        title, body, mail_send,
        'HuiCong_YuQing_{0:04d}_{1:02d}_{2:02d}.xlsx'.format(
            now.year, now.month, now.day))

    ## reset fetch status
    cr.execute('''
        UPDATE HUICONG_QUQING_KEYWORD_TBL SET
            BAIDU_WANGYE_FETCH_STATUS=0,
            BAIDU_XINWEN_FETCH_STATUS=0,
            BAIDU_ZHIDAO_FETCH_STATUS=0,
            BAIDU_WENKU_FETCH_STATUS=0,
            BAIDU_TIEBA_FETCH_STATUS=0,
            SOGOU_WANGYE_FETCH_STATUS=0,
            SOGOU_XINWEN_FETCH_STATUS=0,
            SO_WANGYE_FETCH_STATUS=0,
            SO_XINWEN_FETCH_STATUS=0,
            BAIDU_M_QUANBU_FETCH_STATUS=0,
def start():
    testDNSInfo, testAInfo = load_test_info()  # 加载配置文件
    check_named_conf_by_named_check()  # 使用named-checkconf检查配置文件
    conf = NamedConfig(named_config_path)
    current_status = check_conf_file(conf)
    if not current_status:
        print("settings is different from %s" % named_config_path)
        exit()
    start_time = 0
    send_mail(u"%s::保护脚本已开启." % title, "<h3>DNS探测保护脚本已开启。</h3>")
    while conf.check_hash():
        all_msg = "<html><head></head><body>"
        flag = 0
        if not check_named_process():
            msg = "named process is not existed,try restart;"
            logger.info(msg)
            restart_named()
            send_mail(u"%s::named进程不存在" % title, msg)
            time.sleep(300)
            continue
        msg = "current DNS is %s" % json.dumps(current_status)
        logger.info(msg)
        # 检查各个view中的默认forward方向
        for view_name, current_rule_id in current_status.iteritems():
            status = view_default_forward_check(view_name, current_rule_id)
            if (type(status) is bool) and (status is False):
                # 全部dns探测失败,准备切换到楚天
                if start_time == 0:  # 初次发现,开始计时,策略不变
                    start_time = time.time()
                    msg = "all of view %s's default forwarders has filed;plan to change dns to %s;left %d s" % (
                        view_name, ";".join(
                            final_default_change_ip[1]), wait_time)
                    logger.info(msg.strip())
                    all_msg += ("%s<br/>" % msg)
                elif time.time() - start_time > wait_time:  # 计时达到标准,切换到楚天方向
                    for one in conf.view_list:
                        if one['name'] == view_name:
                            msg = "change view %s default forwarders to %s;" % (
                                view_name, ';'.join(status[1]))
                            one['info'][
                                'forwarders'] = final_default_change_ip[1]
                            current_status[
                                view_name] = final_default_change_ip[0]
                            flag += 1
                            logger.info(msg.strip())
                            all_msg += ("%s<br/>" % msg)
                else:
                    pass
            elif (type(status) is bool) and (status is
                                             True):  # 当前策略探测成功,且没有优先级更高的策略成功
                if start_time != 0:  # 若已经开始切换计时,则停止计时
                    start_time = 0
            else:  # 当前dns探测失败,且有其他dns探测成功
                if status[0] == final_default_change_ip[
                        0]:  # 其他所有dns探测失败,楚天方向dns探测成功
                    if start_time == 0:  # 初次发现,准备切换到楚天方向
                        start_time = time.time()
                        msg = "plan change view %s default forwarders to %s;left %d s" % (
                            view_name, ";".join(
                                final_default_change_ip[1]), wait_time)
                        logger.info(msg.strip())
                        all_msg += ("%s<br/>" % msg)
                    elif time.time() - start_time > wait_time:
                        for one in conf.view_list:
                            if one['name'] == view_name:
                                msg = "change view %s default forwarders to %s;" % (
                                    view_name, ';'.join(status[1]))
                                one['info']['forwarders'] = status[1]
                                current_status[view_name] = status[0]
                                flag += 1
                                logger.info(msg.strip())
                                all_msg += ("%s<br/>" % msg)
                else:  # 其他dns探测成功,正常切换
                    if start_time != 0:  # 若已经开始切换计时,则停止计时
                        start_time = 0
                    for one in conf.view_list:
                        if one['name'] == view_name:
                            msg = "change view %s default forwarders to %s;" % (
                                view_name, ';'.join(status[1]))
                            one['info']['forwarders'] = status[1]
                            current_status[view_name] = status[0]
                            flag += 1
                            logger.info(msg.strip())
                            all_msg += ("%s<br/>" % msg)
        # 检查各view中除默认外的其他forward方向
        for testDNSIp, forwardInfos in testDNSInfo.iteritems(
        ):  # forward DNS 监测
            status = check_dns(testDNSIp.split(';'))
            for forwardInfo in forwardInfos["forwardInfo"]:
                if (status is True) and (forwardInfos['status'] is
                                         False):  # 链路恢复,forward DNS测试成功
                    flag += 1
                    msg = "add view %s include %s,test dns %s;" % (
                        forwardInfo["viewName"], forwardInfo["forwardName"],
                        testDNSIp)
                    logger.info(msg.strip())
                    all_msg += ("%s<br/>" % msg)
                elif (status is False) and (forwardInfos['status'] is
                                            True):  # 链路故障,forward DNS测试失败
                    flag += 1
                    msg = "delete view %s include %s,test dns %s;" % (
                        forwardInfo["viewName"], forwardInfo["forwardName"],
                        testDNSIp)
                    logger.info(msg.strip())
                    all_msg += ("%s<br/>" % msg)
                else:  # 链路状态没有变化
                    pass
            testDNSInfo[testDNSIp]["status"] = status
        for testA, forwardInfos in testAInfo.iteritems():  # CDN主机监测
            status = check_host_by_tcp_ping(testA.split(';'))
            for forwardInfo in forwardInfos["forwardInfo"]:
                if (status is True) and (forwardInfos['status'] is
                                         False):  # 主机测试成功
                    flag += 1
                    msg = "view %s include %s,test IP %s success;" % (
                        forwardInfo["viewName"], forwardInfo["forwardName"],
                        testA)
                    logger.info(msg.strip())
                    all_msg += ("%s<br/>" % msg)
                elif (status is False) and (forwardInfos['status'] is
                                            True):  # 主机测试失败
                    flag += 1
                    msg = "delete view %s include %s,test A %s;" % (
                        forwardInfo["viewName"], forwardInfo["forwardName"],
                        testA)
                    logger.info(msg.strip())
                    all_msg += ("%s<br/>" % msg)
                else:  # 链路状态没有变化
                    pass

            testAInfo[testA]["status"] = status
        for one in conf.view_list:  # 将探测结果同步到named conf中
            one["info"]["include"] = []
            for forwardName, testInfo in view_rulers[
                    one["name"]]["forwards"].iteritems():
                testDNS = ';'.join(testInfo["testDNS"])
                if "testA" in testInfo:  # 如果存在test host, 判断test host是否成功
                    if (testAInfo[';'.join(testInfo["testA"])]["status"] is
                            True) and (testDNSInfo[testDNS]["status"] is True):
                        one["info"]["include"].append((forwardName, 100))
                else:
                    if testDNSInfo[testDNS]["status"] is True:
                        one["info"]["include"].append((forwardName, 100))
        if flag != 0:
            dump_named_conf()
            if not conf.save():
                break
            restart_named()
            msg = "restart named service"
            logger.info(msg)
            all_msg += ("%s<br/></body></html>" % msg)
            send_mail(u"%s::DNS切换提醒." % title, all_msg)
        time.sleep(5)
    send_mail(
        u"%s::配置文件异常修改." % title,
        "%s has been modified by someone,check script stop" %
        named_config_path)
Beispiel #24
0
     instance_id = True
 else:
     instance_id = False
 # IP discover options --
 scan_type = params[2]
 # ----------------------
 total_accounts = len(accounts)
 log.info("total_accounts %d" % total_accounts)
 startTime = datetime.now()
 # CSV writer
 writer, csv_log_file = set_csv_writer()
 # KVM discovery ---------------------------------------------------
 try:
     kvm_discovery(accounts, params[1], writer, scan_type)
 except Exception as e:
     send_mail("", "Discovery error: Unhandled Exception (%s)" % e)
     log.error("Discovery error: %s" % e)
     print "Discovery error: Unhandled Exception (%s)" % e
     sys.exit(444)
 # -----------------------------------------------------------------
 csv_log_file.close()
 exec_time = str(datetime.now() - startTime)
 log.info("Baremetals scanned %d" % bm_scanned)
 log.info("total_guests %d" % total_guests)
 log.info("END OF EXECUTION %s" % exec_time)
 print "\n--------------------------------------------"
 print "# Baremetals found: %d" % bm_scanned
 print "# END OF EXECUTION %s" % exec_time
 print "--------------------------------------------"
 if not output:
     sys.stdout.close()
Beispiel #25
0
def send_error(user):
    toaddr = os.environ.get('ERROR_EMAIL')

    subject = '{user} had a FATAL ERROR!'.format(user=str(user))
    body = "Look into heroku logs and notify user"
    send_mail(toaddr, subject, body)
Beispiel #26
0
print(sys.path)
<<<<<<< HEAD
=======

>>>>>>> 8400c1fce91249948c13240b8074b40f11bd4263
report_file = os.path.join(report_path,'report.txt')
if 'report.txt' in os.listdir(report_path):
    os.remove(report_file)

print("######"+report_path)
print("*******"+report_file)
from send_mail import *
def creatsuite():
    discover = unittest.defaultTestLoader.discover(case_path,
                                                    pattern="test*.py",
                                                    top_level_dir=None)
    print(discover)
    return discover

#discover 方法筛选出来的用例,循环添加到测试套件中
    for test_case in discover:
        print(test_case)
        testunit.addTests(test_case)
    return testunit

if __name__ == "__main__":
    runner = unittest.TextTestRunner()
    runner.run(creatsuite())
    send_mail(report_file)
    
Beispiel #27
0
def getResponse(input_statement,sessionId,response,cont_id):
	note_flag = False
	lastResponse = ""
	lastQuery = ""
	chat_type = "chat"
	chat_stage="0"
	replyVal = ""
	values = {}
	count_reply = 0
	session_ended = "false"
	vip_list = ["PU","AU","GP","AV","BR"]

	user_name = assigned_group = company_address = company_division =  dbBucket = mongo_bucket = sub_bucket = category = ticket_number = notes = user_problem_query = category_detected = force_enable_flag = ""
	Corporate_ID = Summary = Urgency = Impact = Assigned_Group = MNM_Chatbot_ID = Notes = user_role_band=""
	suggestion_enable = False

	with open(answers_json) as answer_file:
		answersData = json.load(answer_file)

	with open("/var/www/html/mSolvebot_response.json") as resp_file:
		respData = json.load(resp_file)

	last_resp_row = coll1.find({"_sessionId":sessionId}).sort( [{ "_id",-1 }] ).limit(1)
	if last_resp_row:
		mongoObjjson = json.dumps(list(last_resp_row),default=json_util.default)
		mongoObjjson = json.loads(mongoObjjson)
		mongoObjjson = filter(None,mongoObjjson)
		if mongoObjjson:
			lastResponse = mongoObjjson[0].get('lastResp')
			category = mongoObjjson[0].get('category')
			sub_bucket = mongoObjjson[0].get('sub_bucket')
			lastQuery = mongoObjjson[0].get('lastQuery')
			count_reply = mongoObjjson[0].get('count_rep')
			mongo_bucket = mongoObjjson[0].get('bucket')
			note_flag = mongoObjjson[0].get('note_flag')
			chat_stage = mongoObjjson[0].get('chat_stage')
			ticket_number = mongoObjjson[0].get('ticket_number')	


	# user_details_row = userDetailsCollection.find({"sessionId":sessionId}).sort( [{ "_id",-1 }] )
	user_details_row = userDetailsCollection.find({"cont_id":cont_id}).sort( [{ "_id",-1 }] ).limit(1)
	if user_details_row:
		mongoObjjson = json.dumps(list(user_details_row),default=json_util.default)
		mongoObjjson = json.loads(mongoObjjson)
		mongoObjjson = filter(None,mongoObjjson)
		if mongoObjjson:
			user_name = mongoObjjson[0].get('user_name')
			company_address = mongoObjjson[0].get('company_address')
			company_division = mongoObjjson[0].get('company_division')
			role = mongoObjjson[0].get('role')
			manager_id = mongoObjjson[0].get('reports_to')
			manager_role_band = mongoObjjson[0].get('manager_role_band')
			user_role_band = mongoObjjson[0].get('user_role_band')


	ticket_details_row = ticket_details_collection.find({"sessionId":sessionId}).sort( [{ "_id",-1 }] ).limit(1)
	if ticket_details_row:
		mongoObjjson = json.dumps(list(ticket_details_row),default=json_util.default)
		mongoObjjson = json.loads(mongoObjjson)
		mongoObjjson = filter(None,mongoObjjson)
		if mongoObjjson:
			Corporate_ID = mongoObjjson[0].get('Corporate_ID')
			Summary = mongoObjjson[0].get('Summary')
			Urgency = mongoObjjson[0].get('Urgency')
			Impact = mongoObjjson[0].get('Impact')
			Assigned_Group = mongoObjjson[0].get('Assigned_Group')
			MNM_Chatbot_ID = mongoObjjson[0].get('MNM_Chatbot_ID')
			Notes = mongoObjjson[0].get('Notes')


	input_statement = re.sub(r'[^a-zA-Z0-9-:.@/ ]', '',input_statement).strip()
	input_statement = ' '.join(input_statement.split())
	print("---------------- =++++++++++++++ this is inp {}".format(input_statement))

	greet = getGreetings(input_statement)
	praise = getPraiseWords(input_statement)

	if input_statement == "createit":
		replyVal = respData["id-1015"]["answer"]
		replyJson = {"reply":replyVal}
		replyJson.update({"chat_type":chat_type})
		replyJson["data"]=values
		note_flag = False
		chat_stage="0"
		if values:
			replyJson["data"]=values
		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
		replyJson.update({"chatEnable":chat_enable})
		replyJson.update({"suggestion_enable":"True"})
		replyJson.update({"session_ended":session_ended})
		convoTime = datetime.datetime.now()
		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,"",count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
		pushConversationLogsToMongo(sessionId,convoTime,"Create Ticket",replyVal,user_name,cont_id,Notes)
		return replyJson
	elif input_statement == "statusit":
		## ticket_list = get_incidentId_from_mongo(cont_id)
		#ticket_list = get_unresolved_ticket_list(cont_id)
		#if ticket_list:
		#	ticket_dictionary = {}
		#	for i in ticket_list:
		#		print "00000000000000 --------------- {}".format(i)
		#		if type(i[1]) is list:
		#			ticket_description = " > ".join(i[1])
		#		else:
		#			ticket_description = i[1]
		#		#if not ticket_description:
		#		#	ticket_description = "Sorry, this ticket is not updated yet."
		#		ticket_dictionary[i[0]] = i[0]+": "+ticket_description
		#	replyVal = respData["id-1016"]["answer"]
		#	ticket_dictionary = od(sorted(ticket_dictionary.items(),reverse=True))
		#	values = ticket_dictionary
		#	# card_values = card_dictionary
		#	replyJson = {"reply":replyVal}
		#	replyJson["data"]=values
		#	chat_stage = "checkstatus"
		#	force_enable_flag = "on"
		#	chat_type = "card"
		ticket_list = get_open_tickets_by_user(cont_id)
                if ticket_list:
                        ticket_dict = od()
                        for i in ticket_list:
                                ticket_dict[i] = i+":"+str(ticket_list[i])
                        replyVal = respData["id-1016"]["answer"]
                        ticket_list = od(sorted(ticket_list.items(),reverse=True))
                        #values = ticket_list
                        values = ticket_dict
                        # card_values = card_dictionary
                        replyJson = {"reply":replyVal}
                        replyJson["data"]=values
                        chat_stage = "checkstatus"
                        force_enable_flag = "on"
                        chat_type = "card"
		else:
			# replyVal = respData["id-1017"]["answer"]
			replyVal = respData["id-1024"]["answer"]
			replyJson = {"reply":replyVal}
			# values = {"createit":"Create Ticket","statusit":"Check Ticket Status"}
			values = {"createit":"Create Ticket"}
			chat_stage = "checkstatus"
			# session_ended = "true"
			force_enable_flag = "on"
			chat_type = "radio"
		replyJson.update({"chat_type":chat_type})
		note_flag = True
		if values:
			replyJson["data"]=values
			# replyJson["card_data"] = card_values
		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
		replyJson.update({"chatEnable":chat_enable})
		replyJson.update({"suggestion_enable":"False"})
		replyJson.update({"session_ended":session_ended})
		convoTime = datetime.datetime.now()
		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
		pushConversationLogsToMongo(sessionId,convoTime,"Check Ticket Status",replyVal,user_name,cont_id,Notes)
		return replyJson
	# elif greet[-1] == True:
	# 	replyVal = greet[0].replace("xyz",user_name)
	# 	replyJson = {"reply":replyVal}
	# 	replyJson.update({"chat_type":chat_type})
	# 	replyJson["data"]=values
		
	# 	if values:
	# 		replyJson["data"]=values
	# 	chat_enable = chatEnable(chat_type)
	# 	replyJson.update({"chatEnable":chat_enable})
	# 	replyJson.update({"session_ended":session_ended})
	# 	convoTime = datetime.datetime.now()

	# 	pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
	# 	pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,notes)
	# 	return replyJson
	#elif praise[-1] == True:
	#	replyVal = praise[0].replace("xyz",user_name)
	#	replyJson = {"reply":replyVal}
	#	replyJson.update({"chat_type":chat_type})
	#	replyJson["data"]=values
	#	if values:
	#		replyJson["data"]=values
	#	chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
	#	replyJson.update({"chatEnable":chat_enable})
	#	replyJson.update({"session_ended":session_ended})
	#	convoTime = datetime.datetime.now()

	#	pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
	#	pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
	#	return replyJson
	else:
		pass

	if chat_stage == "sop":
		if input_statement.lower() == "yeshelpful":
			replyVal = "Great " + user_name +". Happy to help you. </br> Have a nice day."
			replyJson = {"reply":replyVal}
			chat_type = "radio"
			replyJson.update({"chat_type":chat_type})
			values = {"createit":"Create Ticket","statusit":"Ticket Status"}
			session_ended = "true"
		elif input_statement.lower() == "nothelpful":
			resp = requests.request("get","https://emss.mahindra.com/sap/bc/zhr_tq_emp_det?sap-client=500&IV_PERNR="+manager_id)
			resp_list = resp.text.split("-//-")
			suggestion_enable = False
			try:
				manager_role_band = resp_list[4]
			except:
				manager_role_band = ""

			if "secretary" in role.lower() and manager_role_band in vip_list:
				replyVal = "I will help you raise a ticket.<br>"+respData["id-1014"]["answer"]
				chat_stage = "3"
				chat_type = "radio"
				manager_name = resp_list[2]+" "+resp_list[3]
				values = { cont_id : user_name, manager_id : manager_name }
			else:		
				chat_stage = "note_stage"
				# replyVal = getRandomApology()+"<br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)+" ("+category+")"
				#replyVal = "I will raise a ticket for you. <br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)
				replyVal = "Alright. I will raise a ticket for you. </br>Please provide some additional details about your issue/request.</br>So that our support team can help you better."
		replyJson = {"reply":replyVal}
		replyJson.update({"chat_type":chat_type})
		note_flag = True
		if values:
			replyJson["data"]=values
		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
		replyJson.update({"chatEnable":chat_enable})
		replyJson.update({"suggestion_enable":"False"})
		replyJson.update({"session_ended":session_ended})
		convoTime = datetime.datetime.now()
		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
		pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
		return replyJson


	if chat_stage == "checkstatus":
		phone = ""
		#if "INC" in input_statement.upper() and len(input_statement) == 15:
		if input_statement.upper().startswith("INC") and len(input_statement) == 15 or input_statement.upper().startswith("WO") and len(input_statement) == 15:
			try:
				#ticket_stat = ticket_status_details(input_statement.upper())
				ticket_stat = get_ticket_status_details(input_statement.upper())
				if len(filter(None,ticket_stat)) > 3:
					if ticket_stat[1] and ticket_stat[3]:
						replyVal = "Dear <b>{}</b>.</br>Status of your ticket: <b>{}</b>.</br>Reason for the status is: <b>{}</b></br>Your ticket has been assigned to: <b>{}</b>.</br>Happy to help you.".format(user_name,ticket_stat[0],ticket_stat[1],ticket_stat[3])
					elif ticket_stat[1] and not ticket_stat[3]:
						replyVal = "Dear <b>{}</b>.</br>Status of your ticket: <b>{}</b>.</br>Reason for the status is: {}</br>Happy to help you.".format(user_name,ticket_stat[0],ticket_stat[1])
					elif ticket_stat[3] and not ticket_stat[1]:
						replyVal = "Dear <b>{}</b>.</br>Status of your ticket: <b>{}</b>.</br>Your ticket has been assigned to: <b>{}</b>.</br>Happy to help you.".format(user_name,ticket_stat[0],ticket_stat[3])
				elif len(filter(None,ticket_stat)) <= 3:
					replyVal = "Dear <b>{}</b>.</br>Status of your ticket: <b>{}</b>.</br>There are no more details yet. Please check back later.</br>Happy to help you.".format(user_name,ticket_stat[0])
				# ticket_stat,comment = status_ticket_bmc(input_statement.upper())
				# replyVal = "Dear " + user_name + ". Status of your ticket - <b>" + ticket_stat + "</b>.</br> Have a nice day."
				replyJson = {"reply":replyVal}
				#chat_type = "radio"
				chat_type = "phone"
				replyJson.update({"chat_type":chat_type})
				#values = {"createit":"Create Ticket","statusit":"Check Ticket Status"}
				values = {"createit":"Create Ticket","statusit":"Ticket Status"}
				phone = "02224915544"
				session_ended = "true"
			except:
				replyVal = respData["id-1018"]["answer"]
				replyJson = {"reply":replyVal}
				replyJson.update({"chat_type":chat_type})
			replyJson["data"]=values
			replyJson["phone"]=phone
			chat_stage = "checkstatus"
		else:
			replyVal = respData["id-1019"]["answer"]
			replyJson = {"reply":replyVal}
			replyJson.update({"chat_type":chat_type})
			replyJson["data"]=values
			chat_stage = "checkstatus"
		note_flag = True
		if values:
			replyJson["data"]=values
		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
		replyJson.update({"chatEnable":chat_enable})
		replyJson.update({"suggestion_enable":"False"})
		replyJson.update({"session_ended":session_ended})
		convoTime = datetime.datetime.now()
		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
		pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
		return replyJson

	if chat_stage == "1":
		if input_statement == "skip":
			location = company_address
			if user_role_band and user_role_band in vip_list:
				assigned_group = get_assigned_group(location,"vip",category)
				push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="2-High",Impact="2-Significant/Large")
				print("asssssssgggggggg group {}".format(assigned_group))
			elif "secretary" in role.lower() and manager_role_band in vip_list:
				assigned_group = get_assigned_group(location,company_division,category,secretary_flag = True)
				push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="4-Low",Impact="4-Minor/Localized")
				print("asssssssgggggggg group {}".format(assigned_group))
			else:
				assigned_group = get_assigned_group(location,company_division,category)
				push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="4-Low",Impact="4-Minor/Localized")
				print("asssssssgggggggg group {}".format(assigned_group))
		else:
			location_list = []
			with open("/var/www/html/mahindra_location_list.csv") as f:
				location_data = csv.reader(f)
				for i in location_data:
					location_list.append(i[0].lower())
			location_details = input_statement.split(" - ")
			if len(location_details) > 1:
				location_input = location_details[0].lower().strip()
				company_division = location_details[1].strip()
			else:
				location_input = location_details[0].lower().strip()

			#if input_statement.lower() in location_list:
				#location = input_statement
			if str(location_input) in location_list:
				if user_role_band and user_role_band in vip_list:
					location = location_input
					assigned_group = get_assigned_group(location,"vip",category)
					push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="2-High",Impact="2-Significant/Large")
					print("gggggggggrouppppppppppp {}".format(assigned_group))
				else:
					location = location_input
					assigned_group = get_assigned_group(location,company_division,category)
					push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="4-Low",Impact="4-Minor/Localized")
					print("gggggggggrouppppppppppp {}".format(assigned_group))
			else:
				note_flag = True
				chat_stage = "1"
				chat_type = "address"
				replyVal = "Please enter a valid location."
				replyJson = {"reply":replyVal}
				replyJson.update({"chat_type":"chat"})
				replyJson.update({"chatEnable":"true"})
				replyJson.update({"suggestion_enable":"False"})
				replyJson.update({"session_ended":"false"})
				return replyJson

		if "kanhe" in location.lower():
			note_flag = True
			chat_stage = "1i"
			chat_type = "radio"
			values = {"kanhe1":"Kanhe1","kanhe2":"Kanhe2"}
			# force_enable_flag = "on"
			replyVal = respData["id-1013"]["answer"]
		else:
			note_flag = True
			chat_stage = "last"
			chat_type = "radio"
			values = od()
			values["confirm"] = "Confirm"
			values["cancel"] = "Cancel"
			replyVal = respData["id-1008"]["answer"]

	elif chat_stage == "1i":
		location = input_statement
		assigned_group = get_assigned_group(location,company_division,category)
		push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="4-Low",Impact="4-Minor/Localized")
		print("grrrrrrrrp assignd {}".format(assigned_group))
		note_flag = True
		chat_stage = "2"
		#chat_type = "radio"
		#values = {"skip":"Skip"}
		#force_enable_flag = "on"
		#replyVal = respData["id-1007"]["answer"]+"<br>"+respData["id-1001"]["answer"]+" "+assigned_group
		#replyVal = respData["id-1007"]["answer"]+"<br>"+respData["id-1001"]["answer"]
		replyVal = "Alright.</br>Please elaborate your issue.</br>So that our support team can help you better."
		
	elif chat_stage == "note_stage":
		replyVal = getRandomApology()+"<br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)
		notes = input_statement
		push_ticket_details_mongo(sessionId,Notes=notes)
		note_flag = True
		chat_stage = "1"
		chat_type = "address"
		values = {"skip":"Skip"}
		force_enable_flag = "on"

	elif chat_stage == "2":
		if input_statement == "skip":
			pass
		else:
			notes = input_statement
			push_ticket_details_mongo(sessionId,Notes=notes)
		note_flag = True
		chat_stage = "last"
		chat_type = "radio"
		values = {"cancel":"Cancel","confirm":"Confirm"}
		replyVal = respData["id-1008"]["answer"]

	elif chat_stage == "rating":
		replyVal = respData["id-1011"]["answer"] + user_name + ", for your feedback."
		values = {"createit":"Create Ticket","statusit":"Ticket Status"}
		chat_type = "radio"
		# force_enable_flag = "on"
		session_ended = "true"

	elif chat_stage == "3":
		if input_statement == manager_id:
			assigned_group = get_assigned_group(company_address,"vip",category)
			push_ticket_details_mongo(sessionId,Assigned_Group=assigned_group,Urgency="2-High",Impact="2-Significant/Large")
			print("vip assigned group ------ {}".format(assigned_group))
			note_flag = True
			chat_stage = "2"
			#chat_type = "radio"
			#values = {"skip":"Skip"}
			#force_enable_flag = "on"
			#replyVal = respData["id-1007"]["answer"]+"<br>"+respData["id-1001"]["answer"]+ " "+assigned_group
			#replyVal = respData["id-1007"]["answer"]+"<br>"+respData["id-1001"]["answer"]
			replyVal = "Alright.</br>Please elaborate your issue.</br>So that our support team can help you better."
		else:
		# 	print "vip assigned group ------ {}".format(get_assigned_group(company_address,"secretary",category))
		# note_flag = True
		# chat_stage = "2"
		# chat_type = "radio"
		# values = {"skip":"Skip"}
		# force_enable_flag = "on"
		# replyVal = respData["id-1007"]["answer"]+"<br>"+respData["id-1001"]["answer"]
			chat_stage = "note_stage"
			# chat_type = "radio"
			replyVal = "Alright. I will raise a ticket for you. </br>Please provide some additional details about your issue/request.</br>So that our support team can help you better."

	elif chat_stage == "last":
		if input_statement == "cancel":
			replyVal = respData["id-1010"]["answer"] + user_name +". "+ respData["id-1009"]["answer"]
			#remove ticket details which have not been created i.e. cancelled ones
			ticket_details_collection.delete_one({"sessionId":sessionId})
			chat_type = "radio"
			values = {"createit": "Create Ticket", "statusit":"Ticket Status"}
			#force_enable_flag = "on"
			session_ended = "true"
		elif input_statement == "confirm":
			try:
				ticket_number = create_ticket_bmc(Corporate_ID=Corporate_ID,Summary=Summary, Urgency=Urgency,Impact=Impact,Assigned_Group=Assigned_Group,MNM_Chatbot_ID=sessionId,Notes=Notes)
				#ticket_number = ticketGenerator()
			except:
				api_error_report = traceback.format_exc()
				send_mail(Corporate_ID,api_error_report,time_stamp=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),Summary=Summary, Urgency=Urgency,Impact=Impact,Assigned_Group=Assigned_Group,MNM_Chatbot_ID=sessionId,Notes=Notes)
				push_bmc_API_error_details_mongo(sessionId)
				push_bmc_API_error_details_mongo(sessionId,Corporate_ID=Corporate_ID,TS=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),Summary=Summary,Assigned_Group=Assigned_Group,API_error_report=api_error_report)
				raise
			push_to_ticket_archieve_mongo(sessionId)
			push_to_ticket_archieve_mongo(sessionId, incidentId = ticket_number,Corporate_ID=Corporate_ID,Summary=Summary, Urgency=Urgency,Impact=Impact,Assigned_Group=Assigned_Group,MNM_Chatbot_ID=sessionId,Notes=Notes)
			# replyVal = respData["id-1011"]["answer"] + user_name +". "+ respData["id-1002"]["answer"].replace('XYZ123',ticket_number)
			replyVal = respData["id-1002"]["answer"].replace('XYZ123',ticket_number)
			chat_type = "rating"
			chat_stage = "rating"
			note_flag = True
			# values = {"statusit":"Check Ticket Status"}
			# force_enable_flag = "on"
			# session_ended = "true"

	query = input_statement

	if note_flag is False:
		if lastQuery:
			query = lastQuery+" "+query

		bucket,sub_bucket,kwd = extract_buckets(query.lower())

		if not mongo_bucket:
			mongo_bucket = bucket

		reply,confidence = bot.get_response(query)

		push_ticket_details_mongo(sessionId)
		push_ticket_details_mongo(sessionId,Summary=query,Corporate_ID=cont_id,MNM_Chatbot_ID=sessionId)

		print("response ----------------------- {}".format(reply))

		resp = requests.request("get","https://emss.mahindra.com/sap/bc/zhr_tq_emp_det?sap-client=500&IV_PERNR="+manager_id)
		resp_list = resp.text.split("-//-")
		try:
			manager_role_band = resp_list[4]
		except:
			manager_role_band = ""

		if mongo_bucket and sub_bucket:
			reply = str(reply)
			category = answersData[reply]['answer']
			
			#if category == "Identity Management > Password Reset":
			#	replyVal = "Please follow below steps to reset the password. </br> 1. Go to this link https://example.com/password_reset </br> 2. Click on change password. </br> 3. Enter old password. </br> 4. Enter new password. </br> 5. Click submit and you're done. </br></br> Was this helpful?"
			#	note_flag = True
			#	chat_stage = "sop"
			#	chat_type = "radio"
			#	values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
			#	replyJson = {"reply":replyVal}
			#	replyJson.update({"chat_type":chat_type})
			#	replyJson["data"]=values
			#	if values:
			#		replyJson["data"]=values
			#	chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
			#	replyJson.update({"chatEnable":chat_enable})
			#	replyJson.update({"session_ended":session_ended})
			#	convoTime = datetime.datetime.now()

				#pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
				#pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
				#return replyJson
			if category == "Operating Systems > Drivers Installation > Printer driver installation":
				replyVal = respData["id-1021"]["answer"]+"</br></br>"+respData["id-1022"]["answer"]
				note_flag = True
				chat_stage = "sop"
				chat_type = "radio"
				values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
				replyJson = {"reply":replyVal}
				replyJson.update({"chat_type":chat_type})
				replyJson["data"]=values
				if values:
					replyJson["data"]=values
				chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
				replyJson.update({"chatEnable":chat_enable})
				replyJson.update({"session_ended":session_ended})
				convoTime = datetime.datetime.now()

				pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
				pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
				return replyJson
			elif category == "Operating Systems > System settings > System proxy settings":
				replyVal = respData["id-1023"]["answer"]+"</br></br>"+respData["id-1022"]["answer"]
				note_flag = True
				chat_stage = "sop"
				chat_type = "radio"
				values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
				replyJson = {"reply":replyVal}
				replyJson.update({"chat_type":chat_type})
				replyJson["data"]=values
				if values:
					replyJson["data"]=values
				chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
				replyJson.update({"chatEnable":chat_enable})
				replyJson.update({"session_ended":session_ended})
				convoTime = datetime.datetime.now()

				pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
				pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
				return replyJson

			note_flag = True	
			if "secretary" in role.lower() and manager_role_band in vip_list:
				replyVal = getRandomApology()+"<br>"+respData["id-1014"]["answer"]
				suggestion_enable = False
				chat_stage = "3"
				chat_type = "radio"
				manager_name = resp_list[2]+" "+resp_list[3]
				values = { cont_id : user_name, manager_id : manager_name }
			else:
				chat_stage = "note_stage"
				suggestion_enable = False
				replyVal = "Alright.</br>Please elaborate your issue.</br>So that our support team can help you better."

		elif mongo_bucket and not sub_bucket:
			reply = str(reply)
			category = answersData[reply]['answer']
			single_word_reply = handleSingleWords(reply)
			if single_word_reply:
				replyVal = single_word_reply
				suggestion_enable = True
			else:
			#	if category == "Identity Management > Password Reset":
			#		replyVal = "Please follow steps mentioned below to reset the password. </br> 1. Go to this link https://example.com/password_reset </br> 2. Click on change password. </br> 3. Enter old password. </br> 4. Enter new password. </br> 5. Click submit and you're done. </br></br> Was this helpful?"
			#		note_flag = True
			#		chat_stage = "sop"
			#		chat_type = "radio"
			#		values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
			#		replyJson = {"reply":replyVal}
			#		replyJson.update({"chat_type":chat_type})
			#		replyJson["data"]=values
			#		if values:
			#			replyJson["data"]=values
			#		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
			#		replyJson.update({"chatEnable":chat_enable})
			#		replyJson.update({"session_ended":session_ended})
			#		convoTime = datetime.datetime.now()
			#
			#		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
			#		pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
			#		return replyJson
			#	elif category == "Operating Systems > Drivers Installation > Printer driver installation":
			#		replyVal = respData["id-1021"]["answer"]+"</br></br>"+respData["id-1022"]["answer"]
			#		note_flag = True
			#		chat_stage = "sop"
			#		chat_type = "radio"
			#		values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
			#		replyJson = {"reply":replyVal}
			#		replyJson.update({"chat_type":chat_type})
			#		replyJson["data"]=values
			#		if values:
			#			replyJson["data"]=values
			#		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
			#		replyJson.update({"chatEnable":chat_enable})
			#		replyJson.update({"session_ended":session_ended})
			#		convoTime = datetime.datetime.now()
			#
			#		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
			#		pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
			#		return replyJson
			#	elif category == "Operating Systems > System settings > System proxy settings":
			#		replyVal = respData["id-1023"]["answer"]+"</br></br>"+respData["id-1022"]["answer"]
			#		note_flag = True
			#		chat_stage = "sop"
			#		chat_type = "radio"
			#		values = { "yeshelpful" : "Yes", "nothelpful" : "No, create ticket." }
			#		replyJson = {"reply":replyVal}
			#		replyJson.update({"chat_type":chat_type})
			#		replyJson["data"]=values
			#		if values:
			#			replyJson["data"]=values
			#		chat_enable = chatEnable(chat_type,force_enable_flag=force_enable_flag)
			#		replyJson.update({"chatEnable":chat_enable})
			#		replyJson.update({"session_ended":session_ended})
			#		convoTime = datetime.datetime.now()
			#
			#		pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,input_statement,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
			#		pushConversationLogsToMongo(sessionId,convoTime,input_statement,replyVal,user_name,cont_id,Notes)
			#		return replyJson

				if "secretary" in role.lower() and manager_role_band in vip_list:
					note_flag = True
					replyVal = getRandomApology()+"<br>"+respData["id-1014"]["answer"]
					suggestion_enable = False
					chat_stage = "3"
					chat_type = "radio"
					manager_name = resp_list[2]+" "+resp_list[3]
					values = { cont_id : user_name, manager_id : manager_name }
				else:	
					# replyVal = getRandomApology()+"<br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)+" ("+category+")"
					replyVal = "Alright.</br>Please provide some additional details about your issue/request.</br>So that our support team can help you better."
					chat_stage = "note_stage"
					suggestion_enable = False
					# chat_type = "radio"
	
		elif sub_bucket and not mongo_bucket:
			count_reply = count_reply+1
			replyVal = respData["id-1003"]["answer"]
			suggestion_enable = True
			if count_reply == 2:
				if "secretary" in role.lower() and manager_role_band in vip_list:
					note_flag = True
					suggestion_enable = False
					replyVal = respData["id-1004"]["answer"]+"<br>"+respData["id-1014"]["answer"]
					chat_stage = "3"
					chat_type = "radio"
					manager_name = resp_list[2]+" "+resp_list[3]
					values = { cont_id : user_name, manager_id : manager_name }
				else:
					note_flag = True
					# replyVal = respData["id-1004"]["answer"]+"<br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)+" ("+category+")"
					replyVal = respData["id-1004"]["answer"]+"<br>"+"Please provide some additional details about your issue/request.</br>So that our support team can help you better."
					chat_stage = "note_stage"
					suggestion_enable = False
				push_unclassified_queries_mongo(sessionId)
				push_unclassified_queries_mongo(sessionId,Corporate_ID=cont_id,Query=query)

		elif not mongo_bucket and not sub_bucket:
			print("i am here in this condition --------------- ........... {}".format(count_reply))
			count_reply = count_reply+1
			single_word_reply = handleSingleWords(reply)
			if single_word_reply:
				replyVal = single_word_reply
				suggestion_enable = True
			else:
				replyVal = respData["id-1003"]["answer"]
				suggestion_enable = True
			if count_reply == 2:
				print("am i here +++++++++++ .......... +++++++++++++++ {}".format(count_reply))
				if "secretary" in role.lower() and manager_role_band in vip_list:
					note_flag = True
					replyVal = respData["id-1004"]["answer"]+"<br>"+respData["id-1014"]["answer"]
					suggestion_enable = False
					chat_stage = "3"
					chat_type = "radio"
					manager_name = resp_list[2]+" "+resp_list[3]
					values = { cont_id : user_name, manager_id : manager_name }
				else:
					note_flag = True
					# replyVal = respData["id-1004"]["answer"]+"<br>"+respData["id-1012"]["answer"].replace("xyz-loc",company_address)+" ("+category+")"
					replyVal = respData["id-1004"]["answer"]+"<br>"+"Please provide some additional details about your issue/request.</br>So that our support team can help you better."
					suggestion_enable = False
					chat_stage = "note_stage"
					# chat_type = "radio"
				push_unclassified_queries_mongo(sessionId)
				push_unclassified_queries_mongo(sessionId,Corporate_ID=cont_id,Query=query)

	replyJson = {"reply":replyVal}
	replyJson.update({"chat_type":chat_type})
	replyJson["data"]=values
	if suggestion_enable:
		replyJson.update({"suggestion_enable":"True"})
	else:
		replyJson.update({"suggestion_enable":"False"})
	if values:
		replyJson["data"]=values
	chat_enable = chatEnable(chat_type,force_enable_flag = force_enable_flag)
	replyJson.update({"chatEnable":chat_enable})
	replyJson.update({"session_ended":session_ended})
	convoTime = datetime.datetime.now() 
	if note_flag is not False:
		input_statement = ""

	print("category --- problem category --------------- {}".format(category))

	pushUserDetailsToMongo(sessionId = sessionId, manager_role_band = manager_role_band)
	pushLastResponseInMongo(sessionId,replyVal,category,sub_bucket,query,count_reply,mongo_bucket,note_flag,chat_stage,ticket_number,session_ended)
	# pushLastResponseInMongo(sessionId,r = replyVal,c = category)
	pushConversationLogsToMongo(sessionId,convoTime,query,replyVal,user_name,cont_id,Notes)
	return replyJson
    price_change = est_perc_increase(ticker, algo_inputs)
    return price_change, current_price, historical_dataset


if __name__ == "__main__" and len(sys.argv) > 1 and sys.argv[1] == "auto":
    while True:
        d = datetime.datetime.now(pytz.timezone('US/Eastern'))
        try:
            print(d)
            if d.hour == 9 and d.minute == 30:
                market_clock = api.get_clock()
                if market_clock.is_open:
                    print('buying now')
                    stuff = opening_buys(["JNUG", "NUGT", "JDST", "DUST"])
                    print(f"info: {stuff}")
                else:
                    print('market is closed today')
                    send_mail(subject="Market closed today",
                              body="We are not performing any transactions")
                    time.sleep(60 * 60 * 24 - 60 * 5)
                    # sleep one day minus five minutes
            elif d.hour == 15 and d.minute == 58:
                print('liquidate')
                liquidate()
        except Exception as e:
            print(e)
            continue
        finally:
            time.sleep(60)
    filename = file_name_with_path.split("\\")[-1]
    attachment_file = open(file_name_with_path, "rb") 

    # Instance of MIMEBase and named as attachment
    attachment = MIMEBase('application', 'octet-stream') 

    # To change the payload into encoded form 
    attachment.set_payload((attachment_file).read()) 

    # Encode into base64 
    encoders.encode_base64(attachment) 

    #Add header to the attachment
    attachment.add_header('Content-Disposition', "attachment; filename= %s" % filename) 

    # Attach the instance 'p' to instance 'msg' 
    msg.attach(attachment) 
    return msg

if __name__ == '__main__':
    #importing for testing
    from send_mail import *
    import smtp_server_config as config

    receiver_mail = config.RECEIVER_EMAIL
    print(receiver_mail)
    subject = 'Python email'
    message = "Python Test Mail"
    attachments = ['price.xlsx']
    send_mail(receiver_mail, subject, message, attachments)
Beispiel #30
0
 def send(self):
     logger.info("send email to %s, subject: %s, message: %s" % (self.email, self.subject, self.message))
     from {{cookiecutter.project}}.rpc.message.email.django import send_mail
     return send_mail(self.subject, self.message, self.email)
if __name__ == "__main__":
    """
    MAIN
    """
    startTime = datetime.now()
    params = menu()
    if params[0]:
        account = params[0]
    date = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
    print '\n---------------------------------------'
    print "# SCRIPT STARTED at %s" % str(date)
    print '---------------------------------------'

    # Script startup mail notification -------
    html = html_mail_script_started(startTime)
    send_mail([], html)
    # ---------------------------------------

    # This procedure will collect the report records ----------------
    try:
        records = get_records(account)
    except Exception as e:
        send_mail('', "Billing Script: Unhandled Exception (%s)" % e)
        print "Billing Script: Unhandled Exception (%s)" % e
        sys.exit(444)
    # ---------------------------------------------------------------

    print "\n"
    print 48 * "-"
    print "# Creating CSV records"
    print 48 * "-"
Beispiel #32
0
def resend_confirmation():
    token = current_user.generate_confirmation_token()
    send_mail(current_user.email, '确认账户', 'auth/email/confirm', user=current_user, token=token)
    flash('已向您的邮箱新发送了一封确认邮件,请登录邮箱确认您的账户。')
    return redirect(url_for('main.index'))
Beispiel #33
0
def send(subject,body,recipient_list):
    body += MAIL_FOOT
	send_mail(subject,body,FROM_EMAIL,recipient_list)
Beispiel #34
0
        if l == '':
            continue
        tempip = IP(l)
        for x in tempip:
            wlist.append(x.strNormal())



if __name__ == "__main__":
    queues = {}
    wlist = []
    getWlist()
    rf()
    mail_content = []
    for key in queues.keys():
        cmds = ';'.join(queues[key][4:])
        content = "%s, hostname=%s, DeviceIP=%s, user logged from %s, command(s) is(are) %s" % (queues[key][0], queues[key][1], queues[key][2], queues[key][3], cmds )
        mail_content.append(content)
    mail_content = '\n\n'.join(mail_content)
    if mail_content == "":
        exit()
    f = open(FILE, 'w')
    f.write('')
    f.close()
    ADMIN_EMAIL = "*****@*****.**"
    SMTP_SUBJECT = "Some Subject"

    send_mail(mail_to=[ADMIN_EMAIL, ], mail_subject=SMTP_SUBJECT, mail_content=mail_content)


Beispiel #35
0
        loglist.append(line)
    f.close()
    return

def getWlist():
    f = open(WHITE_LIST, 'r')
    for lines in f:
        l = lines.rstrip()
        if l == '':
            continue
        tempip = IP(l)
        for x in tempip:
            wlist.append(x.strNormal())

if __name__ == '__main__':
    logs = []
    list = []
    mail_content = []
    getLogbuf(logs)
    if logs == []:
        exit()
    for l in logs:
        list.append(alert(l))
    save(list)
    if mail_content != []:
        send_mail(mail_to=[ADMIN_EMAIL,], mail_subject=SMTP_SUBJECT, mail_content='\n'.join(mail_content))
    f = open(LOG_FILE, 'w')
    f.write('')
    f.close()