Example #1
0
    def selectTable(self, event):
        # Get selected tree item
        Id = self.treeviewTablesAndViews.Id

        # Get corresponding info from database
        data = database.getData(self.connectionStringMeta,
                                "Select * From Tables Where Id = " + Id)
Example #2
0
def remove(message_id, channel_id):
    """ Removes message from database

    Parameters:
        message_id (int): The ID of the message
        channel_id (int): The channel ID

    Returns:
       None
    """
    #remove it in message list inside database
    data = database.getData()
    for i in data['messages']:
        if int(i['message_id']) == int(message_id):
            data['messages'].remove(i)
            break
    #remove it in channel
    for j in data['channels']:
        if int(j['channel_id']) == int(channel_id):
            for x in j['messages']:
                if int(x['message_id']) == int(message_id):
                    j['messages'].remove(x)
                    break
    database.update_database(data)
    return {}
Example #3
0
    def showGraph(self, event=None):
        # Get the data
        connectionStringData = self.metadata.ConnectionString[0]
        query = self.metadata.SQL_Data[0]
        self.data = database.getData(connectionStringData, query)
        # Show the data in the table
        self.pyTable.addDataframe(dataframe=self.data)
        # Determine X-variable
        X_variable = self.metadata.X_variable[0].strip()
        # Determine Y-variables
        if self.metadata.ColumnName[0] != None:
            Y_variable = []
            # Get all defined Y-variables
            for i in self.metadata.index:
                Y_variable.append(self.metadata.ColumnName[i].strip())
        else:
            # Get all numerical columns
            Y_variable = self.data._get_numeric_data().columns

        # Show the data in the graph
        for i in self.metadata.index:
            Y_variable = self.metadata.ColumnName[i].strip()
            cmd = 'self.ax.plot(self.data.' + X_variable + ', self.data.' + Y_variable + ', label = "' + Y_variable + '")'
            print(cmd)
            eval(cmd)
        # Add Title
        self.ax.set_title(self.treeviewGraphs.FullTitle())
        # Add xlabel
        self.ax.set_xlabel(X_variable)
        # Add legend
        #self.ax.legend(['test1','test2'])
        self.ax.legend(self.metadata.ColumnName)
        # Refresh
        self.canvas.draw()
Example #4
0
def check_in_channel(user_id, channel_id):
    """ Checks if user is in channel

    Parameters:
        user_id (int): The ID of the user
        channel_id (int): The channel ID

    Returns:
        0 stands for the channel id is valid and the user is in the channel
        1 stands for user is not in the channel
        2 stands for invalid channel id
    """
    data = database.getData()
    found_channel = 0
    found_user = 0
    for i in data['channels']:
        if int(i['channel_id']) == int(channel_id):
            found_channel = 1
            #print(i)
            for x in i['details']['all_members']:
                if int(x['u_id']) == int(user_id):
                    found_user = 1
    # 0 stands for the channel id is valid and the user is in the channel
    # 1 stands for user is not in the channel
    # 2 stands for invalid channel id
    if found_user == 1 and found_channel == 1:
        return 0
    elif found_channel == 1 and found_user == 0:
        return 1
    return 2
Example #5
0
def check_access(user_id, channel_id, message_id):
    """ Checks if user is in sender or owner

    Parameters:
        user_id (int): The ID of the user
        channel_id (int): The channel ID
        message_id (int): The ID of the message

    Returns:
        bool : True or False if valid
    """
    data = database.getData()
    sender = 0
    owner = 0
    #check whether user_id is the sender of the message
    for channel in data['channels']:
        if int(channel['channel_id']) == int(channel_id):
            for x in channel['messages']:
                if int(x['message_id']) == int(message_id):
                    if int(x['u_id']) == int(user_id):
                        sender = 1
                        break

    for ch in data['channels']:
        if int(ch['channel_id']) == int(channel_id):
            for owner in ch['details']['owner_members']:
                if int(owner['u_id']) == int(user_id):
                    owner = 1
                    break

    return sender == 1 or owner == 1
Example #6
0
def get_school_news(school):
    if school not in schoolList.keys():
        return "no message"
    datas = database.getData(school)
    return render_template('newsList.html',
                           datas=datas,
                           schoolName=schoolList[school])
Example #7
0
    def __init__(self, parent):
        top = self.top = Toplevel(parent)
        frame = Frame(top)
        frame.pack()
        data = getData()

        for index, eachData in enumerate(data):
            for key, val in eachData.items():
                EditRow(frame, val, index, data, self)
Example #8
0
 def findQuery(self):
     # Ask new text
     queryName = simpledialog.askstring(
         "Find query",
         "Query name?",
         initialvalue=self.entryQueryName.get(),
         parent=self)
     query = "Select Id From Queries Where QueryName = '" + queryName + "'"
     data = database.getData(self.connectionStringMeta, query)
     self.treeviewQueries.selectItem(data.Id[0])
Example #9
0
def login(username="", password=""):
    database = db.getData()
    for i in database:
        user = database[i]
        uid = user["username"]
        pwd = user["password"]
        if (username == uid and password == pwd):
            print("Berhasil Login sebagai user ", username)
            return user
    print("User tidak ditemukan")
    return None
