コード例 #1
0
ファイル: user.py プロジェクト: Amir1Mohammad/Tarvij
def login():
    if request.method == "GET":
        if User.logged_in_user() is None:
            abort(403)
        elif User.logged_in_user() == "tecvest@1010":
            return render_template('admin_home.html')

        else:
            return render_template("enter_data.html")

    elif request.method == "POST":
        username = request.form['username']
        password = request.form['password']
        user_obj = User.query.filter_by(username=username).first_or_404()
        if user_obj.passwordhash != password:
            add_log(username, "Unsuccessful Try to login")
            abort(403)

        user_obj.login()
        add_log(username, "Login")
        if username == "tecvest@1010":
            return render_template('admin_home.html')
        else:
            return render_template("enter_data.html")
    else:

        abort(405)
コード例 #2
0
def createTask(number, sys_id, EXELA_QUEUE, title, task_description, impact,
               urgency, prio, company):

    url = HOST + '/api/now/table/u_incident_task'
    headers = {
        "Content_Type": "application/json",
        "Accept": "application/json"
    }

    u_error_type = TaskErrorType.get(prio, '')

    if not u_error_type:
        u_error_type = '4 - Low - Other'

    d = json.dumps({
        "assignment_group": EXELA_QUEUE,
        "u_incident": sys_id,
        "short_description": title,
        "description": task_description,
        "impact": impact,
        "urgency": urgency,
        "u_error_type": u_error_type,
        "company": company
    })

    response = requests.post(url, auth=(USR, PWD), headers=headers, data=d)

    if response.status_code == 400:
        log.add_log(number + ':task creation error')

    return response.json()['result']['sys_id']
コード例 #3
0
ファイル: OF.py プロジェクト: kowalma3/RPA_iAddress
def getCasesFromQueue(
):  #build list of tasks to be processed, first validation, if it is B2B request. If yes add to list, if not
    url = HOST + '/api/now/table/task?sysparm_query=' + 'assignment_group=' + ROBOT_GROUP + '^stateIN-6,1,2^numberSTARTSWITHOCRITM^short_descriptionLIKEiAddress'  ###check URL
    response = getDataFromOpusFlow(url)
    lista = list()

    if response != '':
        temp = response.get('result', None)
        if temp:
            for element in temp:
                if "Request for new B2B e-invoice routing to iAddress" in element.get(
                        'short_description'):
                    lista.append(element.get('sys_id', None))
                    assignToRoger(element.get('sys_id', None))
                else:
                    #oddaj do CS, z informacja, ze to nie jest
                    message = returnToCS(
                        element.get('sys_id', None),
                        'Based on short description, this is not B2B routing request',
                        0)
                    if message == 'ERROR':
                        #zaloguj ze nie mozesz oddac do CS, a to nie jest request B2B
                        log.add_log(
                            element.get('sys_id', None) + ':' +
                            element.get('number', None) +
                            ':: this is not B2B reques, problem with returning it to CS'
                        )
        return lista
    else:
        return lista
コード例 #4
0
def create_log(dbo, user, mid, logcode = "UK00", message = ""):
    """
    Creates a log message related to media
    mid: The media ID
    logcode: The fixed code for reports to use - 
        ES01 = Document signing request
        ES02 = Document signed
    message: Some human readable text to accompany the code
    """
    m = dbo.first_row(get_media_by_id(dbo, mid))
    if m is None: return
    logtypeid = configuration.generate_document_log_type(dbo)
    log.add_log(dbo, user, get_log_from_media_type(m.LINKTYPEID), m.LINKID, logtypeid, "%s:%s:%s - %s" % (logcode, m.ID, message, m.MEDIANOTES))
コード例 #5
0
ファイル: logview.py プロジェクト: genekogan/LoggerOld
def html_mass_edit(backlog_text = None, action = None):
	html = '''<style>
		#backlog {
			background-color:#FFF;
			border:4px solid #5599DD;
			margin:10px;
			margin-top:16px;
			padding:3px;
		}
		#massedit {
			margin:10px;
			margin-top:32px;
		}
	</style>'''
	if backlog_text is not None:
		html += '<table id="backlog" width="96%" border=1 style="margin:32px">'
		html += '<tr><td width="8%"><b>category</b></td><td width="60%"><b>log</b></td><td width="16%"><b>time</b></td><td width="16%"><b>location</b></td></tr>'
		backlog_lines = backlog_text.split('\n')
		for l in backlog_lines:
			logstring = re.compile('^log ').split(l)[-1]
			(logstring, time0, gps, category) = log.process_log_string(logstring, 'log', False)
			print gps
			if gps[0] is None:	location = '<font color="#FF0000">none</font>'
			else:				location = '%0.3f, %0.3f' % gps
			html += '<tr><td>'+category+'</td><td>'+logstring+'</td><td>'+time0+'</td><td>'+location+'</td></tr>'
			if action=='addtolog':	
				log.add_log(logstring, time0, gps, category)
		html += '</table><p>'
	if action != 'addtolog':
		last_log = util.query_db('SELECT rowid, time, log FROM events ORDER BY time DESC LIMIT 1')
		html += '<p><div id="massedit">'
		for l in last_log:	html += '<br>&nbsp;&nbsp;&nbsp;'+str(l[0])+' ('+l[1][:-3]+')  ::  '+l[2]
		html += '''<form name="editor" action="" method="post">
		<textarea id="backlog" name="backlog" cols=110 rows=30 maxlength=2500>'''
		if backlog_text is not None:
			html += backlog_text
		html += '''</textarea><p/>
		<select name="action">
			<option value="validate">validate</option>
			<option value="addtolog">add to log</option>
		</select>
		<input type="submit" value="Submit">&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button" value="Save" id="save">
		<a href="javascript:removeLimit();">[remove limit]</a>
		</form>
		</div>
		'''
	else:
		html += '<p><a href="/">back</a>'
	return html
