Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | finish add pattern |
---|---|
Timelines: | family | ancestors | descendants | both | testing |
Files: | files | file ages | folders |
SHA1: |
f13acd25c6dc32635362755e731a3a76 |
User & Date: | zorro 2012-09-08 11:23:32.590 |
Context
2012-09-08
| ||
11:33 | change comments check-in: a055a3c430 user: zorro tags: testing | |
11:23 | finish add pattern check-in: f13acd25c6 user: zorro tags: testing | |
2012-09-06
| ||
18:08 | start add-function check-in: 8ed6cdeb7b user: zorro tags: testing | |
Changes
Changes to aside.py.
1 2 3 | #!/usr/bin/env python3 #-*- coding: utf-8 -*- | | | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python3 #-*- coding: utf-8 -*- import re, configparser, json, signal from urllib import request YANDEX_TRANSLATE_JSON = "http://translate.yandex.net/api/v1/tr.json/translate?lang=" TEST_CONNECT = "http://ya.ru/" def get_config_data(filename): result = {'database': None, 'defuser': None} config = configparser.ConfigParser() try: config.read(filename) result['database'] = config['database']['dbname'] |
︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 | # return [command, str_params] command = result.split(" ", 1) if len(command) == 1: command.append([]) return command def get_translate(for_translate, trans_type): result = False prepate_url = request.pathname2url(for_translate) trans_types = {'en': 'en-ru', 'ru': 'ru-en'} | > | > > > > > > > > > > > | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # return [command, str_params] command = result.split(" ", 1) if len(command) == 1: command.append([]) return command def get_translate(for_translate, trans_type): global YANDEX_TRANSLATE_JSON result = False prepate_url = request.pathname2url(for_translate) trans_types = {'en': 'en-ru', 'ru': 'ru-en'} prepate_url = YANDEX_TRANSLATE_JSON + trans_types[trans_type] + "&text=" + prepate_url try: conn = request.urlopen(prepate_url) except Exception as e: print("Not connection\nError:") print(e) return result if conn.status == 200: try: from_url = conn.read().decode('utf-8') result = json.loads(from_url) except Exception as e: print(e) conn.close() return result def get_test_connection(): global TEST_CONNECT try: conn = request.urlopen(TEST_CONNECT) result = True if conn.getcode() == 200 else False except Exception as e: print('Test connection False,', e) return False conn.close() return result |
Changes to condt.py.
︙ | ︙ | |||
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | class IncorrectDbData(Exception): pass class BaseConDict(object): """Base Console Dictionary class""" def __init__(self, name, dbfile): self.connect = sqlite3.connect(dbfile) self.name = name def __repr__(self): return "<ConDict object for {0}>".format(self.name) def __str__(self): return "<ConDict object for {0}>".format(self.name) def __bool__(self): valid = True if self.user_id else False return valid def __del__(self): self.connect.close() class Condt(BaseConDict): """Condt - class for ConDict""" COMMANDS = {'.help': {'desc': 'list commands', 'command': None}, '.chname': {'desc': 'change current user name', 'command': None}, '.chpassword': {'desc': 'change current password', 'command': None}, '.list': {'desc': 'list users words', 'command': None}, '.en': {'desc': 'dictionary mode English to Russian', 'command': None}, '.ru': {'desc': 'dictionary mode Russian to English', 'command': None}, '.add': {'desc': 'add new words', 'command': None}, # '.edit': {'desc': 'edit words', 'command': None}, # '.del': {'desc': 'delete words', 'command': None}, '.exit': {'desc': 'quit from program', 'command': None}, } def __init__(self, name, dbfile): super().__init__(name, dbfile) self.__pcounter = 3 self.init_command() self.user_id = self.get_user() def get_user(self): sqlstr="SELECT id FROM user WHERE name=(?) AND password=(?)" cur = self.connect.cursor() ch_user_id = self.check_name(cur) if ch_user_id: ch_user_id = ch_user_id[0] | > > > | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | class IncorrectDbData(Exception): pass class BaseConDict(object): """Base Console Dictionary class""" def __init__(self, name, dbfile): self.connect = sqlite3.connect(dbfile) self.online = False self.name = name def __repr__(self): return "<ConDict object for {0}>".format(self.name) def __str__(self): return "<ConDict object for {0}>".format(self.name) def __bool__(self): valid = True if self.user_id else False return valid def __del__(self): self.connect.close() class Condt(BaseConDict): """Condt - class for ConDict""" COMMANDS = {'.help': {'desc': 'list commands', 'command': None}, '.chname': {'desc': 'change current user name', 'command': None}, '.chpassword': {'desc': 'change current password', 'command': None}, '.list': {'desc': 'list users words', 'command': None}, '.en': {'desc': 'dictionary mode English to Russian', 'command': None}, '.ru': {'desc': 'dictionary mode Russian to English', 'command': None}, '.add': {'desc': 'add new words', 'command': None}, '.connect': {'desc': 'test connection', 'command': None}, # '.edit': {'desc': 'edit words', 'command': None}, # '.del': {'desc': 'delete words', 'command': None}, '.exit': {'desc': 'quit from program', 'command': None}, } def __init__(self, name, dbfile): super().__init__(name, dbfile) self.__pcounter = 3 self.init_command() self.user_id = self.get_user() self.command_connect() def get_user(self): sqlstr="SELECT id FROM user WHERE name=(?) AND password=(?)" cur = self.connect.cursor() ch_user_id = self.check_name(cur) if ch_user_id: ch_user_id = ch_user_id[0] |
︙ | ︙ | |||
62 63 64 65 66 67 68 69 70 71 72 73 74 75 | self.COMMANDS['.exit']['command'] = self.command_exit self.COMMANDS['.chname']['command'] = self.command_chname self.COMMANDS['.chpassword']['command'] = self.command_chpassword self.COMMANDS['.list']['command'] = self.command_list self.COMMANDS['.en']['command'] = self.command_en self.COMMANDS['.ru']['command'] = self.command_ru self.COMMANDS['.add']['command'] = self.command_add def hash_pass(self, password): result = bytes(password.strip() + SALT, 'utf-8') result = bytes(hashlib.md5(result).hexdigest(), 'utf-8') return hashlib.sha1(result).hexdigest() def check_name(self, cur): | > | 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | self.COMMANDS['.exit']['command'] = self.command_exit self.COMMANDS['.chname']['command'] = self.command_chname self.COMMANDS['.chpassword']['command'] = self.command_chpassword self.COMMANDS['.list']['command'] = self.command_list self.COMMANDS['.en']['command'] = self.command_en self.COMMANDS['.ru']['command'] = self.command_ru self.COMMANDS['.add']['command'] = self.command_add self.COMMANDS['.connect']['command'] = self.command_connect def hash_pass(self, password): result = bytes(password.strip() + SALT, 'utf-8') result = bytes(hashlib.md5(result).hexdigest(), 'utf-8') return hashlib.sha1(result).hexdigest() def check_name(self, cur): |
︙ | ︙ | |||
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | def command_en(self, text): print(self.command_enru(text, 'en')) return 'en' def command_ru(self, text): print(self.command_enru(text, 'ru')) return 'ru' def command_enru(self, text, tr_type): result = get_translate(text, tr_type) if not result or result['code'] != 200: return "Error, not foud translate" return result['text'] def command_list(self, pattern=None): cur = self.connect.cursor() sql_list = "SELECT `translate`.`id`, `term`.`en`, `translate`.`rus`, `progress`.`all`, `progress`.`error` FROM `translate` LEFT JOIN `term` ON (`translate`.`term`=`term`.`token`) LEFT JOIN `progress` ON (`progress`.`translate_id`=`translate`.`id`) WHERE `translate`.`user_id`=(?) " params = (self.user_id,) | > > > | 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | def command_en(self, text): print(self.command_enru(text, 'en')) return 'en' def command_ru(self, text): print(self.command_enru(text, 'ru')) return 'ru' def command_enru(self, text, tr_type): if not self.online: return "Offline, please test connect with '.connect' command" result = get_translate(text, tr_type) if not result or result['code'] != 200: self.command_connect() return "Error, not foud translate" return result['text'] def command_list(self, pattern=None): cur = self.connect.cursor() sql_list = "SELECT `translate`.`id`, `term`.`en`, `translate`.`rus`, `progress`.`all`, `progress`.`error` FROM `translate` LEFT JOIN `term` ON (`translate`.`term`=`term`.`token`) LEFT JOIN `progress` ON (`progress`.`translate_id`=`translate`.`id`) WHERE `translate`.`user_id`=(?) " params = (self.user_id,) |
︙ | ︙ | |||
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | if cur.fetchone(): print('Words add already.') break sql_list1 = "INSERT INTO `term` (`token`, `en`) VALUES ((?), (?))" cur.execute(sql_list1, (token, en)) sql_list2 = "INSERT INTO `translate` (`term`, `user_id`, `rus`) VALUES (?, ?, ?)" cur.execute(sql_list2, (token, self.user_id, ru)) except (sqlite3.DatabaseError, IncorrectDbData) as er: if DEBUG: print(er) print('Incorrect information, change data') ent = input('Do you wand enter new words [Y/n]?') if ent in ('n', 'N'): break continue else: self.connect.commit() break cur.close() return 'add' def command_edit(self, translate_id): pass def command_delete(self, id_or_pattern): pass | > > > > > > > > > > > | 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 | if cur.fetchone(): print('Words add already.') break sql_list1 = "INSERT INTO `term` (`token`, `en`) VALUES ((?), (?))" cur.execute(sql_list1, (token, en)) sql_list2 = "INSERT INTO `translate` (`term`, `user_id`, `rus`) VALUES (?, ?, ?)" cur.execute(sql_list2, (token, self.user_id, ru)) sql_list3 = "INSERT INTO `progress` (`translate_id`) VALUES (?)" cur.execute(sql_list3, (cur.lastrowid,)) except (sqlite3.DatabaseError, IncorrectDbData) as er: if DEBUG: print(er) print('Incorrect information, change data') ent = input('Do you wand enter new words [Y/n]?') if ent in ('n', 'N'): break continue else: self.connect.commit() break cur.close() return 'add' def command_edit(self, translate_id): pass def command_delete(self, id_or_pattern): pass def command_connect(self, arg=None): result = get_test_connection() if result: print("Ok connection") else: print("Error connection") self.online = result return 'connect' |
Changes to db.sqlite.
cannot compute difference between binary files
Changes to main.py.
1 2 3 4 5 6 7 8 | #!/usr/bin/env python3 #-*- coding: utf-8 -*- from aside import * from condt import Condt import getpass, os CONF_NAME = 'condt.conf' | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/env python3 #-*- coding: utf-8 -*- from aside import * from condt import Condt import getpass, os CONF_NAME = 'condt.conf' PREFIX = "{0}@ConDict[{1}]>>>" WELCOM = """**************************************************** *** Good day. *** *** For help, use the command ".help", nice work.*** ****************************************************""" def main(): global CONF_NAME, PREFIX |
︙ | ︙ | |||
24 25 26 27 28 29 30 | # create object account = Condt(user, config['database']) if not account: print('Validation error, by...') return 0 print(WELCOM) while (True): | > | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # create object account = Condt(user, config['database']) if not account: print('Validation error, by...') return 0 print(WELCOM) while (True): conn_status = 'online' if account.online else 'offline' prefix = PREFIX.format(account.name, conn_status) command = input(prefix) get_command = account.handling_command(command) if get_command is None: print('Sorry, unknown command: "{0}"\nuse ".help" for more information'.format(command)) continue if not get_command: print("By {0}!".format(account.name)) |
︙ | ︙ |