Example #10
0
def history():

    # temp data for storing results
    one = 0
    two = 0
    three = 0
    four = 0

    # temp data for storing percentage
    onePercent = 0
    twoPercent = 0
    threePercent = 0
    fourPercent = 0

    # gets result number from mySQL
    myresult = getData()

    # gets all result numbers and stores into local var
    for i in myresult:
        result = int(i[0])
        if result == 1:
            one = one + 1
        elif result == 2:
            two = two + 1
        elif result == 3:
            three = three + 1
        elif result == 4:
            four = four + 1

    rows = len(myresult)

    # calculates percentages
    if one != 0:
        onePercent = f"{100 / rows * one:,.2f}"
    if two != 0:
        twoPercent = f"{100 / rows * two:,.2f}"
    if three != 0:
        threePercent = f"{100 / rows * three:,.2f}"
    if four != 0:
        fourPercent = f"{100 / rows * four:,.2f}"

    results = [one, two, three, four]
    percentages = [onePercent, twoPercent, threePercent, fourPercent]
    conditions = [
        "Won by switching", "Won by not switching", "Lost by switching",
        "Lost by not switching"
    ]

    return render_template("results.html",
                           conditions=conditions,
                           results=results,
                           percentages=percentages)
Example #11
0
def get_msg_id():
    """ Generate a message ID

    Parameters:
        None

    Returns:
        message_id(int): The ID for the new message
    """

    data = database.getData()
    if not data['messages']:
        return 1
    return data['messages'][-1]['message_id'] + 1
Example #12
0
 def runQuery(self, event=None):
     # Get query
     self.query = self.textQuery.get(1.0, tk.END)
     # Define global variable
     global data
     # Try to get the data
     try:
         data = database.getData(self.connectionStringData, self.query)
         # Fill the table
         self.pyTable.addDataframe(dataframe=data)
         # Show the table
         self.checkData.set(1)
         self.showData()
     except:
         messagebox.showerror("getData failed", sys.exc_info()[1])
Example #13
0
    def refreshTree(self, id=None, next=0):
        # Clear existing content in treeview
        self.treeview.delete(*self.treeview.get_children())

        # Write query to get tree data
        query = "Select * From " + self.table + " Where Status = 'A' "
        if self.filterColumn != None:
            query += " And " + self.filterColumn + " = " + self.filterId
        query += " Order By [Level], Nr"

        # Execute query to and get the data
        treedata = database.getData(self.connectionString, query)

        # Fill tree
        for i in treedata.index:
            if (i == 0) | (treedata.ParentId[i] == 0):
                self.treeview.insert('',
                                     treedata.Nr[i] - 1,
                                     iid=treedata.Id[i],
                                     text=treedata.Title[i].strip())
            else:
                self.treeview.insert(treedata.ParentId[i],
                                     treedata.Nr[i] - 1,
                                     iid=treedata.Id[i],
                                     text=treedata.Title[i].strip())

        # If the tree has items
        if treedata.Id.count() > 0:
            # Select the given id
            if id != None:
                # If we should show the next item
                if next == 1:
                    # Get the id of the next item
                    id = self.treeview.next(id)
                elif next == -1:
                    # Get the id of the previous item
                    id = self.treeview.prev(id)

                # Make sure that item is visible
                self.treeview.see(id)
                # Select item in tree
                self.treeview.selection_set(id)
                # Set focus on the item
                self.treeview.focus(id)
            else:
                # Open first treeview item
                self.treeview.item(treedata.Id[0], open=True)
Example #14
0
    def selectGraph(self, event):
        # Get selected tree item
        self.Id = self.treeviewGraphs.Id
        # Get corresponding info from database
        query = "Select * From Graphs Where Id = " + self.Id

        query = ('''SELECT A.[Id]
                 ,A.[Status]
                 ,A.[ParentId]
                 ,A.[Level]
                 ,A.[Nr]
                 ,RTrim(A.[Title])      As Title
                 ,A.[QueryId]
                 ,RTrim(B.[QueryName])  As QueryName
                 ,A.[GraphType]
                 ,A.[Y_max]
                 ,A.[Y_min]
                 ,A.[Autoscale_Y]
                 ,A.[Autoscale_X]
                 ,A.[Interval_min]
                 ,A.[Interval_max]
                 ,A.[Interval_count]
                 ,A.[Box]
                 ,A.[Whisker]
                 ,RTrim(A.[X_variable]) As X_variable
                 ,RTrim(D.[ColumnName]) As ColumnName
                 ,RTrim(A.[ColorBy])    As ColorBy
                 ,A.[Regression]
                 ,RTrim(A.[UserId])     As UserId
                 ,A.[TimeChanged]
                 ,B.[SQL_Data]
                 ,B.[SQL_Parameters]
                 ,B.[AutoFetchParameters]
                 ,C.[DatabaseId]
                 ,CASE WHEN C.[User] = '' THEN 'DRIVER={' + Rtrim(C.Driver) + '};Server=' + Rtrim(C.Server) + ';Database=' + Rtrim(C.[Database]) + ';Trusted_Connection=yes;' 
                       ELSE 'DRIVER={' + Rtrim(C.Driver) + '};Server=' + Rtrim(C.Server) + ';Database=' + Rtrim(C.[Database]) + ';UID=' + Rtrim(C.[User]) + ';PWD=' + Rtrim(C.[Password]) END As ConnectionString
             FROM [Metadata].[dbo].[Graphs] A LEFT  OUTER JOIN [Metadata].[dbo].[Y_variables] D ON D.[ID] = A.[ID]
                , [Metadata].[dbo].[Queries] B
                , [Metadata].[dbo].[Connections] C
             WHERE A.[QueryName] = B.[QueryName]
               AND B.[Status] = 'A'
               AND B.[ConnectionId] = C.Id
               AND C.[Status] = 'A'
               AND A.[ID] = ''' + self.Id)

        # Get the metadata
        self.metadata = database.getData(self.connectionStringMeta, query)
