def list_department(): result = [] all_departments = session.query(ModelDepartment).all() for dept in all_departments: result.append({'id': dept.id, 'name': dept.name}) logger.write_file("DS Phòng ban", result) return result
def list_author(): result = [] all_authors = session.query(ModelAuthor).all() for author in all_authors: result.append({'id': author.id, 'name': author.name}) logger.write_file("DS Tác giả", result) return result
def find_employee(field, value): logger.write_file("Tìm nhân viên", f"Theo '{field}' với giá trị '{value}''") result = [] # ['name', 'title', 'id'] if field == 'name': all_employees = session.query(ModelEmployee).filter( ModelEmployee.name.like(f'%{value}%')).all() elif field == 'title': all_employees = session.query(ModelEmployee).filter( ModelEmployee.title.like(f'%{value}%')).all() elif field == 'id': all_employees = session.query(ModelEmployee).filter_by(id=value).all() for employee in all_employees: department = session.query(ModelDepartment).filter_by( id=employee.department_id).first() result.append({ 'id': employee.id, 'name': employee.name, 'title': employee.title, 'age': employee.age, 'address': employee.address, 'department': department.name }) return result
def add_new_employee(new_employee): print(f"Chọn phòng ban cho nhân viên {new_employee.name}") for item in list_department(): print(f"\t {item['id']}: {item['name']}") department_id = int(input("Select: ")) new_employee.department_id = department_id logger.write_file("Thêm Nhân viên", new_employee) session.add(new_employee) session.commit()
def add_new_book(new_book): print(f"Chọn tác giả cho sách {new_book.name}") for item in list_author(): print(f"\t {item['id']}: {item['name']}") author_id = int(input("Select: ")) new_book.author_id = author_id logger.write_file("Thêm Sách", new_book) session.add(new_book) session.commit()
def list_author_and_count_book(): result = [] all_authors = session.query(ModelAuthor).all() for author in all_authors: result.append({ 'id': author.id, 'name': author.name, 'count_book': author.books.count() }) logger.write_file("DS Tác giả với số Sách", result) return result
def adb_ui_voice_message(device, debug=False, log_file=os.path.join('log', 'log.csv')): device.open.notification() if device(text='New voicemail', className='android.widget.TextView').exists: if debug: print("Mensaje de voz encontrado") write_file(log_file, ['result'], {'result': "Mensaje de voz encontrado"}) else: if debug: print("No se encontro mensaje de voz") write_file(log_file, ['result'], {'result': "No se encontro mensaje de voz"}) device.press.home()
def list_department_and_count_employee(): result = [] all_departments = session.query(ModelDepartment).all() for dept in all_departments: result.append({ 'id': dept.id, 'name': dept.name, 'count_emp': dept.employees.count() }) logger.write_file("DS Phòng ban với số Nhân viên", result) return result
def list_book(): result = [] all_books = session.query(ModelBook).all() for book in all_books: author = session.query(ModelAuthor).filter_by( id=book.author_id).first() result.append({ 'id': book.id, 'name': book.name, 'category': book.category, 'price': book.price, 'author': author.name }) logger.write_file("DS Sach", result) return result
def list_employee(): result = [] all_employees = session.query(ModelEmployee).all() for employee in all_employees: department = session.query(ModelDepartment).filter_by( id=employee.department_id).first() result.append({ 'id': employee.id, 'name': employee.name, 'title': employee.title, 'age': employee.age, 'address': employee.address, 'department': department.name }) logger.write_file("DS Nhân viên", result) return result
def main(): log_file = os.path.join( 'log', str(datetime.now().strftime("%d%m%Y %H%M%S")) + '.csv') log_result = log_file[0:-4] + ' result.csv' create_file(log_result, ['result']) fieldnames = [ 'test', 'function', 'description', 'automated', 'parameters', 'expected result', 'begin', 'end' ] create_file(log_file, fieldnames) i = 0 print('inicio ' + str(datetime.now().strftime("%d/%m/%Y %H:%M:%S"))) for case in data: begin = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S")) if case['automated'] == 'True': try: print i print case['function'] if case['function'] == 'read_devices': test_read_devices(case, log_result) elif case['function'] == 'read_device': test_read_device(case, log_result) elif case['function'] == 'adb_call': test_adb_call(case, log_result) elif case['function'] == 'adb_ui_call': test_adb_ui_call(case, log_result) elif case['function'] == 'adb_ui_wifi': test_adb_ui_wifi(case, log_result) elif case['function'] == 'adb_ui_calculator': test_adb_ui_calculator(case, log_result) elif case['function'] == 'test_adb_ui_voice_message': test_adb_ui_voice_message(case, log_result) except Exception as ex: print ex else: write_file(log_result, ['result'], {'result': 'NA'}) end = str(datetime.now().strftime("%d/%m/%Y %H:%M:%S")) i += 1 test_number = str(i) while len(test_number) < 3: test_number = '0' + test_number case['test'] = 'TC' + test_number case['begin'] = begin case['end'] = end write_file(log_file, fieldnames, case) print('fin ' + str(datetime.now().strftime("%d/%m/%Y %H:%M:%S")))
def read_devices(debug=False, log_file=os.path.join('log', 'log.csv')): s = '' serials = [] output = check_output(['adb', 'devices']).splitlines() if len(output) == 2: if debug: write_file(log_file, ['result'], {'result': 'No se encontro ningun dispositivo'}) raise ValueError('No se encontro ningun dispositivo') for i in range(1, len(output) - 1): serials.append(output[i].split()[0]) if debug: s += 'Serial {} = {}'.format(i, serials[-1]) + '-' print('Serial {} = {}'.format(i, serials[-1])) if debug: write_file(log_file, ['result'], {'result': s}) return serials
def adb_ui_call(phone_number, seconds, device, debug=False, log_file=os.path.join('log', 'log.csv')): for i in range(len(phone_number)): if not (phone_number[i] in dict_keyboard_call): if debug: write_file(log_file, ['result'], {'result': 'Numero de telefono invalido'}) raise ValueError('Numero de telefono invalido') if len(phone_number) == 0: if debug: write_file(log_file, ['result'], {'result': 'Numero de telefono invalido'}) raise ValueError('Numero de telefono invalido') if debug: print ('Llamando a {}'.format(phone_number)) device(text='Phone', className='android.widget.TextView').click() device(text='Keypad', className='android.widget.TextView').click() for i in range(len(phone_number)): if phone_number[i] == '+': device(text='+', className='android.widget.TextView').long_click() else: device(resourceId='com.samsung.android.dialer:id/{}'.format(dict_keyboard_call[phone_number[i]])).click() device(resourceId='com.samsung.android.dialer:id/dialButton').click() time.sleep(seconds) if device(resourceId='com.samsung.android.incallui:id/disconnect_button').exists and debug: if debug: write_file(log_file, ['result'], {'result': "Llamada realizada exitosamente"}) print "Llamada realizada exitosamente" device(resourceId='com.samsung.android.incallui:id/disconnect_button').click() device.press.home()
def adb_ui_wifi(status, device, debug=False, log_file=os.path.join('log', 'log.csv')): if not (status in dict_ui_status): if debug: write_file(log_file, ['result'], {'result': "Valor de estatus invalido"}) raise ValueError('Valor de estatus invalido') device(text='Settings', className='android.widget.TextView').click() device(text='Connections', className='android.widget.TextView').click() device(text='Wi-Fi', className='android.widget.TextView').click() if device(text='Wi-Fi, {}'.format(dict_ui_status[status]), className='android.widget.Switch').exists: if debug: print ("Estatus de Wifi es {}".format(dict_ui_status[status])) device(text='Wi-Fi, {}'.format(dict_ui_status[status]), className='android.widget.Switch').click() if device(text='Wi-Fi, {}'.format(dict_ui_status[status ^ 1]), className='android.widget.Switch').exists \ and debug: write_file(log_file, ['result'], {'result': "Estatus de Wifi cambiado a {}".format(dict_ui_status[(status ^ 1)])}) print ("Estatus de Wifi cambiado a {}".format(dict_ui_status[(status ^ 1)])) else: if debug: write_file(log_file, ['result'], {'result': "Wifi se encuentra {0} - No es necesario Turn {0}".format( dict_ui_status[status ^ 1])}) device.press.home() raise ValueError("Wifi se encuentra {0} - No es necesario Turn {0}".format(dict_ui_status[status ^ 1])) device.press.home()
def adb_call(phone_number, seconds, serial, debug=False, log_file=os.path.join('log', 'log.csv')): for i in range(len(phone_number)): if not (phone_number[i] in dict_keyboard_call): if debug: write_file(log_file, ['result'], {'result': 'Numero de telefono invalido'}) raise ValueError('Numero de telefono invalido') if len(phone_number): if debug: write_file(log_file, ['result'], {'result': 'Numero de telefono invalido'}) raise ValueError('Numero de telefono invalido') if debug: print('Llamando a {}'.format(phone_number)) check_call([ 'adb', '-s', serial, 'shell', 'am', 'start', '-a', 'android.intent.action.CALL', '-d', 'tel:{}'.format(phone_number) ]) time.sleep(seconds) check_call( ['adb', '-s', serial, 'shell', 'input', 'keyevent', 'KEYCODE_ENDCALL']) check_call( ['adb', '-s', serial, 'shell', 'input', 'keyevent', 'KEYCODE_HOME']) if debug: print('Llamada realizada exitosamente a {}'.format(phone_number)) write_file(log_file, ['result'], { 'result': 'Llamada realizada exitosamente a {}'.format(phone_number) })
def find_book(field, value): logger.write_file("Tìm sách", f"Theo '{field}' với giá trị '{value}''") result = [] # ['name', 'category', 'id'] if field == 'name': found_book = session.query(ModelBook).filter( ModelBook.name.like(f'%{value}%')).all() elif field == 'category': found_book = session.query(ModelBook).filter_by(category=value).all() elif field == 'id': found_book = session.query(ModelBook).filter_by(id=value).all() for book in found_book: author = session.query(ModelAuthor).filter_by( id=book.author_id).first() result.append({ 'id': book.id, 'name': book.name, 'category': book.category, 'price': book.price, 'author': author.name }) return result
def request(flow: mitmproxy.http.HTTPFlow): """ The full HTTP request has been read. """ global log_file host = checker.check_host(flow) if host: if checker.check_TLS(flow): logger.write(log_file, \ "[TLS] " + flow.request.pretty_url) if "test.xxx" in flow.request.host: flow.kill() # csrf global access_token target = "fb_access_token=" if target in flow.request.pretty_url: if "longming" in flow.request.headers.keys(): # access_token = csrf.extract_code(flow, target) access_token = flow.request.pretty_url logger.write_info(log_file, "[TOKEN] " + access_token) assert access_token logger.write_file("RAM/access_token", access_token) flow.kill() else: l = os.listdir('RAM') while not l: time.sleep(1) l = os.listdir('RAM') logger.write_info( log_file, "[ORIGIN TOKEN] " + csrf.extract_code(flow, target)) with open('RAM/' + l[0], 'r+') as f: access_token = f.readlines()[0] logger.write_info(log_file, "[CHANGE TOKEN] " + access_token) assert access_token # assert csrf.csrf_request(flow, target, access_token) flow.request.url = access_token
def read_device(j=1, debug=False, log_file=os.path.join('log', 'log.csv')): i = int(j) if i < 1: if debug: write_file( log_file, ['result'], {'result': 'Valor invalido, i debe ser mayor a 1 y entero'}) raise ValueError('Valor invalido, i debe ser mayor a 0 y entero') if len(check_output(['adb', 'devices']).splitlines()) == 2: if debug: write_file(log_file, ['result'], {'result': 'No se encontro ningun dispositivo'}) raise ValueError('No se encontro ningun dispositivo') output = check_output(['adb', 'devices']).splitlines()[i] serial = output.split()[0] if debug: write_file(log_file, ['result'], {'result': 'Serial = {}'.format(serial)}) print('Serial = {}'.format(serial)) return serial
def adb_ui_calculator(operand1, operator, operand2, device, debug=False, log_file=os.path.join('log', 'log.csv')): if not (operator in set_operators): if debug: write_file(log_file, ['result'], {'result': 'Operador invalido'}) raise ValueError('Operador invalido') try: i = 1 _operand1 = float(operand1) i = 2 _operand2 = float(operand2) except Exception as ex: if debug: write_file(log_file, ['result'], {'result': 'El valor del operando {} no es valido'.format(i)}) raise ValueError('El valor del operando {} no es valido'.format(i)) if operator == '/' and _operand2 < 1e-6: if debug: write_file(log_file, ['result'], {'result': 'No se puede dividir entre 0'}) raise ValueError('No se puede dividir entre 0') device(text='Calculator', className='android.widget.TextView').click() str_operand1 = str(_operand1) str_operand2 = str(_operand2) negative = False for i in range(len(str_operand1)): if str_operand1[i] == '-': negative = True device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator['('])).click() device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator['-'])).click() else: device(text=str_operand1[i], className='android.widget.Button').click() if negative: device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator[')'])).click() device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator[operator])).click() negative = False for i in range(len(str_operand2)): if str_operand1[i] == '-': negative = True device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator['('])).click() device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator['-'])).click() else: device(text=str_operand2[i], className='android.widget.Button').click() if negative: device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator[')'])).click() device(resourceId='com.sec.android.app.popupcalculator:id/calc_keypad_btn_{}' .format(dict_keyboard_calculator['='])).click() if operator == '+': result = _operand1 + _operand2 elif operator == '-': result = _operand1 - _operand2 elif operator == '*': result = _operand1 * _operand2 elif operator == '/': result = _operand1 / _operand2 data = device(resourceId='com.sec.android.app.popupcalculator:id/calc_edt_formula').info text = data['text'].replace(u"\u2212", '-') str_ui_result = '' for i in range(len(text)): if text[i] != ',': str_ui_result += text[i] float_ui_result = float(str_ui_result) if abs(result - float_ui_result) < 1e-6 and debug: if debug: write_file(log_file, ['result'], {'result': "Resultado correcto de operacion"}) print "Resultado correcto de operacion" else: if debug: write_file(log_file, ['result'], {'result': "Resultado incorrecto"}) device.press.home() raise ValueError("Resultado incorrecto") device.press.home()
def add_new_department(new_department): logger.write_file("Thêm Phòng ban", new_department) session.add(new_department) session.commit()
def add_new_author(new_author): logger.write_file("Thêm Tác giả", new_author) session.add(new_author) session.commit()