def updateBooksWin(self): postgres = Postgres() books = postgres.returnAllBooks() print(books) self.BooksTable.table.delete(*self.BooksTable.table.get_children()) for row in books: self.BooksTable.table.insert('', tk.END, values=tuple(row))
def createReaderBooksShowWin(self): self.ReaderBooksWin = tk.Toplevel(self) postgres = Postgres() item = self.table.selection() massiv = self.table.item(item)['values'] self.ReaderBooksWin.title(f"№{massiv[0]} {massiv[1]} {massiv[2]}") id = massiv[0] print(massiv) books = postgres.returnReaderBooks(id) print(books) self.readerBooksTable = Table(self.ReaderBooksWin, headings=( 'ID', 'Название книги', 'Автор', 'Дата возврата книги', 'Тип книги', ), rows=(books)) returnBookButton = tk.Button(self.ReaderBooksWin, text="Принять книгу", command=self.returnBook, height=3, width=15) returnBookButton.pack(side=tk.BOTTOM, padx=12, pady=20) self.readerBooksTable.pack()
def setup(self): self.logcapture.begin() self.password = os.getenv('PASSWORD') self.a_postgres = Postgres.Postgres(database='postgres', user='******', password=self.password) self.empty_postgres = Postgres.Postgres()
def createBooksWin(self): self.BooksWin = tk.Toplevel(self) postgres = Postgres() books = postgres.returnAllBooks() print(books) item = self.table.selection() massiv = self.table.item(item)['values'] self.BooksWin.title(f"№{massiv[0]} {massiv[1]} {massiv[2]}") self.BooksTable = Table(self.BooksWin, headings=( 'ID', 'Название книги', 'Автор', 'Количество', 'Ссылка', 'Тип', ), rows=(books)) self.BooksTable.pack() givBookButton = tk.Button(self.BooksWin, text="Выдать книгу", command=self.givBook, height=3, width=15) givBookButton.pack(side=tk.BOTTOM, padx=12, pady=20)
def update(self): postgres = Postgres() conn = postgres.returnConnect() cursor = conn.cursor() cursor.execute("SELECT * FROM readers") readers = cursor.fetchall() self.table.delete(*self.table.get_children()) for row in readers: self.table.insert('', tk.END, values=tuple(row))
def updateReaderBooksShowWin(self): postgres = Postgres() item = self.table.selection() massiv = self.table.item(item)['values'] id_reader = massiv[0] books = postgres.returnReaderBooks(id_reader) self.readerBooksTable.table.delete( *self.readerBooksTable.table.get_children()) for row in books: self.readerBooksTable.table.insert('', tk.END, values=tuple(row))
def pytypes(iterable,specialCols = []): if specialCols == []: '''No columns with special type (array)''' return Postgres.convert_postgres_objects(iterable) # OK, we need to do some manual type convesions iterable = list(iterable) for i in range(0,len(iterable)): if type(iterable[i]) == Postgres.types.text.Array: iterable[i] = [str(x) for x in list(iterable[i])] return Postgres.convert_postgres_objects(iterable)
def returnBook(self): postgres = Postgres() item = self.readerBooksTable.table.selection() massivofbooks = self.readerBooksTable.table.item(item)['values'] id_book = massivofbooks[0] datereturn = massivofbooks[3] item = self.table.selection() massiv = self.table.item(item)['values'] id_reader = massiv[0] postgres.returnPaperBook(id_reader, id_book, datereturn) self.updateReaderBooksShowWin()
def get_database(database_string, config, logger): database = None if database_string == "mongo": database = MongoDB.initialize(config, logger) elif database_string == "postgres": database = Postgres.initialize(config, logger) return database
def get_database(database_string, config, logger): database = None if database_string=="mongo": database = MongoDB.initialize(config, logger) elif database_string=="postgres": database = Postgres.initialize(config, logger) return database
def __init__(self, configuration=None, parent=None): super(UI, self).__init__(parent) # Setup configuration file self.configuration = configuration # Setup Menu bar items menubar = self.menuBar() fileMenu = menubar.addMenu('&File') helpMenu = menubar.addMenu('&Help') # Setup Exit action exitAction = QtGui.QAction('&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit Application') exitAction.triggered.connect(QtGui.qApp.quit) fileMenu.addAction(exitAction) # Setup About action aboutAction = QtGui.QAction('&About', self) aboutAction.setShortcut('Ctrl+A') aboutAction.setStatusTip('About') aboutAction.triggered.connect(self.aboutAction) helpMenu.addAction(aboutAction) # Setup Tool bar self.toolbar = self.addToolBar('Exit') self.toolbar.addAction(exitAction) self.toolbar.addAction(aboutAction) # Setup central widget self.central = UI_central.UI_central() self.connect(self.central.button, QtCore.SIGNAL("clicked()"), self.addButtonClicked) self.setCentralWidget(self.central) # Connect to DB password = os.getenv('PASSWORD') self.db = Postgres.Postgres('postgres', 'postgres', password) if not self.db.connect(): logging.error("Database connection failed") return # Create know_stocks table self.db.createTable('know_stocks', [('SYMBOL', 'text'), ('SHARES', 'integer')]) # Populate combo box with known stocks from database self.connect(self.central.button2, QtCore.SIGNAL("clicked()"), self.stock_button_clicked) self.know_stocks = [] self.know_stocks = self.db.queryAllData("know_stocks") if self.know_stocks is not None: for item in self.know_stocks: self.central.combobox.addItem(item[0]) self.setWindowTitle('Learning Python Lab 9') self.show()
def addUser(self): postgres = Postgres() login = self.loginEntry.get() password = self.passwordEntry.get() role = self.roleEntry.get() badInput = False errorMessage = "Пожалуйста, введите" if not login: errorMessage += " логин" badInput = True if not password: errorMessage += " пароль" badInput = True if not role: errorMessage += " роль" badInput = True if badInput: answer = mb.showerror(parent=self.window, message=errorMessage) else: postgres.addUser(login, password, role) self.update()
def addReader(self): postgres = Postgres() name = self.nameEntry.get() surname = self.surnameEntry.get() patronymic = self.patronymicEntry.get() studbilet = self.studbiletEntry.get() badInput = False errorMessage = "Пожалуйста, введите" if not name: errorMessage += " имя" badInput = True if not surname: errorMessage += " фамилию" badInput = True if not studbilet: errorMessage += " студенческий билет" badInput = True if badInput: answer = mb.showerror(parent=self.window, message=errorMessage) else: postgres.addReader(name, surname, patronymic, studbilet) self.update()
def givBook(self): postgres = Postgres() item = self.BooksTable.table.selection() massivofbooks = self.BooksTable.table.item(item)['values'] id_book = massivofbooks[0] item = self.table.selection() massiv = self.table.item(item)['values'] id_reader = massiv[0] if postgres.bookOnHand(id_reader, id_book): mb.showerror(parent=self, message="Эта книга уже есть у пользователя") else: if massivofbooks[-1] == 'Печатная': postgres.givPaperBook(id_reader, id_book) else: postgres.givElectroBook(id_reader, id_book) self.updateBooksWin()
def handle_message(event): if event.message.text[0] == "#": sql = Postgres.main(event.message.text) if event.message.text[1] == "+": get_V = sql.add() elif event.message.text[1] == "-": get_V = sql.reduce() elif event.message.text[1].upper() == "R": get_V = sql.read() else: get_V = sql.ntype() line_bot_api.reply_message(event.reply_token, TextSendMessage(text=get_V)) elif event.message.text == "My info": line_bot_api.reply_message(event.reply_token, TextSendMessage(text=str(event))) else: line_bot_api.reply_message(event.reply_token, TextSendMessage(text=event.message.text))
def __init__(self, parent=None, configuration=None): """ UI constructor :param parent: :param configuration: """ super(UI, self).__init__(parent) self.configuration = configuration # Create menu bar, file menu and help menu. menubar = self.menuBar() filemenu = menubar.addMenu("&File") helpmenu = menubar.addMenu("&Help") # Create an exit action. exitAction = QtGui.QAction("&Exit", self) exitAction.setShortcut("Ctrl+Q") exitAction.setStatusTip("Exit Application") filemenu.addAction(exitAction) exitAction.triggered.connect(QtGui.qApp.quit) # Create an about action. aboutAction = QtGui.QAction("&About", self) aboutAction.setShortcut("Ctrl+A") aboutAction.setStatusTip("About") helpmenu.addAction(aboutAction) aboutAction.triggered.connect(self.aboutAction) # Create a toolbar. self.toolbar = self.addToolBar("Exit") self.toolbar.addAction(exitAction) self.toolbar.addAction(aboutAction) # Set window title, size and show it. self.setWindowTitle("Learning Python Lab 9") self.resize(1000, 800) self.show() # Create UI_central instance. self.central = UI_central.UI_central() # Connect pushbutton to the method when clicked. self.connect(self.central.button, QtCore.SIGNAL("clicked()"), self.addButtonClicked) self.connect(self.central.button1, QtCore.SIGNAL("clicked()"), self.stockButtonClicked) # Set central widget. self.setCentralWidget(self.central) # Obtain the password and create a db instance. # password = os.getenv('PASSWORD') self.db = Postgres.Postgres(database="postgres", user="******", password="******") # Connect to the database. if self.db.connect() is False: logging.error("db connect failed") sys.exit() # Create a table. try: self.db.createTable(table_name="know_stocks", table_list=[("SYMBOL", "text"), ("SHARES", "integer")]) except: logging.error("Failed to create the table know_stocks") sys.exit() # Get the entire know_stock table as a list with tuple elements and add stock symbol to combobox. l = self.db.queryAllData(table_name="know_stocks") try: for element in l: stock_symbol = element[0] self.central.combobox.addItem(stock_symbol) except: return
def __init__(self, logger, inserts, selects, database, config, thread_count): self.inserts = inserts self.selects = selects self.database = database self.logger = logger self.config = config self.thread_count = thread_count self.file = open(self.get_file_name(), 'w') def get_file_name(self): return './logs/'+str(datetime.datetime.now())+'-'+self.database.to_string()\ +'-read-'+str(self.selects)+'-write-'+str(self.inserts)+'.log' def run(self): for x in xrange(self.thread_count): s = TweetStream.get_instance(self.logger, self.inserts, self.selects, self.database, self.config).start() def initialize(url, port, gets, posts, logger, config, thread_count): return MultiWeb(url, port, gets, posts, logger, config, thread_count) if __name__ == "__main__": config = ConfigParser.RawConfigParser() config.read('config.conf') m = MultiDatabase(Logger.initialize('test'), 10, 0, Postgres.initialize(config), config, 10) m.run()
import TweetStream, ConfigParser, Logger, datetime, Postgres class MultiDatabase: def __init__(self, logger, inserts, selects, database, config, thread_count): self.inserts = inserts self.selects = selects self.database = database self.logger = logger self.config = config self.thread_count = thread_count self.file = open(self.get_file_name(), 'w') def get_file_name(self): return './logs/'+str(datetime.datetime.now())+'-'+self.database.to_string()\ +'-read-'+str(self.selects)+'-write-'+str(self.inserts)+'.log' def run(self): for x in xrange(self.thread_count): s = TweetStream.get_instance(self.logger, self.inserts, self.selects, self.database, self.config).start() def initialize(url, port, gets, posts, logger, config, thread_count): return MultiWeb(url, port, gets, posts, logger, config, thread_count) if __name__ == "__main__": config = ConfigParser.RawConfigParser() config.read('config.conf') m = MultiDatabase(Logger.initialize('test'), 10, 0, Postgres.initialize(config), config, 10) m.run()
def __init__(self, parent=None, configuration=None): super(UI, self).__init__(parent) # Setting configuration self.config = configuration try: self.config.read("stocks.cfg") except: print("Config fail") sys.exit(2) log_file = 'default.log' if self.config.has_section('LOGGING'): if self.config.has_option('LOGGING', 'LOG_FILE'): log_file = self.config.get('LOGGING', "LOG_FILE") try: logging.basicConfig( filename=log_file, level=logging.DEBUG, format='%(asctime)s, %(levelname)s, %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') except: print("No %s file created" % log_file) sys.exit(3) logging.info("Program has started.") # Connect to database self.password = os.getenv('PASSWORD') self.db = Postgres.Postgres(database='postgres', user='******', password=self.password) if not self.db.connect(): return self.db.createTable(table_name='known_stocks', table_list=[('SYMBOL', 'text'), ('SHARES', 'integer')]) # Create Exit and About Action and add them to menubar and toolbar exitAction = QtGui.QAction('Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(QtGui.qApp.quit) aboutAction = QtGui.QAction('About', self) aboutAction.setShortcut('Ctrl+A') aboutAction.setStatusTip('About') aboutAction.triggered.connect(self.aboutAction) self.statusBar().showMessage('') menuBar = self.menuBar() fileMenu = menuBar.addMenu('File') helpMenu = menuBar.addMenu('Help') fileMenu.addAction(exitAction) helpMenu.addAction(aboutAction) exitToolbar = self.addToolBar('Exit') exitToolbar.addAction(exitAction) aboutToolbar = self.addToolBar('About') aboutToolbar.addAction(aboutAction) # Add UI central and connect the button to methods self.central = UI_central.UI_central() self.central.addButton.clicked.connect(self.addButtonClicked) self.central.officersButton.clicked.connect(self.stockButtonClicked) self.setCentralWidget(self.central) # Add stocks found in known_stocks to stock combobox known_stocks = self.db.queryAllData(table_name="known_stocks") for line_item in known_stocks: self.central.stockCombo.addItem(line_item[0]) self.setWindowTitle("Python Programming 1 Lab 10") self.show()
self.file = open(self.get_file_name(), "w") self.logger.log("Database queries complete") self.logger.log( "Conducted " + str(self.streamer.reads) + " reads and " + str(self.streamer.writes) + " writes." ) self.logger.log_to_file( self.file, str(self.response_data).replace("[", "").replace("]", "").replace(" ", "").replace(",", "\n") ) self.logger.log("Average response time: " + str(sum(self.response_data) / len(self.response_data))) def put_tweet_in_database(self): r = random.random() return r <= self.probability def add_to_database(self, data): self.database.add_tweets(data) def query_database(self): self.database.query_database() def get_instance(logger, inserts, selects, database, config): return TweetStream(logger, inserts, selects, database, config) if __name__ == "__main__": m = MongoDB.initialize() p = Postgres.initialize() t = TweetStream(logging, 100, 100, m) t.run()
self.file = open(self.get_file_name(), 'w') self.logger.log("Database queries complete") self.logger.log("Conducted " + str(self.streamer.reads) + " reads and " + str(self.streamer.writes) + " writes.") self.logger.log_to_file( self.file, str(self.response_data).replace('[', '').replace(']', '').replace( ' ', '').replace(',', '\n')) self.logger.log("Average response time: " + str(sum(self.response_data) / len(self.response_data))) def put_tweet_in_database(self): r = random.random() return r <= self.probability def add_to_database(self, data): self.database.add_tweets(data) def query_database(self): self.database.query_database() def get_instance(logger, inserts, selects, database, config): return TweetStream(logger, inserts, selects, database, config) if __name__ == "__main__": m = MongoDB.initialize() p = Postgres.initialize() t = TweetStream(logging, 100, 100, m) t.run()
import sys import os import flask import jinja2 import Postgres # Collection of global variables app = flask.Flask(__name__) env = jinja2.Environment(loader=jinja2.PackageLoader(__name__, 'templates')) app.secret_key = 'RaNdOmVaLuE520' # Create a postgres instance db password = os.getenv('PASSWORD') db = Postgres.Postgres(database="postgres", user="******", password="******") if db.connect() is False: sys.exit(1) def ask_for_stocks(): """ This method will display the ask_stocks page """ template = env.get_template('ask_stocks.html') html = template.render(ADDR=flask.request.environ['REMOTE_ADDR'], CLIENT=flask.request.environ['HTTP_USER_AGENT']) return html def have_this_stocks(stock): """