Example #15
0
    def initial_data_settup(self):

        itr = 0  ## iterator to keep track of name_list index

        # for each entry in the list of sensors to be displayed
        for sensorEntry in self.sensorList:

            ## Add value to entry box on screen
            entry_ = tk.Entry(self, width=BOX_WIDTH)

            #gets most recent value in database
            sensor = sensorEntry.get('sensor')
            value = database.getData(sensor)
            #entry_.insert(0, str(text))

            ## Display units according to data status
            if str(value) == 'no data':
                unit = " "
            elif sensorEntry.get('unit') is None:
                unit = " "
            else:
                unit = sensorEntry.get('unit')

            text = str(value) + " " + unit

            #need to make sure entry box is not edit-able
            entry_.insert(0, str(text))

            # find the corresponding row and column places
            rowPlace = sensorEntry.get('row') + 1
            column_place = sensorEntry.get('column') + 1

            entry_.grid(row=rowPlace, column=column_place)

            # add the entryBox to the entryBox list
            self.entryBoxList.append(entry_)
            self.coordDict[sensor].append(itr)
            self.unitList.append(
                unit
            )  # append unit to unit list for use in replace_data_on_screen()

            itr = itr + 1

        ## go to refresh sensor data method
        self.getNewData()
Example #16
0
def signup():
    username = input("Masukkan username : "******"Masukkan password : "******"Masukkan Email : ")
    user = {
        "id": str(uuid.uuid4()),
        "username": username,
        "password": password,
        "email": email,
        "cart": [{}],
        "delivered": [{}],
        "onProcess": [{}]
    }
    key = user["username"] + "_" + user["id"]
    database = db.getData()
    database[key] = user
    db.setDatabase(database)
    print("Sign Up Berhasil.")