コード例 #6
0
def main():

    worknotes = ''
    logs = ''

    lista = getDataFromQueue()
    for element in lista:

        number = element.get('number', '')
        sys_id = element.get('sys_id', '')
        title = element.get('short_description', '')
        description = element.get('description', '')
        impact = element.get('impact', '')
        urgency = element.get('urgency', '')
        prio = element.get('priority', '')
        company = element.get('company', '').get('value', '')  ##
        print(number)

        workInProgress(sys_id)
        if log.exists(number):
            returnToCS(sys_id, CS_SE_QUEUE,
                       "Hi,this ticket was processed before, please check.")
            continue

        if title:
            translate_title = MS_translate(title)
        else:
            translate_title = title

        if description:
            translate_description = MS_translate(description)
        else:
            translate_description = description

        if translate_title == 'ERROR' or translate_description == 'ERROR':
            returnToCS(sys_id, "Translation problem, please hadle manually.")
            log.add_log(number + ':translation ERROR')

        task_description = createDescription(translate_title,
                                             translate_description)
        task_id = createTask(number, sys_id, EXELA_QUEUE, title,
                             task_description, impact, urgency, prio, company)

        copyAttachments(sys_id, task_id)
        returnAsAwaiting3rdParty(sys_id, CS_SE_QUEUE)

        log.add_log(number + ':' + sys_id + ':' + ':processed')
        sleep(10)
コード例 #7
0
def results():
    log = add_log()
    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    if request.method == 'GET':
        if session['is_admin'] == False:
            if session['only_results'] == True:
                log.info(f'Użytkowanik {session} wyświetlił wyniki')
                every_results = prepare_data_with_every_answers()
                context = {'results': every_results}
                print(session)
                return render_template('only_results.html', **context)

            else:
                user = session['user']
                log.warning(
                    f'Użytkowanik {user} próbował się dostać do bazy wyników')
                print(session)
                return redirect('/ankieta')

        elif session['is_admin'] == True:
            every_results = prepare_data_with_every_answers()
            context = {'results': every_results}
            log.info(f'Wszytskie results obliczeń: {every_results}')
            print(session)
            return render_template('results.html', **context)

        return redirect('/login')
コード例 #8
0
def pin_verify():
    log = add_log()
    if request.method == 'GET':
        message_pin = get_flashed_messages()
        return render_template('pin.html', message_pin=message_pin)

    if request.method == 'POST':
        conn = connect()
        c = conn.cursor()

        pin = request.form['check']
        log.info(f'Wpisano PIN {pin}')
        # print('pin: ', pin)

        query_pin = """
                        SELECT password FROM "pin" WHERE id = ?;
                        """
        id_pin = 1
        c.execute(query_pin, (id_pin,))
        line_from_base = c.fetchone()
        # print('pin:', line_from_base)

        if line_from_base:
            pin_hash = line_from_base['password']
            if check_password_hash(pin_hash, pin):
                session['pin'] = True
                log.info(f'PIN jest poprawny')
                return redirect('/register')

        flash('Błędny PIN')
        return redirect('/pin')
コード例 #9
0
ファイル: person.py プロジェクト: MoriEdan/sheltermanager
def send_email_from_form(dbo, username, data):
    """
    Sends an email to a person from a posted form. Attaches it as
    a log entry if specified.
    """
    emailfrom = utils.df_ks(data, "from")
    emailto = utils.df_ks(data, "to")
    emailcc = utils.df_ks(data, "cc")
    subject = utils.df_ks(data, "subject")
    ishtml = utils.df_kc(data, "html")
    addtolog = utils.df_kc(data, "addtolog")
    logtype = utils.df_ki(data, "logtype")
    body = utils.df_ks(data, "body")
    utils.send_email(dbo, emailfrom, emailto, emailcc, subject, body, ishtml == 1 and "html" or "plain")
    if addtolog == 1:
        log.add_log(dbo, username, log.PERSON, utils.df_ki(data, "personid"), logtype, body)
コード例 #10
0
def delete():
    lg = add_log()
    if not session:

        lg.warning('Brak sesji')

        return redirect('/login')

    if session['is_admin'] == False:
        user = session['user']

        lg.warning(f'Użytkownik {user} próbował usunąć pytanie  ')

        return redirect('/ankieta')

    conn = connect()
    c = conn.cursor()

    query = """
        DELETE FROM "questions" WHERE id = ?;
        """
    delate_question = request.args.get('id')
    # print(delate_question)

    c.execute(query, (delate_question, ))

    conn.commit()
    conn.close()

    lg.info(f'Usunięcie pytania z bazy o numerze id: {delate_question}')

    return redirect('/baza')
コード例 #11
0
def create_admin():
    lg = add_log()
    conn = sqlite3.connect('questionDataBase.db')
    c = conn.cursor()

    query = """
    INSERT INTO "login" ("id", "user", "password", "admin") 
    VALUES (NULL, ?, ?, ?)"""

    login = input('Wpisz login: '******'Wpisz hasło: ')

    password_hash = generate_password_hash(password)
    # print('Login: '******'Haslo: ', password)
    admin = 1
    # admin = input('Czy użytkownik ma mieć uprawnienia "Admin" [T lub N]: ')
    # if admin == 'T' or 't':
    #     admin = 'true'
    # else:
    #     admin = 'false'
    c.execute(query, (login, password_hash, admin))
    conn.commit()
    conn.close()
    lg.debug(
        f'Stworzenie konta admina o loginie: {login} i haśle: {password_hash}')
    return
コード例 #12
0
def logout():
    log = add_log()
    session.clear()

    log.warning('Wylogowanie')

    return redirect('/')
