SLM.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. from colorama import Fore, Back, Style
  2. from prettytable import PrettyTable
  3. from datetime import datetime
  4. import sqlite3
  5. import json
  6. import os
  7. _print = None
  8. userInput = None
  9. SLM = ('''
  10. mmmm m m m
  11. #" " # ## ##
  12. "#mmm # # ## #
  13. "# # # "" #
  14. "mmm#" #mmmmm # #
  15. ''')
  16. connDB = sqlite3.connect( 'base.sql' ) # конект с бд
  17. cursor = connDB.cursor() # инициализация курсора
  18. with open('userConfig.json', 'r') as jsf:
  19. config = json.load(jsf) # импорт конфига
  20. language = config["language"]
  21. with open('./defaultConfigs/language/' + language + '.json', 'r') as f:
  22. config = json.load(f)
  23. help_c = config["help_c"]
  24. f_n = config ["f_n"]
  25. update = config["update"]
  26. areYouSure_c = config ["areYouSure_c"]
  27. bye = config["bye"]
  28. delmenu_c = config["delmenu_c"]
  29. help_c = help_c["work_mode"] + '\n' + Fore.GREEN + help_c["read"] + Fore.BLUE + '\n' + help_c["write"] + Fore.YELLOW + '\n'+ help_c["update"] + Fore.MAGENTA + '\n' + help_c["deleteAll"] + '\n'+ Fore.RED + help_c["exit"] + Fore.RESET
  30. enter = '>SLM>'
  31. inpt = 'input> '
  32. delmenu = 'delMenu> '
  33. upmenu = 'upMenu> '
  34. # меню удаления
  35. def upDate(userInput, _print):
  36. print( 'test help' )
  37. while True:
  38. _print = str( input( enter + upmenu ) )# input shell
  39. if _print != 'q':
  40. if _print == 'Execute':
  41. checkUp(_print)
  42. elif _print == 'Edit':
  43. changeContent(userInput, _print)
  44. elif _print == 'Group':
  45. egitGroup(userInput, _print)
  46. elif _print == 'q':
  47. break
  48. else:
  49. print( 'Unknown command: ' + _print + '\n' +'Enter \'help\'' )
  50. # выполнение
  51. def checkUp(_print):
  52. read()
  53. _print = str(input( update["stt"] ))
  54. toBase = [(_print)]
  55. cursor.execute(' UPDATE notes SET status = 1 WHERE id = ? ', toBase )
  56. connDB.commit()
  57. # изменить запись
  58. def changeContent(userInput, _print):
  59. read()
  60. _print = str(input( update["changeContent"] ))
  61. userInput = str(input( update["toChangeContent"] ))
  62. toBase = [userInput, _print]
  63. cursor.execute(' UPDATE notes SET content = ? WHERE id = ? ', toBase )
  64. connDB.commit()
  65. # изменить группу
  66. def egitGroup(userInput, _print):
  67. read()
  68. _print = str(input( update["changeContent"] ))
  69. userInput = str(input( update["group"] ))
  70. toBase = [userInput, _print]
  71. cursor.execute(' UPDATE notes SET groups = ? WHERE id = ? ', toBase )
  72. connDB.commit()
  73. def timer(userInput, _print):
  74. read()
  75. def editTimer(userInput, _print):
  76. pass
  77. # меню удаления записей
  78. def delMenu(_print):
  79. print( 'test help' )
  80. while True:
  81. _print = str( input( enter + delmenu ) )# input shell
  82. if _print != 'q':
  83. if _print == 'del':
  84. delete(_print)
  85. elif _print == 'delAll':
  86. deleteAll(_print)
  87. elif _print == 'q':
  88. break
  89. else:
  90. print( 'Unknown command: ' + _print + '\n' +'Enter \'help\'' )
  91. # построное удаление
  92. def delete(_print):
  93. read()
  94. # _print = str(input( delmenu["delete"] ))
  95. _print = str(input( delmenu_c['delete_c'] ))
  96. toBase = [(_print)]
  97. cursor.execute(' DELETE FROM notes WHERE id = ? ', toBase)
  98. connDB.commit()
  99. # полное удаление
  100. def deleteAll(_print):
  101. areYouSure = str( input( areYouSure_c ) )# подтвеждение
  102. if areYouSure == 'yes':
  103. cursor.execute(' DELETE FROM notes ')# удаление файла
  104. connDB.commit()
  105. else:
  106. pass
  107. # чтение наших записей
  108. def read():
  109. table = PrettyTable() # иниациализируем вывод в таблицу
  110. cursor.execute(' SELECT * FROM notes WHERE status = 0 ') # выбираем все записи
  111. result = cursor.fetchall()
  112. table.field_names = [ f_n['id'], f_n['content'], f_n['time'], f_n['date'], f_n['status'], f_n['group'] ] # прописываем столбцы
  113. for item in result: # собираем вывод
  114. table.add_row( [ item[0], item[1], item[2], item[3], item[5], item[4] ] )
  115. table.align = 'c'
  116. table.align['Id'] = 'r'
  117. print( table ) # распечатываем
  118. # запись в таблицу
  119. def write(userInput):
  120. while True:
  121. userInput = str( input( enter + inpt ) )# инпут шелл
  122. if userInput != 'q':
  123. time = str(input( config["time"] ))
  124. date = str(input( config["date"] ))
  125. if time == '':
  126. time = '---'
  127. if date == '':
  128. date = '---'
  129. # now = datetime.today()
  130. # time = now.strftime( '%H:%M' )# время
  131. # date = now.strftime( '%d.%m.%Y' )# дата
  132. status = False
  133. toBase = [(userInput, date, time, status)]
  134. cursor.executemany(' INSERT INTO notes ( content, date, time, status ) VALUES ( ?, ?, ?, ? )', toBase ) # отправляем в таблицу
  135. connDB.commit()# подтверждаем
  136. elif userInput == 'q': # условие выхода
  137. break
  138. else:
  139. pass
  140. # очиска терминала
  141. def clearShell():
  142. os.system(['clear'][os.name == os.sys.platform])
  143. # хелп
  144. def helper():
  145. print( help_c )
  146. # собирательная функция
  147. def menu(_print, userInput):
  148. while True:
  149. _print = input( enter )
  150. if _print == 'r':
  151. read()
  152. elif _print == 'w':
  153. write(userInput)
  154. elif _print == 'd':
  155. delMenu(_print)
  156. elif _print == 'u':
  157. upDate(userInput, _print)
  158. elif _print == 'q':
  159. break
  160. elif _print == 'help':
  161. helper()
  162. elif _print == 'clear':
  163. clearShell()
  164. else:
  165. print( 'Unknown command: ' + _print + '\n' +'Enter \'help\'' )
  166. clearShell()
  167. print( Fore.GREEN + config["welkome"] + Fore.RESET )
  168. print( help_c )
  169. menu(_print, userInput)
  170. connDB.close()# закрытие конекта
  171. clearShell()
  172. print( bye + '\n' + SLM )