Example #17
0
 def download_CacheDelete(self):
     try:
         name = self.list_widget.currentItem().text()
         #print(f"Removing {name}")
         for i in getData():
             if name in i:
                 fname = i
                 break
         delData(name, fname[1], fname[2])
         myfile = Path(f"{fname[1]}/{fname[2]}")
         print(myfile)
         if myfile.exists():
             if self.sel_lang == "tr":
                 dosya_silme = QMessageBox.warning(
                     self, "Dosyayı Sil",
                     "Dosyayı diskten silmeli miyiz?\n\nDiskten silmek için evete basın!",
                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
             elif self.sel_lang == "en":
                 dosya_silme = QMessageBox.warning(
                     self, "Delete File",
                     "Should we delete file from disk?\n\nTo delete file from disk press yes!",
                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
             if dosya_silme == QMessageBox.Yes:
                 try:
                     myfile.unlink()
                     if self.sel_lang == "tr":
                         dosya_silme = QMessageBox.information(
                             self, "Dosya Silindi",
                             "Dosya Başarıyla Silindi!", QMessageBox.Ok,
                             QMessageBox.Ok)
                     elif self.sel_lang == "en":
                         dosya_silme = QMessageBox.information(
                             self, "File Deleted",
                             "File Succesfuly Deleted!", QMessageBox.Ok,
                             QMessageBox.Ok)
                 except Exception as e:
                     print(e)
             elif dosya_silme == QMessageBox.No:
                 pass
         self.download_Cache()
     except Exception as e:
         print(e)
Example #18
0
    def selectQuery(self, event):
        # Get selected tree item
        Id = self.treeviewQueries.Id

        # Get corresponding info from database
        query = (
            "Select A.*, B.ConnectionName, B.DatabaseId, " +
            "       CASE WHEN B.[User] = '' THEN 'DRIVER={' + Rtrim(B.Driver) + '};Server=' + Rtrim(B.Server) + ';Database=' + Rtrim(B.[Database]) + ';Trusted_Connection=yes;' "
            "             ELSE 'DRIVER={' + Rtrim(B.Driver) + '};Server=' + Rtrim(B.Server) + ';Database=' + Rtrim(B.[Database]) + ';UID=' + Rtrim(B.[User]) + ';PWD=' + Rtrim(B.[Password]) END As ConnectionString "
            "From Queries A, Connections B " + "Where A.ConnectionId = B.Id " +
            "  And A.Id = " + Id)
        data = database.getData(self.connectionStringMeta, query)

        # Clear entries
        self.entryQueryName.delete(0, tk.END)
        self.textParameterQuery.delete(1.0, tk.END)
        self.textQuery.delete(1.0, tk.END)

        if len(data.index) > 0:
            # Fill in Database
            if data.ConnectionName[0] is not None:
                self.DatabaseName.set(data.ConnectionName[0].strip())
                self.connectionId.set(str(data.ConnectionId[0]))

            # Fill in Name
            if data.QueryName[0] is not None:
                self.entryQueryName.insert(0, data.QueryName[0].strip())

            # Fill in AutoFetchParameters
            self.autoFetchParameters.set(int(data.AutoFetchParameters[0]))
            self.showSqlParameters()

            # Fill in ParameterQuery
            if data.SQL_Parameters[0] is not None:
                self.textParameterQuery.insert(tk.END,
                                               data.SQL_Parameters[0].strip())

            # Fill in Query
            if data.SQL_Data[0] is not None:
                self.textQuery.insert(tk.END, data.SQL_Data[0].strip())

            self.connectionStringData = data.ConnectionString[0]
Example #19
0
def check_msg(message_id):
    #print(message_id)
    """ Gets channel message is in if it exists

    Parameters:
        message (int): The message ID

    Returns:
        if True:
            channel_id(int):The ID of the channel the message is in
        if False:
            False
    """
    data = database.getData()
    for i in data['messages']:
        #print(i)
        if int(i['message_id']) == int(message_id):
            #print(i['channel_id'])
            return i['channel_id']
    return False
Example #20
0
    def adaptLevelOfChildren(self, ParentId, ParentLevel):
        # Get children
        query = ("Select Id, ParentId, [Level], Nr " + "From " + self.table +
                 " " + "Where ParentId = " + ParentId + "  And Status = 'A' ")
        if self.filterColumn != None:
            query += "  And " + self.filterColumn + " = " + self.filterId

        tbl = database.getData(self.connectionString, query)

        for row in tbl.itertuples():
            Id = str(row.Id)
            # Update Level
            query = ("Update " + self.table + " Set " + "[Level] = " +
                     ParentLevel + " + 1 " + "Where Id = " + Id +
                     "  And Status = 'A' ")
            if self.filterColumn != None:
                query += "  And " + self.filterColumn + " = " + self.filterId

            database.setData(self.connectionString, query)
            # Update level of children of this child
            self.adaptLevelOfChildren(Id, str(int(ParentLevel) + 1))
Example #21
0
def edit(message_id, channel_id, message):
    """ Edit message in database

    Parameters:
        message_id (int): The ID of the message
        channel_id (int): The channel ID
        message(str): The new message

    Returns:
       None
    """
    #edit message it in channel
    data = database.getData()
    for j in data['channels']:
        if int(j['channel_id']) == int(channel_id):
            for x in j['messages']:
                if int(x['message_id']) == int(message_id):
                    x['message'] = message
                    break
    database.update_database(data)
    return {}
Example #22
0
    def test_GetData(self):
        competition_config = {
            u'Brazil': {
                'start': 20140501030000,
                'end': 20140601025959
            },
        }

        result = database.getData("Dumplings2014", competition_config)

        expected = {
            u'Brazil': {
                'count': self.images_count,
                'usercount': self.usercount,
                'start': 20140501030000,
                'userreg': self.userreg,
                'data': self.expected_timestamp_data,
                'users': self.user_data,
                'usage': self.usage,
                'category': u'Images_from_Wiki_Loves_Dumplings_2014_in_Brazil',
                'end': 20140601025959
            }
        }
        self.assertEquals(result, expected)
Example #23
0
    def selectItem(self, event):
        # Get selected tree item
        Id = self.treeview.Id

        # Get corresponding info from database
        data = database.getData(self.connectionStringMeta,
                                "Select * From Connections Where Id = " + Id)

        # Clear entries
        self.entryName.delete(0, tk.END)
        self.comboboxDriver.delete(0, tk.END)
        self.entryServer.delete(0, tk.END)
        self.entryDatabase.delete(0, tk.END)
        #self.windowsSecurity = 1
        self.entryUsername.delete(0, tk.END)
        self.entryPassword.delete(0, tk.END)
        self.entryDatabaseId.delete(0, tk.END)
        self.textDescription.delete(1.0, tk.END)

        #self.labelLastUpdated.delete(0, tk.END)
        #self.textDescription.delete(0, tk.END)

        # Fill in Id
        if data.Id[0] is not None:
            self.Id.set(data.Id[0])

        # Fill in Name
        if data.ConnectionName[0] is not None:
            self.entryName.insert(0, data.ConnectionName[0].strip())

        # Fill in Driver
        if data.Driver[0] is not None:
            self.comboboxDriver.insert(0, data.Driver[0].strip())

        # Fill in Server
        if data.Server[0] is not None:
            self.entryServer.insert(0, data.Server[0].strip())

        # Fill in Database
        if data.Database[0] is not None:
            self.entryDatabase.insert(0, data.Database[0].strip())

        # Fill in Username
        if data.User[0] is not None:
            self.entryUsername.insert(0, data.User[0].strip())

        if data.User[0].strip() == '':
            self.windowsSecurity.set(1)
        else:
            self.windowsSecurity.set(0)
        self.changeWindowsSecurity()

        # Fill in Password
        if data.Password[0] is not None:
            self.entryPassword.insert(0, data.Password[0].strip())

        # Fill in DatabaseId
        if data.DatabaseId[0] is not None:
            self.entryDatabaseId.insert(0, data.DatabaseId[0])

        # Fill in LastUpdated
        if data.TimeChanged[0] is not None:
            self.LastUpdated.set(
                str(data.TimeChanged[0])[:-7] + ' by ' + data.UserId[0])

        # Fill in Description
        if data.Description[0] is not None:
            self.textDescription.insert(1.0, data.Description[0].strip())

        self.connectionStringData = database.connectionstring(
            self.comboboxDriver.get().strip(),
            self.entryServer.get().strip(),
            self.entryDatabase.get().strip(),
            self.entryUsername.get().strip(),
            self.entryPassword.get().strip())
Example #24
0
import database, parsePlayer

select = "SELECT id, lastcheck FROM uwcsplayers"

players = database.getData(select, ())

for i in players:
    print "Player:", i[0]
    parsePlayer.update(i[0], i[1])
Example #25
0
def calculated_team_averages():
    data = database.getData()
    return render_template('data_viewer/calculated_team_averages.html',
                           allData=json.dumps(data),
                           constants=json.dumps(constants))
Example #26
0
    def createWidgets(self):
        # Get top window
        self.top = self.winfo_toplevel()

        # Make it stretchable
        self.top.rowconfigure(0, weight=1)
        self.top.columnconfigure(0, weight=1)

        # Make row 10 stretchable
        self.rowconfigure(11, weight=1)

        # Make certain columns stretchable
        self.columnconfigure(0, weight=2)
        self.columnconfigure(2, weight=4)
        self.columnconfigure(3, weight=1)
        self.columnconfigure(4, weight=1)
        self.columnconfigure(5, weight=1)
        self.columnconfigure(6, weight=1)

        #%% LEFT
        # Tree
        self.treeview = PyTree(self,
                               connectionString=self.connectionStringMeta,
                               table='Connections',
                               id=self.connectionId)

        # Define events
        self.bind('<<TreeviewSelect>>', self.selectItem)

        self.treeview.grid(row=0,
                           column=0,
                           rowspan=13,
                           sticky=tk.NE + tk.SW,
                           padx=1,
                           pady=1)

        #%% MIDDLE
        # Id
        ttk.Label(self, text="Id:").grid(row=0,
                                         column=1,
                                         sticky=tk.NE,
                                         padx=5,
                                         pady=5)
        self.Id = tk.StringVar()
        self.labelId = ttk.Label(self, textvariable=self.Id)
        self.labelId.grid(row=0, column=2, sticky=tk.W + tk.E, padx=5, pady=5)

        # Name
        ttk.Label(self, text="Name:").grid(row=1,
                                           column=1,
                                           sticky=tk.NE,
                                           padx=5,
                                           pady=5)
        self.entryName = ttk.Entry(self)
        self.entryName.grid(row=1,
                            column=2,
                            sticky=tk.W + tk.E,
                            padx=5,
                            pady=5)

        # Driver
        ttk.Label(self, text="Driver:").grid(row=2,
                                             column=1,
                                             sticky=tk.E,
                                             padx=5,
                                             pady=5)
        self.comboboxDriver = ttk.Combobox(self)
        self.comboboxDriver.grid(row=2,
                                 column=2,
                                 sticky=tk.W + tk.E,
                                 padx=5,
                                 pady=5)
        self.drivers = database.getData(
            self.connectionStringMeta,
            "Select Rtrim(Driver) As Driver From Drivers")
        self.comboboxDriver['values'] = self.drivers.Driver.values.tolist()

        # Server
        ttk.Label(self, text="Server:").grid(row=3,
                                             column=1,
                                             sticky=tk.E,
                                             padx=5,
                                             pady=5)
        self.entryServer = ttk.Entry(self)
        self.entryServer.grid(row=3,
                              column=2,
                              sticky=tk.W + tk.E,
                              padx=5,
                              pady=5)

        # Database
        ttk.Label(self, text="Database:").grid(row=4,
                                               column=1,
                                               sticky=tk.E,
                                               padx=5,
                                               pady=5)
        self.entryDatabase = ttk.Entry(self)
        self.entryDatabase.grid(row=4,
                                column=2,
                                sticky=tk.W + tk.E,
                                padx=5,
                                pady=5)

        # Windows security
        self.windowsSecurity = tk.IntVar()
        self.checkbuttonWindowsSecurity = ttk.Checkbutton(
            self,
            text="Windows security",
            variable=self.windowsSecurity,
            command=self.changeWindowsSecurity)
        self.checkbuttonWindowsSecurity.grid(row=5,
                                             column=2,
                                             sticky=tk.W,
                                             padx=5,
                                             pady=5)

        # Username
        self.labelUsername = ttk.Label(self, text="Username:"******"Password:"******"DatabaseId:").grid(row=8,
                                                 column=1,
                                                 sticky=tk.E,
                                                 padx=5,
                                                 pady=5)
        self.entryDatabaseId = ttk.Entry(self)
        self.entryDatabaseId.grid(row=8, column=2, sticky=tk.W, padx=5, pady=5)

        # Last updated
        ttk.Label(self, text="Last updated:").grid(row=9,
                                                   column=1,
                                                   sticky=tk.E,
                                                   padx=5,
                                                   pady=5)
        self.LastUpdated = tk.StringVar()
        self.labelLastUpdated = ttk.Label(self,
                                          text="-",
                                          textvariable=self.LastUpdated)
        self.labelLastUpdated.grid(row=9,
                                   column=2,
                                   sticky=tk.W + tk.E,
                                   padx=5,
                                   pady=5)

        # Description
        ttk.Label(self, text="Description:").grid(row=10,
                                                  column=1,
                                                  sticky=tk.NE,
                                                  padx=5,
                                                  pady=5)
        self.textDescription = tk.Text(self, height=5, width=50)
        self.textDescription.grid(row=10,
                                  column=2,
                                  sticky=tk.W + tk.E,
                                  padx=5,
                                  pady=5)

        # Buttons
        ttk.Button(self, text="Test",
                   command=self.testConnection).grid(row=11,
                                                     column=2,
                                                     sticky=tk.NW,
                                                     padx=5,
                                                     pady=5)
        ttk.Button(self, text="Save", command=self.save).grid(row=11,
                                                              column=2,
                                                              sticky=tk.NE,
                                                              padx=5,
                                                              pady=5)

        #%% RIGHT
        # Show/Hide listbox
        self.showDependents = tk.StringVar()
        self.showDependents.set('Hide')

        # Hide/Tables/Views/Queries
        ttk.Radiobutton(self,
                        text="Hide",
                        variable=self.showDependents,
                        value='Hide',
                        command=self.showListbox).grid(row=0,
                                                       column=3,
                                                       sticky=tk.W,
                                                       padx=5,
                                                       pady=5)
        ttk.Radiobutton(self,
                        text="Tables",
                        variable=self.showDependents,
                        value='Tables',
                        command=self.showListbox).grid(row=0,
                                                       column=4,
                                                       sticky=tk.W,
                                                       padx=5,
                                                       pady=5)
        ttk.Radiobutton(self,
                        text="Views",
                        variable=self.showDependents,
                        value='Views',
                        command=self.showListbox).grid(row=0,
                                                       column=5,
                                                       sticky=tk.W,
                                                       padx=5,
                                                       pady=5)
        ttk.Radiobutton(self,
                        text="Queries",
                        variable=self.showDependents,
                        value='Queries',
                        command=self.showListbox).grid(row=0,
                                                       column=6,
                                                       sticky=tk.W,
                                                       padx=5,
                                                       pady=5)

        # TabControl
        self.listbox = tk.Listbox(self)
        self.listbox.grid(row=1,
                          column=3,
                          rowspan=10,
                          columnspan=4,
                          sticky=tk.NW + tk.SE,
                          padx=5,
                          pady=5)
        self.listbox.grid_forget()
Example #27
0
def main():
    vk_session = vk_api.VkApi(
        token='3de9c0ce56bb265632da8c7348a37fe081ebd68d9744120f9da0108b82654974ccd938d58ceee8cc26b9c')
    longpoll = VkBotLongPoll(vk_session, '203395569')
    city = None
    asked = False
    lens = False
    asked1 = False
    greet = False
    asked_type = False
    started = False
    renew = False
    score = 0
    city_last = False
    in_menu = True
    city_rand2 = False
    asked2 = False
    first_place = False
    guessing_city = False
    showing_place = False
    played_cities = False
    playing_cities = False
    geocoding = False
    for event in longpoll.listen():
        vk = vk_session.get_api()
        if event.type == VkBotEventType.MESSAGE_NEW:
            if not greet:
                response = vk.users.get(user_id=event.obj.message['from_id'])
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 random_id=random.randint(0, 2 ** 64),
                                 message=f'Приветствую тебя, {response[0]["first_name"]}')
                greet = True
            if event.message.text.lower() == 'выйти':
                showing_place = False
                playing_cities = False
                geocoding = False
                guessing_city = False
                first_place = False
                score = 0
                in_menu = True
                lens = False
                city = None
                asked = False
                asked2 = False
                asked_type = False
            # навыки:
            if event.message.text == 'Покажи место' or showing_place:
                showing_place, asked, asked_type, city, in_menu = func_showing_place(event, asked,
                                                                                     asked_type, city,
                                                                                     vk, showing_place,
                                                                                     in_menu)
            if (event.message.text == 'zen' or event.message.text == 'пасхалка') and in_menu:
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 message=random.choice(['У самурая нет цели, только путь...',
                                                        'почему так...',
                                                        'не теряем время, нужно решать задачи...']),
                                 keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                 random_id=random.randint(0, 2 ** 64))

            if event.message.text == 'Рейтинг':
                data = database.getName()
                rating1 = []
                rating2 = []
                try:
                    for i in data:
                        data2 = database.getData(i[0])
                        for j in range(len(data2)):
                            try:
                                rating1.append(f'{i[1]} - {data2[j][3]}')
                                rating2.append(f'{i[1]} - {len(data2[j][2].split())}')
                            except Exception:
                                pass
                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     message='Рейтинг игры в города:',
                                     keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                     random_id=random.randint(0, 2 ** 64))
                    if rating1:
                        for i in rating1:
                            vk.messages.send(user_id=event.obj.message['from_id'],
                                             message=i,
                                             keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                             random_id=random.randint(0, 2 ** 64))
                    else:
                        vk.messages.send(user_id=event.obj.message['from_id'],
                                         message='Нет данных',
                                         keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                         random_id=random.randint(0, 2 ** 64))
                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     message='Рейтинг "угадай город":',
                                     keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                     random_id=random.randint(0, 2 ** 64))
                    if rating2:
                        for i in rating2:
                            vk.messages.send(user_id=event.obj.message['from_id'],
                                             message=i,
                                             keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                             random_id=random.randint(0, 2 ** 64))
                    else:
                        vk.messages.send(user_id=event.obj.message['from_id'],
                                         message='Нет данных',
                                         keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                         random_id=random.randint(0, 2 ** 64))
                except Exception as a:
                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     message=a,
                                     keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                     random_id=random.randint(0, 2 ** 64))

            if event.message.text == 'Геокодер' or geocoding:
                event, asked1, vk, geocoding, in_menu = func_geocoder(event, asked1, vk, geocoding,
                                                                      in_menu)
            if event.message.text == 'Игра в города' or playing_cities:
                try:
                    event, playing_cities, started, city_last, vk, in_menu, played_cities, score = func_play_cities(
                        event, playing_cities, started, city_last, vk, in_menu, played_cities, score)
                except Exception as err:
                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     random_id=random.randint(0, 2 ** 64),
                                     keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                     message=f'Произошла ошибка. Вы находитесь в меню.')
                    showing_place = False
                    playing_cities = False
                    geocoding = False
                    guessing_city = False
                    first_place = False
                    score = 0
                    in_menu = True
                    lens = False
                    city = None
                    asked = False
                    asked2 = False
                    asked_type = False
            if event.message.text == 'Угадай город' or guessing_city:
                event, guessing_city, in_menu, asked2, vk, city_rand2 = func_guess_city(event,
                                                                                        guessing_city,
                                                                                        in_menu,
                                                                                        asked2, vk,
                                                                                        city_rand2)
            if event.message.text == 'Расстояния' or lens:
                try:
                    event, vk, lens, in_menu, first_place, renew = func_distance(event, vk, lens,
                                                                                 in_menu, first_place,
                                                                                 renew)
                except Exception as err:
                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     random_id=random.randint(0, 2 ** 64),
                                     keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                     message=f'Произошла ошибка. Вы находитесь в меню.')
                    showing_place = False
                    playing_cities = False
                    geocoding = False
                    guessing_city = False
                    first_place = False
                    in_menu = True
                    lens = False
                    city = None
                    asked = False
                    asked2 = False
                    asked_type = False
            if in_menu and not (event.message.text == 'zen' or event.message.text == 'пасхалка'):
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 random_id=random.randint(0, 2 ** 64),
                                 keyboard=open('kb1.json', 'r', encoding='UTF-8').read(),
                                 message=f'Я SpaceBot и у меня есть множество функций. Их всех ты сейчас видишь на клавиатуре.')