コード例 #13
0
ファイル: lostfound.py プロジェクト: magul/asm3
def send_email_from_form(dbo, username, post):
    """
    Sends an email to a lost/found person from a posted form. Attaches it as
    a log entry if specified.
    """
    emailfrom = post["from"]
    emailto = post["to"]
    emailcc = post["cc"]
    subject = post["subject"]
    ishtml = post.boolean("html")
    addtolog = post.boolean("addtolog")
    logtype = post.integer("logtype")
    body = post["body"]
    rv = utils.send_email(dbo, emailfrom, emailto, emailcc, subject, body, ishtml == 1 and "html" or "plain")
    if addtolog == 1:
        log.add_log(dbo, username, post["lfmode"] == "lost" and log.LOSTANIMAL or log.FOUNDANIMAL, post.integer("lfid"), logtype, body)
    return rv
コード例 #14
0
ファイル: person.py プロジェクト: MoriEdan/sheltermanager
def send_email_from_form(dbo, username, data):
    """
    Sends an email to a person from a posted form. Attaches it as
    a log entry if specified.
    """
    emailfrom = utils.df_ks(data, "from")
    emailto = utils.df_ks(data, "to")
    emailcc = utils.df_ks(data, "cc")
    subject = utils.df_ks(data, "subject")
    ishtml = utils.df_kc(data, "html")
    addtolog = utils.df_kc(data, "addtolog")
    logtype = utils.df_ki(data, "logtype")
    body = utils.df_ks(data, "body")
    utils.send_email(dbo, emailfrom, emailto, emailcc, subject, body,
                     ishtml == 1 and "html" or "plain")
    if addtolog == 1:
        log.add_log(dbo, username, log.PERSON, utils.df_ki(data, "personid"),
                    logtype, body)
コード例 #15
0
def log_in():
    log = add_log()

    if request.method == 'GET':
        messages = get_flashed_messages()
        return render_template('log_in.html', messages=messages)

    if request.method == 'POST':

        username = request.form['username']
        password = request.form['password']

        conn = connect()
        c = conn.cursor()
        # print('user: '******'password: '******'passwords:', password, line_from_base)
        only_results = ['codeme', 'alek']

        if line_from_base:
            password_hash = line_from_base['password']
            if check_password_hash(password_hash, password):
                print(session)
                log.info(f'poprawne logowanie user: {username}')

                session['user_id'] = line_from_base['id']
                session['user'] = line_from_base['user']
                session['is_admin'] = bool(line_from_base['admin'])

                if username in only_results:
                    session['is_admin'] = False
                    session['only_results'] = True
                    session['pin'] = False
                    return redirect('/wyniki')

                if line_from_base['admin']:
                    log.info(f'konto admina: {username}')
                    session['only_results'] = False
                    return redirect('/dodaj')

                else:
                    user = session['user']
                    session['only_results'] = False
                    log.info(f'konto użytkownika: {user}')

                    return redirect('/ankieta')

        flash('Błędna nazwa użytkownika lub hasło')

        log.warning(f'Błedna nazwa użytkownika "{username}" lub hasło "{password}"')

        return redirect('/login')
コード例 #16
0
ファイル: lostfound.py プロジェクト: rutaq/asm3
def send_email_from_form(dbo, username, post):
    """
    Sends an email to a lost/found person from a posted form. Attaches it as
    a log entry if specified.
    """
    emailfrom = post["from"]
    emailto = post["to"]
    emailcc = post["cc"]
    emailbcc = post["bcc"]
    subject = post["subject"]
    ishtml = post.boolean("html")
    addtolog = post.boolean("addtolog")
    logtype = post.integer("logtype")
    body = post["body"]
    rv = utils.send_email(dbo, emailfrom, emailto, emailcc, emailbcc, subject, body, ishtml == 1 and "html" or "plain")
    if addtolog == 1:
        log.add_log(dbo, username, post["lfmode"] == "lost" and log.LOSTANIMAL or log.FOUNDANIMAL, post.integer("lfid"), logtype, body)
    return rv
コード例 #17
0
def register():
    log = add_log()
    print(session)

    if request.method == 'GET':

        if session:
            if not session['pin']:
                session.clear()
                return redirect('/login')

            if session['pin']:
                validator = get_flashed_messages()
                double_user = get_flashed_messages()
                return render_template('register_user.html',
                                       validator=validator,
                                       double_user=double_user)

        return redirect('/login')

    if request.method == 'POST':

        username = request.form['username']
        password = request.form['password']
        password2 = request.form['password2']
        log.info('Wprowadzono wszytskie dane do formularza')
        # print('user: '******'password: '******'pasword2: ', password2)

        if password == password2:
            log.info('Walidacja hasła przebiegła pomyślnie')
            conn = connect()
            c = conn.cursor()

            password_hash = generate_password_hash(password)
            isn_admin = 0
            query = """
                        INSERT INTO "login" ("id", "user", "password", "admin") VALUES (NULL, ?, ?, ?);"""

            try:
                c.execute(query, (username, password_hash, isn_admin))

            except sqlite3.IntegrityError:
                double_user = flash('Ten login już istnije')
                log.warning('Ten login już istnieje w bazie')
                return redirect('/register')

            conn.commit()
            # print('dane:', username, password)
            log.info('Prawidłowa rejestracja użytkowanika')
            return redirect('/login')

        else:
            flash('Wpisane hasła nie są identyczne')
            log.warning('Wpisane hasła nie są identyczne')
            return redirect('/register')
コード例 #18
0
def verify_number_of_every_questions():
    conn = connect()
    c = conn.cursor()
    log = add_log()
    query = """
    SELECT id, question FROM "questions";
    """
    c.execute(query)
    list_of_id = c.fetchall()

    log.info('Sprawdznie ilości wszystkich pytań')

    return list_of_id
