Beispiel #1
0
 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))
Beispiel #2
0
    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()
Beispiel #3
0
 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()
Beispiel #4
0
 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)
Beispiel #5
0
 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))
Beispiel #6
0
 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))
Beispiel #7
0
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)
Beispiel #8
0
 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()
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
    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()
Beispiel #13
0
 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()
Beispiel #14
0
 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()
Beispiel #15
0
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))
Beispiel #16
0
    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
Beispiel #17
0
    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()
Beispiel #18
0
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()
Beispiel #19
0
    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()
Beispiel #20
0
        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()
Beispiel #21
0
        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()
Beispiel #22
0
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):
    """