Example #28
0
 def download_Cache(self):
     self.list_widget.clear()
     for i in getData():
         items = QListWidgetItem(i[0], self.list_widget)
Example #29
0
def func_guess_city(event, guessing_city, in_menu, asked2, vk, city_rand2):
    if event.message.text == 'Угадай город':
        guessing_city = True
        in_menu = False
        asked2 = False
        num = 0
        data = database.getData(event.obj.message['from_id'])
        if data:
            if data[0][2]:
                num = len(data[0][2].split())
        vk.messages.send(
            user_id=event.obj.message['from_id'],
            message=
            f'Игра "Угадай город". Ваша задача по картинке угадать город. Всего городов угадано: {num}.',
            keyboard=open('kb3.json', 'r', encoding='UTF-8').read(),
            random_id=random.randint(0, 2**64))
        if not database.getData(event.obj.message['from_id']):
            database.updateAll(None, event.obj.message['from_id'], None)
    cities = open('cities2.txt', encoding='UTF-8').read().split('\n')
    if asked2:
        if event.message.text.capitalize() == city_rand2:
            vk.messages.send(user_id=event.obj.message['from_id'],
                             random_id=random.randint(0, 2**64),
                             message=f'Правильно!',
                             keyboard=open('kb3.json', 'r',
                                           encoding='UTF-8').read())
            data = database.getData(event.obj.message['from_id'])
            if data:
                if data[0][2]:
                    database.updateGuessedCities(
                        city_rand2 + ' ' + data[0][2] + ' ',
                        event.obj.message['from_id'])
                else:
                    database.updateGuessedCities(city_rand2 + ' ',
                                                 event.obj.message['from_id'])
        else:
            vk.messages.send(user_id=event.obj.message['from_id'],
                             random_id=random.randint(0, 2**64),
                             message=f'Неправильно! Это же {city_rand2}',
                             keyboard=open('kb3.json', 'r',
                                           encoding='UTF-8').read())
        asked2 = False
    if not asked2:
        city_rand2 = random.choice(cities)
        data = database.getData(event.obj.message['from_id'])
        if not data or not data[0][2] or (data[0][2]
                                          and len(data[0][2].split()) < 12):
            if data and data[0][2]:
                while city_rand2 in data[0][2]:
                    city_rand2 = random.choice(cities)
            geocoder_request = f"http://geocode-maps.yandex.ru/1.x/?apikey=40d1649f-0493-4b70-98ba-98533de7710b&geocode={city_rand2}&format=json"
            response = requests.get(geocoder_request)
            if response:
                json_response = response.json()
                toponym = json_response["response"]["GeoObjectCollection"][
                    "featureMember"][0]["GeoObject"]
                toponym_coodrinates = toponym["Point"]["pos"]
                map_request = f"http://static-maps.yandex.ru/1.x/?ll={','.join(toponym_coodrinates.split())}&spn=0.005,0.005&l=map"
                response = requests.get(map_request)
                map_file = "static/map.png"
                with open(map_file, "wb") as file:
                    file.write(response.content)
                upload = vk_api.VkUpload(vk)
                photo = upload.photo_messages('static/map.png')
                owner_id = photo[0]['owner_id']
                photo_id = photo[0]['id']
                access_key = photo[0]['access_key']
                attachment = f'photo{owner_id}_{photo_id}_{access_key}'
                vk.messages.send(user_id=event.obj.message['from_id'],
                                 random_id=random.randint(0, 2**64),
                                 message=f'Какой это город?',
                                 keyboard=open('kb3.json',
                                               'r',
                                               encoding='UTF-8').read(),
                                 attachment=attachment)
                asked2 = True
        else:
            vk.messages.send(user_id=event.obj.message['from_id'],
                             random_id=random.randint(0, 2**64),
                             message=f'Вы видели все города!',
                             keyboard=open('kb3.json', 'r',
                                           encoding='UTF-8').read())

        return event, guessing_city, in_menu, asked2, vk, city_rand2