コード例 #19
0
def add():
    lg = add_log()
    if not session:
        lg.warning('Brak sesji')

        return redirect('/login')

    if session['is_admin'] == False:
        user = session['user']

        lg.info(f'Konto użytkowanika: {user}')

        return redirect('/ankieta')

    if request.method == 'GET':
        if session['is_admin'] == True:
            # session.pop('_flashes', None)
            added = get_flashed_messages()
            return render_template('input_question.html', added=added)

    if request.method == 'POST':

        conn = connect()
        c = conn.cursor()

        question = request.form['question']

        lg.info(f'Dodano pytanie: "{question}" do bazy danych')

        author = session['user_id']
        user = session['user']

        # print(type(question))

        if question == '':
            lg.warning(f'{user} próbował wprowdzić buste pytanie')

            return redirect('/dodaj')

        add_question = """
        INSERT INTO "questions" ("id", "id_user", "question", "type") VALUES (NULL, ?, ?,'tn')"""

        parameters = (author, question)
        # print(parameters)

        c.execute(add_question, parameters)
        conn.commit()
        flash('Pytanie zapisano w bazie')

        return redirect('/dodaj')
コード例 #20
0
def execute_script_sql(database='questionDataBase.db',
                       script='data_sql_creating.sql'):
    lg = add_log()
    conn = sqlite3.connect(database)
    c = conn.cursor()
    with open(script, encoding='utf-8') as f:
        query = f.read()
    c.executescript(query)
    conn.commit()
    conn.close()
    lg.debug(
        f'Stworzenie bazy danych o nazwie: {database} przy użyciu skryptu: {script}'
    )
    return
コード例 #21
0
def id_question_whith_answer():
    conn = connect()
    c = conn.cursor()
    log = add_log()

    log.info('Sprawdzenie listy id pytań z odpowiedziami')

    query_one = """
    SELECT id_question FROM "answers" GROUP BY id_question;
    """
    c.execute(query_one)
    list_of_id_question = c.fetchall()
    # print(list_of_id_question)

    return list_of_id_question
コード例 #22
0
def answers_of_question(id_question):
    conn = connect()
    c = conn.cursor()
    log = add_log()

    query_two = """
    SELECT id_question, answer, question FROM "answers" WHERE id_question = ?;"""
    # INNER JOIN "questions" ON answers.id_question = questions.id WHERE id_question = ?;"""

    c.execute(query_two, (id_question, ))
    answers_in_data = c.fetchall()
    # print(answers_in_data)

    log.info(f'Pobranie odpowiedzi do pytania: {id_question}')

    return answers_in_data
コード例 #23
0
def verify_questions_without_answer(
        list_of_answers=id_question_whith_answer(),
        list_of_every_questions=verify_number_of_every_questions()):
    log = add_log()
    log.warning('sprawdzenie pytań bez odpowiedzi')

    for i in list_of_answers:
        # print(i)
        # print(list_of_answers)
        for element in list_of_every_questions:
            # print(element)
            if i[0] == element[0]:
                list_of_every_questions.remove(element)
    # print('lista do dodania: ', list_of_every_questions)

    return list_of_every_questions
コード例 #24
0
def create_pin_for_users():
    lg = add_log()
    conn = sqlite3.connect('questionDataBase.db')
    c = conn.cursor()

    query = """
    INSERT INTO "pin" ("id", "password") 
    VALUES (NULL, ?)"""

    pin = input('Wpisz pin: ')

    pin_hash = generate_password_hash(pin)
    # print('pin: ', pin_hash)
    c.execute(query, (pin_hash, ))
    conn.commit()
    conn.close()
    lg.debug(f'Tworzę pin do rejestracji użytkowników: {pin}')
    return
コード例 #25
0
def add_to_results_questions_without_answer(
        list_without_answers=verify_questions_without_answer()):
    results = []
    log = add_log()
    for question in list_without_answers:
        id_question = question[0]
        question = question[1]
        result_no_answer = {
            'id_question': id_question,
            'question': question,
            'answer_yes': '0,00 %',
            'answer_no': '0,00 %'
        }
        results.append(result_no_answer)

        log.warning(
            f'Dodanie do wyników pytania bez odpowiedzi: {result_no_answer}')
    # print(results)
    return results
コード例 #26
0
def index():
    log = add_log()

    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    if session['is_admin'] == False:
        log.info('Konto użytkownika')

        return redirect('ankieta')

    log.info('Konto admina')

    id = session.get('user_id')
    user = session.get('user')
    is_admin = session.get('is_admin')
    # print('id: ', id, 'user: '******'is admin: ', is_admin)

    return redirect('/dodaj')
コード例 #27
0
def count_answers(answers_y_or_no):
    log = add_log()
    answer_yes, answer_no = 0, 0
    for id_question, answer, question in answers_y_or_no:
        if answer == 'T':
            answer_yes += 1
        if answer == 'N':
            answer_no += 1
        question = question
        every_answer = answer_yes + answer_no
    result_y_n = {
        'id_question': id_question,
        'question': question,
        'answer_yes': answer_yes,
        'answer_no': answer_no,
        'every_answer': every_answer
    }
    # print(result_y_n)

    log.info(f'Policzenie odpowiedzi dla {result_y_n}')

    return result_y_n
コード例 #28
0
def data():
    log = add_log()
    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    conn = connect()
    c = conn.cursor()

    query = """
    SELECT id, question FROM "questions";
    """
    c.execute(query)
    questions = c.fetchall()
    # print(questions)

    dict = {}

    for x in questions:
        # print(x)
        add_to_dict = {x[0]: x[1]}
        dict.update(add_to_dict)
    # print(dict)

    context = {'questions': dict}

    if session['is_admin'] == True:

        log.info('Konto admin')

        return render_template('data.html', **context)
    else:
        user = session['user']

        log.warning(f'Użytkowanik {user} próbował się dostać do bazy pytań')

        return redirect('/ankieta')