Example #30
0
def func_play_cities(event, playing_cities, started, city_last, vk, in_menu,
                     played_cities, score):
    cities = open('cities.txt').read().split('\n')
    if event.message.text == 'Игра в города':
        city_last = None
        playing_cities = True
        started = False
        played_cities = []
        data = database.getData(event.obj.message['from_id'])
        num = 0
        if data:
            if data[0][3]:
                num = data[0][3]
        vk.messages.send(user_id=event.obj.message['from_id'],
                         message=f'Начинайте! Ваш лучший счёт - {num}.',
                         keyboard=open('kb3.json', 'r',
                                       encoding='UTF-8').read(),
                         random_id=random.randint(0, 2**64))
        if not database.getData(event.obj.message['from_id']):
            database.updateAll(None, event.obj.message['from_id'], None)
            response = vk.users.get(user_id=event.obj.message['from_id'])
            database.updateName(event.obj.message['from_id'],
                                response[0]['first_name'])
    if event.message.text.capitalize(
    ) in cities and event.message.text.capitalize() not in played_cities:
        if not city_last or city_last[-1] == event.message.text.lower()[0]:
            score += 1
            played_cities.append(event.message.text)
            last = event.message.text[-1]
            count = -1
            while last == 'ы' or last == 'ь' or last == 'ъ':
                count -= 1
                last = event.message.text[count]
            letter_cities = []
            for i in cities:
                if i.startswith(last.upper()) and i not in played_cities:
                    letter_cities.append(i)
            city_rand = random.choice(letter_cities)
            vk.messages.send(user_id=event.obj.message['from_id'],
                             message=city_rand,
                             keyboard=open('kb3.json', 'r',
                                           encoding='UTF-8').read(),
                             random_id=random.randint(0, 2**64))
            city_last = city_rand
            played_cities.append(city_last)
            count = 0
            while city_last[-1] == 'ы' or city_last[-1] == 'ь' or city_last[
                    -1] == 'ъ':
                count -= 1
                city_last = city_last[0:count]

        else:
            vk.messages.send(user_id=event.obj.message['from_id'],
                             message='Не то!',
                             keyboard=open('kb3.json', 'r',
                                           encoding='UTF-8').read(),
                             random_id=random.randint(0, 2**64))
    elif event.message.text not in cities and not in_menu:
        vk.messages.send(user_id=event.obj.message['from_id'],
                         message='Нет такого города!',
                         keyboard=open('kb3.json', 'r',
                                       encoding='UTF-8').read(),
                         random_id=random.randint(0, 2**64))
    elif event.message.text in played_cities:
        vk.messages.send(user_id=event.obj.message['from_id'],
                         message='Был такой город!',
                         keyboard=open('kb3.json', 'r',
                                       encoding='UTF-8').read(),
                         random_id=random.randint(0, 2**64))
    in_menu = False
    data = database.getData(event.obj.message['from_id'])
    if data:
        if data[0][3]:
            if data[0][3] < score:
                database.updatePlayCities(score, event.obj.message['from_id'])
        else:
            database.updatePlayCities(score, event.obj.message['from_id'])
    return event, playing_cities, started, city_last, vk, in_menu, played_cities, score
Example #31
0
import database

arr = database.getData('stocks','10-20','10-30') 
dict1 = arr[0]
dict2 = arr[1]
stocks1 = dict1["stock"]
stocks2 = dict2["stock"]
# dict1["mentions"] = mentions (array)
# dict1["stocks"] = stock(array)
# dict1["sentiment"] = sentiment(array)

dictionary ={}
for i in range(0,len(stocks)):
    symbol = stocks1[i]
    if(symbol in stocks2)
        inc = (dict2['mentions'][i] - dict1['mentions'][i])/dict2['mentions'][i] * 100
        dictionary[symbol] = inc
dictionarySort = OrderedDict(sorted(dictionary.items(), key=lambda i: i[1], reverse = True))
print(dictionarySort)