コード例 #29
0
def percentage_share(i):
    log = add_log()
    sum_of_question = i['answer_yes'] + i['answer_no']
    answer_yes = (i['answer_yes'] / sum_of_question) * 100
    answer_yes = f'{answer_yes:.2f} %'
    answer_yes = answer_yes.replace('.', ',')
    id_question = i['id_question']
    answer_no = (i['answer_no'] / sum_of_question) * 100
    answer_no = f'{answer_no:.2f} %'
    answer_no = answer_no.replace('.', ',')
    question = i['question']
    every_answer = i['every_answer']
    result_percent = {
        'id_pytania': id_question,
        'question': question,
        'answer_yes': answer_yes,
        'answer_no': answer_no,
        'every_answer': every_answer
    }

    log.info(f'Dokonuję obliczeń procentowych: {result_percent}')

    return result_percent
コード例 #30
0
ファイル: social.py プロジェクト: MoriEdan/sheltermanager
        req, hdr, response = utils.post_multipart(
            fb_url,
            (("message", utils.decode_html(posttext).encode("utf-8")), ),
            (("source", "pic.jpg", imagedata), ))
        al.debug("FB response: %s" % response, "social.post_animal_facebook",
                 dbo)

        # If the option is on and all was ok, make a note in the log
        if configuration.facebook_log(dbo):
            al.debug(
                "FB writing entry to animal log: %s %s" %
                (a["SHELTERCODE"], a["ANIMALNAME"]),
                "social.post_animal_facebook", dbo)
            log.add_log(
                dbo, user, log.ANIMAL, utils.cint(oauth_state[1:]),
                configuration.facebook_log_type(dbo),
                _("{0} {1}: posted to Facebook page {2} by {3}",
                  l).format(a["SHELTERCODE"], a["ANIMALNAME"], page_name,
                            user))

    except urllib2.HTTPError, herr:
        em = str(herr.read())
        al.error("Failed posting photo to facebook: %s" % em,
                 "social.post_animal_facebook", dbo, sys.exc_info())
        raise utils.ASMValidationError(
            "Failed posting photo and details to Facebook (http).")
    except Exception, err:
        em = str(err)
        al.error("Failed posting photo to facebook: %s" % em,
                 "social.post_animal_facebook", dbo, sys.exc_info())
        raise utils.ASMValidationError(
            "Failed posting photo and details to Facebook.")
コード例 #31
0
def form():
    log = add_log()

    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    if session:
        if session['only_results']:
            session.clear()
            return redirect('/')

        elif session['is_admin'] == False:

            if request.method == 'GET':
                conn = connect()
                c = conn.cursor()

                question = """
                    SELECT id, question FROM "questions";
                    """
                c.execute(question)
                questions = c.fetchall()
                # print(questions)

                dictionary = {}
                for x in questions:
                    # print(x)
                    add_to_dict = {x[0]: x[1]}
                    dictionary.update(add_to_dict)
                # print(dictionary)

                log.info(f'Prezentuję formulrz z pytaniami: {dictionary}')

                context = {'questions': dictionary}

                return render_template('form_for_user.html', **context)

            if request.method == 'POST':
                conn = connect()
                c = conn.cursor()

                answers = dict(
                    (key,
                     request.form.getlist(key) if len(request.form.getlist(
                         key)) > 1 else request.form.getlist(key)[0])
                    for key in request.form.keys())

                # print(answers)
                log.info(f'Przechwytywanie odpowiedzi formularza: {answers}')

                answers_dict = {}
                for k, v in answers.items():
                    id = k.strip(' answer')
                    odp = v[-1]
                    answers_dict[id] = odp
                # print(answers_dict)

                log.info(f'Tworzenie słownika z odpowiedziami: {answers_dict}')

                for key, volume in answers_dict.items():
                    add_answers_to_data = """
                            INSERT INTO "answers" ("id", "id_user", "id_question", "question", "answer", "is_answer") VALUES (NULL, ?, ?, ?, ?, ?);
                            """
                    id_user = session.get('user_id')
                    id_question = key

                    query = """
                                SELECT question FROM "questions" WHERE id = ?;
                                """
                    c.execute(query, (id_question, ))
                    answer_to_the_question = c.fetchone()
                    print(list(answer_to_the_question))
                    question = answer_to_the_question[0]
                    print(question)
                    answer = volume
                    is_answer = 1
                    # print(add_answers_to_data)

                    try:
                        c.execute(add_answers_to_data,
                                  (id_user, id_question, question, answer,
                                   is_answer))
                        log.info('Zapisanie odpowedzi do bazy danych')
                        conn.commit()

                    except sqlite3.OperationalError:
                        conn.close()

                        log.warning(
                            'SQLite3 zwrócił błąd: OperationalError i nastąpiło przekierowanie do /ankieta'
                        )

                        return redirect('/ankieta')

                    except sqlite3.IntegrityError:

                        log.warning(
                            'SQLite3 zwrócił błąd: IntegrityError i nastąpiło przekierowanie do strony startowej'
                        )

                        redirect('/')

                session.clear()

                log.info(
                    'Nastąpiło wypełnineie ankiety oraz prawidłowy zapis w bazie danych'
                )

                return render_template('thank_you.html')
コード例 #32
0
ファイル: social.py プロジェクト: MoriEdan/sheltermanager
    template = configuration.facebook_template(dbo)
    posttext = wordprocessor.substitute_tags(template, tags, False, "$$", "$$")

    # Post on the wall
    try:

        l = dbo.locale
        fb_url = "https://graph.facebook.com/%s/photos?access_token=%s" % (post_to, access_token)
        al.debug("FB posting photo and text '%s' to '%s' at %s" % (posttext, page_name, fb_url), "social.post_animal_facebook", dbo)
        imagedata = dbfs.get_string(dbo, a["WEBSITEMEDIANAME"])
        req, hdr, response = utils.post_multipart(fb_url, ( ("message", utils.decode_html(posttext).encode("utf-8")),), ( ("source", "pic.jpg", imagedata), ))
        al.debug("FB response: %s" % response, "social.post_animal_facebook", dbo)

        # If the option is on and all was ok, make a note in the log
        if configuration.facebook_log(dbo):
            al.debug("FB writing entry to animal log: %s %s" % (a["SHELTERCODE"], a["ANIMALNAME"]), "social.post_animal_facebook", dbo)
            log.add_log(dbo, user, log.ANIMAL, utils.cint(oauth_state[1:]), configuration.facebook_log_type(dbo),
                _("{0} {1}: posted to Facebook page {2} by {3}", l).format(a["SHELTERCODE"], a["ANIMALNAME"], page_name, 
                user))

    except urllib2.HTTPError,herr:
        em = str(herr.read())
        al.error("Failed posting photo to facebook: %s" % em, "social.post_animal_facebook", dbo, sys.exc_info())
        raise utils.ASMValidationError("Failed posting photo and details to Facebook (http).")
    except Exception,err:
        em = str(err)
        al.error("Failed posting photo to facebook: %s" % em, "social.post_animal_facebook", dbo, sys.exc_info())
        raise utils.ASMValidationError("Failed posting photo and details to Facebook.")


コード例 #33
0
ファイル: mobile.py プロジェクト: MoriEdan/sheltermanager
def handler(dbo, user, post):
    """
    Handles posts from the frontend. Depending on the type we either
    return more HTML for the javascript to inject, or GO URL to have
    the controller redirect to URL
    """
    l = dbo.locale
    homelink = "<a href='mobile' class='ui-btn-right' data-icon='home' data-theme='b'>%s</a>" % _(
        "Home", l)
    mode = post["posttype"]
    pid = post.integer("id")
    animalid = post.integer("animalid")

    if mode == "vacc":
        # We're vaccinating an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_vaccination_today(dbo, user, pid)
        return jqm_page_header("", _("Vaccination Given", l), homelink) + \
            jqm_p(_("Vaccination marked as given for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"])) + \
            jqm_button("mobile#vacc", _("More Vaccinations", l), "", "false") + \
            jqm_page_footer()

    if mode == "test":
        # We're performing a test on an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_test_today(dbo, user, pid, post.integer("resultid"))
        return jqm_page_header("", _("Test Performed", l), homelink) + \
            jqm_p(_("Test marked as performed for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"])) + \
            jqm_button("mobile#test", _("More Tests", l), "", "false") + \
            jqm_page_footer()

    elif mode == "med":
        # We're treating an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_treatment_today(dbo, user, pid)
        return jqm_page_header("", _("Treatment Given", l), homelink) + \
            jqm_p(_("Treatment marked as given for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"])) + \
            jqm_button("mobile#med", _("More Medications", l), "", "false") + \
            jqm_page_footer()

    elif mode == "dia":
        # We're completing a diary task
        d = diary.get_diary(dbo, pid)
        if post["on"] == "0":
            diary.complete_diary_note(dbo, user, pid)
            return jqm_page_header("", _("Completed", l), homelink) + \
                jqm_p(_("Diary note {0} marked completed", l).format(d["SUBJECT"])) + \
                jqm_button("mobile#diary", _("More diary notes", l), "", "false") + \
                jqm_page_footer()
        else:
            diary.rediarise_diary_note(dbo, user, pid, post.date("on"))
            return jqm_page_header("", _("Rediarised", l), homelink) + \
                jqm_p(_("Diary note {0} rediarised for {1}", l).format(d["SUBJECT"], post["on"])) + \
                jqm_button("mobile#diary", _("More diary notes", l), "", "false") + \
                jqm_page_footer()

    elif mode == "dianew":
        # We're adding a diary note
        diary.insert_diary(dbo, user, 0, 0, post.date("diarydate"),
                           post["diaryfor"], post["subject"], post["note"])
        return "GO mobile"

    elif mode == "message":
        # We're adding a message
        lookups.add_message(dbo, user, post.boolean("email"), post["message"],
                            post["forname"], post.integer("priority"),
                            post.date("expires"))
        return "GO mobile"

    elif mode == "log":
        # We're adding a log to an animal
        a = animal.get_animal(dbo, animalid)
        log.add_log(dbo, user, log.ANIMAL, animalid, post.integer("logtypeid"),
                    post["logtext"])
        return "GO mobile"

    elif mode == "hc":
        # We're marking an owner homechecked
        person.update_pass_homecheck(dbo, user, post.integer("personid"),
                                     post["comments"])
        return "GO mobile"

    elif mode == "vsa":
        # Return a list of the shelter animals
        h = []
        alin = []
        h.append(header(l))
        h.append(jqm_page_header("", _("Shelter Animals", l), homelink))
        an = animal.get_animal_find_simple(dbo, "", "all")
        for a in an:
            alin.append(
                jqm_listitem_link(
                    "mobile_post?posttype=va&id=%d" % a["ID"],
                    "%s - %s (%s %s %s) %s" %
                    (a["CODE"], a["ANIMALNAME"], a["SEXNAME"], a["BREEDNAME"],
                     a["SPECIESNAME"], a["IDENTICHIPNUMBER"]), "animal"))
        h.append(jqm_list("\n".join(alin), True))
        h.append(jqm_page_footer())
        h.append("</body></html>")
        return "\n".join(h)

    elif mode == "uai":
        # Upload an animal image
        media.attach_file_from_form(dbo, user, media.ANIMAL, animalid,
                                    post.data)
        return "GO mobile_post?posttype=va&id=%d&success=true" % animalid

    elif mode == "va":
        # Display a page containing the selected animal by id
        a = animal.get_animal(dbo, pid)
        af = additional.get_additional_fields(dbo, pid, "animal")
        return handler_viewanimal(l, a, af, homelink, post)
コード例 #34
0
ファイル: mainFlow.py プロジェクト: kowalma3/RPA_iAddress
def mainFlow():

    driver = DRIVER.start()

    lista = OF.getCasesFromQueue()  #create list of tasks

    if lista:

        temp = OF.checkLogs(lista)  #check remove previously processed task
        lista = temp
    else:
        print('no tasks in queue exit program')
        #exit() ##no tasks in queue exit program, czy to potrzebne?

    ###buduje liste slownikow do dalszej analizy
    ###tu tez moze byc oddany task do cs, z informacja
    ###albo zamkniety z infrmacja dla klienta, musi to byc zalogowane
    ###w tym momencie odbywa sie tez walidacja danych z taska
    main_lista = list()

    for ticket in lista:

        temp = OF.getDataFromTask(ticket)
        if temp != 'ERROR':
            main_lista.append(temp)

    ###ytj validation

    print('ilosc tixow przed ytj check:' + len(main_lista))

    temp = main_lista

    for ticket in main_lista:
        cn = ticket.get('company_name', '')
        bi = ticket.get('busines_id', '')
        bi.strip(' ')
        if bi:

            ytj_d = YTJ_Module.ytjCheck(driver, bi, cn)

        error = ytj_d.get('ytj_error', '')

        if error == 'OK':
            ticket.update({'ytj_name': ytj_d.get('ytj_company_name', '')})
        else:
            OF.informCustomer(ticket['sys_id'], '2')  #inform customer
            OF.returnToCS(
                ticket['sys_id'],
                ytj_d.get('ytj_error', '') +
                ' - please inform customer, scenario 2')  ##send to CS
            log.add_log(ticket['sys_id'] + ':' + ticket['number'] + ':' +
                        ytj_d.get('ytj_error', '') +
                        ':customer informed - scenario 2, ticket send to CS')
            temp.remove(ticket)

    main_lista = temp
    print('ilosc tixow po ytj check:' + len(main_lista))
    ###iAddress validation, and actions
    ###return to CS if OC routing, 2 enables, exist as requested
    ###create "Add new" list of dictionaries
    ###create "change existing" list of dict
    ###create "all disabled" list of dictionaries

    addNew = list()
    changeExisting = list()
    allDisabled = list()

    DRIVER.logToiAddress(driver)

    temp = main_lista

    for ticket in main_lista:
        bi = ticket.get('busines_id', '')
        bi.strip(' ')

        l = IADDRESS_Module.getData(bi, driver)

        if l == '':
            d = dict()
            d = ticket
            addNew.append(d)
            temp.remove(ticket)
            continue

        if ocRouting(l):
            OF.returnToCS(ticket['sys_id'],
                          'OC routing enabled')  ##poten przesylac do klienta
            log.add_log(ticket['sys_id'] + ':' + ticket['number'] + ':' +
                        'OC routing enabled')
            temp.remove(ticket)
            continue

        numberOfEnabled = twoRoutings(l)  ##count number of enabled routings
        if numberOfEnabled == 2:
            OF.returnToCS(ticket['sys_id'],
                          '2 routing enabled')  ##poten przesylac do klienta
            log.add_log(ticket['sys_id'] + ':' + ticket['number'] + ':' +
                        '2 routing enabled')
            temp.remove(ticket)
            continue
        if numberOfEnabled == 0:
            ###co potrzebne mi przy dodawaniu nowego situ ?
            d = dict()
            d = ticket
            d.update({'org_link': l[0].get('org_link', '')})
            allDisabled.append(d)
            temp.remove(ticket)
            continue

        d = dict()
        d = getData(l, ticket)
        if d:
            changeExisting.append(d)
            temp.remove(ticket)
            continue
        ###na koncu sprawdz co nigdzie nie wpadlo.

    main_lista = temp

    print("\n\n kompletnie nowe\n")
    print(addNew)
    if addNew:
        potwierdzenie = input("is it correct? y/n ")
        if potwierdzenie == 'y':

            ####funkcja w petli
            for element in addNew:
                link = AddNew.addNewOrg(driver, element.get('ytj_name'),
                                        element.get('number'))
                #operator = operator_number(element.get('operator'))
                operator = element.get('operator')
                AddNew.addNewSite(driver, link, operator,
                                  element.get('busines_id'),
                                  element.get('address_tbc'),
                                  element.get('number'))
                time.sleep(10)
                ##zalogowac
                log.add_log(element['sys_id'] + ':' + element['number'] + ':' +
                            'New routing has been added')
                OF.returnToCS(
                    element['sys_id'],
                    'New routing has been added, please inform customer')
                ##oddac do CS/ponformowac klienta

    print("\n\n do zmiany \n\n")
    print(changeExisting)

    if changeExisting:
        potwierdzenie = input("is it correct? y/n ")
        if potwierdzenie == 'y':
            for element in changeExisting:
                ##porownanie operatorow i addresow, czy w ogole wchodzic w funkcje, jak nie to wyjsc z logiem odpowiednim
                ##rozbicie, zmien operator, zmien address, zmien operator i adress z data??

                #decyzja o dacie
                if_date = data(element.get('date'))

                if if_date:
                    data_ = zmodyfikuj_date(element.get('date'))
                else:
                    data_ = ''

                if element.get('electronic_adr') == element.get(
                        'address_tbc') and element.get(
                            'lmc') == OPERATORS.op.get(
                                element.get('operator')):
                    log.add_log(element['sys_id'] + ':' + element['number'] +
                                ':' + 'Routing exist')
                    OF.returnToCS(element['sys_id'], 'Routing exist')
                    continue

                odp = ChangeExisting.changeSite(driver,
                                                element.get('site_link'),
                                                element.get('operator'),
                                                element.get('address_tbc'),
                                                data_, element.get('number'))
                time.sleep(10)
                if odp == 'OK':
                    log.add_log(element['sys_id'] + ':' + element['number'] +
                                ':' + 'Routing has been changed')
                    OF.returnToCS(
                        element['sys_id'],
                        'Routing has been changed, please inform customer')
                elif odp == 'ERROR':
                    log.add_log(element['sys_id'] + ':' + element['number'] +
                                ':' + '2 Receiving Identifiers please check')
                    OF.returnToCS(element['sys_id'],
                                  '2 Receiving Identifiers please check')

    print("\n\n wszystko disabled \n\n")
    print(allDisabled)

    if allDisabled:
        potwierdzenie = input("is it correct? y/n ")
        if potwierdzenie == 'y':
            for element in allDisabled:
                addSite.addNewSite(driver, element.get('site_link'),
                                   element.get('operator'),
                                   element.get('address_tbc'),
                                   element.get('number'))
                time.sleep(10)
                log.add_log(element['sys_id'] + ':' + element['number'] + ':' +
                            'Routing has been added')
                OF.returnToCS(
                    element['sys_id'],
                    'Routing has been changed, please inform customer')

    print("\n\nbez akcji \n\n")  #oddac do CS
    print(main_lista)

    if main_lista:
        print(
            'wywolaj jeszcze raz narazie, trzeba sprawdzic dlaczego wszystkie sie nie lapia do akcji!!!i i dopisz tieto'
        )
コード例 #35
0
ファイル: mobile.py プロジェクト: MoriEdan/sheltermanager
def handler(dbo, user, post):
    """
    Handles posts from the frontend. Depending on the type we either
    return more HTML for the javascript to inject, or GO URL to have
    the controller redirect to URL
    """
    l = dbo.locale
    homelink = "<a href='mobile' class='ui-btn-right' data-icon='home' data-theme='b'>%s</a>" % _("Home", l)
    mode = post["posttype"]
    pid = post.integer("id")
    animalid = post.integer("animalid")

    if mode == "vacc":
        # We're vaccinating an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_vaccination_today(dbo, user, pid)
        return (
            jqm_page_header("", _("Vaccination Given", l), homelink)
            + jqm_p(_("Vaccination marked as given for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"]))
            + jqm_button("mobile#vacc", _("More Vaccinations", l), "", "false")
            + jqm_page_footer()
        )

    if mode == "test":
        # We're performing a test on an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_test_today(dbo, user, pid, post.integer("resultid"))
        return (
            jqm_page_header("", _("Test Performed", l), homelink)
            + jqm_p(_("Test marked as performed for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"]))
            + jqm_button("mobile#test", _("More Tests", l), "", "false")
            + jqm_page_footer()
        )

    elif mode == "med":
        # We're treating an animal
        a = animal.get_animal(dbo, animalid)
        medical.update_treatment_today(dbo, user, pid)
        return (
            jqm_page_header("", _("Treatment Given", l), homelink)
            + jqm_p(_("Treatment marked as given for {0} - {1}", l).format(a["ANIMALNAME"], a["SHELTERCODE"]))
            + jqm_button("mobile#med", _("More Medications", l), "", "false")
            + jqm_page_footer()
        )

    elif mode == "dia":
        # We're completing a diary task
        d = diary.get_diary(dbo, pid)
        if post["on"] == "0":
            diary.complete_diary_note(dbo, user, pid)
            return (
                jqm_page_header("", _("Completed", l), homelink)
                + jqm_p(_("Diary note {0} marked completed", l).format(d["SUBJECT"]))
                + jqm_button("mobile#diary", _("More diary notes", l), "", "false")
                + jqm_page_footer()
            )
        else:
            diary.rediarise_diary_note(dbo, user, pid, post.date("on"))
            return (
                jqm_page_header("", _("Rediarised", l), homelink)
                + jqm_p(_("Diary note {0} rediarised for {1}", l).format(d["SUBJECT"], post["on"]))
                + jqm_button("mobile#diary", _("More diary notes", l), "", "false")
                + jqm_page_footer()
            )

    elif mode == "dianew":
        # We're adding a diary note
        diary.insert_diary(dbo, user, 0, 0, post.date("diarydate"), post["diaryfor"], post["subject"], post["note"])
        return "GO mobile"

    elif mode == "message":
        # We're adding a message
        lookups.add_message(
            dbo,
            user,
            post.boolean("email"),
            post["message"],
            post["forname"],
            post.integer("priority"),
            post.date("expires"),
        )
        return "GO mobile"

    elif mode == "log":
        # We're adding a log to an animal
        a = animal.get_animal(dbo, animalid)
        log.add_log(dbo, user, log.ANIMAL, animalid, post.integer("logtypeid"), post["logtext"])
        return "GO mobile"

    elif mode == "hc":
        # We're marking an owner homechecked
        person.update_pass_homecheck(dbo, user, post.integer("personid"), post["comments"])
        return "GO mobile"

    elif mode == "vsa":
        # Return a list of the shelter animals
        h = []
        alin = []
        h.append(header(l))
        h.append(jqm_page_header("", _("Shelter Animals", l), homelink))
        an = animal.get_animal_find_simple(dbo, "", "all")
        for a in an:
            alin.append(
                jqm_listitem_link(
                    "mobile_post?posttype=va&id=%d" % a["ID"],
                    "%s - %s (%s %s %s) %s"
                    % (
                        a["CODE"],
                        a["ANIMALNAME"],
                        a["SEXNAME"],
                        a["BREEDNAME"],
                        a["SPECIESNAME"],
                        a["IDENTICHIPNUMBER"],
                    ),
                    "animal",
                )
            )
        h.append(jqm_list("\n".join(alin), True))
        h.append(jqm_page_footer())
        h.append("</body></html>")
        return "\n".join(h)

    elif mode == "uai":
        # Upload an animal image
        media.attach_file_from_form(dbo, user, media.ANIMAL, animalid, post.data)
        return "GO mobile_post?posttype=va&id=%d&success=true" % animalid

    elif mode == "va":
        # Display a page containing the selected animal by id
        a = animal.get_animal(dbo, pid)
        af = additional.get_additional_fields(dbo, pid, "animal")
        return handler_viewanimal(l, a, af, homelink, post)