Пример #1
0
def getversions(data):
    # Input -> a dict that maps
    #    spicename -> metadata
    #    'system' : version
    # Input -> a list of (str) spicenames, json-encoded
    # Output -> [spicename, spicename, system?]
    # where system is included only if the system spices
    # must be updated
    updates = []
    for spicename, metadata in data.iteritems():
        if spicename == 'system':
            storedversion = get('systemversion')
            log("SYSTEM CHECK: %s %s %s" % (storedversion, metadata, storedversion == metadata))
            if str(storedversion) != str(metadata):
                updates.append(spicename)
            continue

        mid = get('spice-id:%s' % spicename.replace(' ', '-'))
        storeddata = get('metadata:%s' % mid)

        if not storeddata or not metadata or 'version' not in storeddata or 'version' not in metadata:
            continue
        storedversion = storeddata['version']
        if str(storedversion) != str(metadata['version']):
            updates.append(spicename)
        #log("Required Updates: %s", updates)
    return json.dumps(updates)
Пример #2
0
def C_JOIN(S, DB, sender, args):

	if len(args) != 1:
		C_HELP(S, DB, sender, ["join"])
		return

	rows = get(DB, "SELECT username FROM players WHERE username='******'".format(sender))
	if not len(rows): # It's a new player.
		put(DB, "INSERT INTO players (username, name, desc, room, pass) VALUES ('{0}', '{0}', ' ', '0', '{1}')".format(sender, hashlib.sha256(args[0]).hexdigest()))
		send(S, sender, "Created new player \"{0}\". Your password is \"{1}\".".format(sender, args[0]))

	passhash = get(DB, "SELECT pass FROM players WHERE username='******'".format(sender))
	if passhash[0][0] == hashlib.sha256(args[0]).hexdigest(): # Authenticated successfully.
		setonline(DB, sender, 1)

		roomid = getroom(DB, sender)
		enterroom(DB, roomid, sender) # Add player to their room.

		playerinfo = playerstat(DB, sender)
		send(S, sender, "Welcome, {0}.".format(playerinfo["name"])) # Greet player.
		announce(S, DB, "{0} joined the game.".format(playerinfo["name"]))
		announce_room(S, DB, roomid, "{0} entered the room.".format(playerinfo["name"]))

	else: # Bad login.
		send(S, sender, "Incorrect password for registered player.")
Пример #3
0
def C_SELF(S, DB, sender, args):
	if len(args) == 0: # Look at youself.
		C_LOOK(S, DB, sender, [sender])

	elif len(args) >= 3 and args[0].lower() == "set": # Modify yourself.
		if args[1].lower() == "name": # Set name.
			pnames = get(DB, "SELECT name FROM players")
			for name in pnames: # Check if name is taken.
				if " ".join(args[2:]).lower() == name[0].lower():
					send(S, sender, "A player by that name already exists.")
					return

			if goodname(" ".join(args[2:])):
				put(DB, "UPDATE players SET name='{0}' WHERE username='******'".format(E(" ".join(args[2:])), sender))
				send(S, sender, "Name updated.")
			else:
				send(S, sender, "Invalid name.")

		elif args[1].lower() == "desc": # Set description.
			if args[2].startswith("\\\\"): # Append for long description.
				curr = get(DB, "SELECT desc FROM players WHERE username='******'".format(sender))
				newdesc = "{0}\n{1}".format(E(curr[0][0]), E(" ".join(args[2:])[2:]))
				put(DB, "UPDATE players SET desc='{0}' WHERE username='******'".format(newdesc, sender))
			else:
				put(DB, "UPDATE players SET desc='{0}' WHERE username='******'".format(E(" ".join(args[2:])), sender))
			send(S, sender, "Description updated.")
		else:
			C_HELP(S, DB, sender, ["self set"])

	elif args[0].lower() == "set":
		C_HELP(S, DB, sender, ["self set"])
	else:
		C_HELP(S, DB, sender, ["self"])
Пример #4
0
def playerstat(DB, player):
	name = get(DB, "SELECT name FROM players WHERE username='******'".format(player))[0][0]
	desc = get(DB, "SELECT desc FROM players WHERE username='******'".format(player))[0][0]
	online = get(DB, "SELECT online FROM players WHERE username='******'".format(player))[0][0]
	room = get(DB, "SELECT room FROM players WHERE username='******'".format(player))[0][0]

	return {"name": name, "desc": desc, "online": online, "room": room}
Пример #5
0
def report_usages():
    usages = {}
    usage_keys = get('dbkeylist:usagekeys:all')
    for key in usage_keys:
        usage_val = get(key)
        usages[key] = usage_val
    return json.dumps(usages)
Пример #6
0
    def load(self):
        """resume session via cookie or start a new guest session"""

        if "sid" in self.req.cookies:
            self.__dict__.update(objstore.get(type="session", name=self.req.cookies["sid"]))
        if not self.user:
            self.user = "******"
            self.new_sid()
            database.get()
            database.conn.begin()
            objstore.post(type="session", user=self.user, name=self.name)
            database.conn.commit()
Пример #7
0
def addSpice(mid, metadata):
    try:
        log('[spicemanager] in func:addSpice')
        gituser = metadata['gituser']
        token = metadata['token']
        repo = metadata['repo']
        spicename = metadata['spicename']
        author = metadata['author']
        tagline = metadata['tagline']
        description = metadata['description']
        #hotkey = metadata['hotkey']
        
        # check to make sure that the user owns spice
        spicemeta = get('metadata:%s' % mid)
        if spicemeta and spicemeta['gituser'] != gituser:
            raise Exception('User %s is not authorized to change this spice.' % gituser)

        # clone their repo into /home/ec2-user/temp/cloned
        raise Exception('Hmmmmm., how to do this....')

        # Re-arrange their files
        cmd('mkdir /home/ec2-user/temp/cloned/%s' % spicename)
        cmd('mv /home/ec2-user/temp/cloned/* /home/ec2-user/temp/cloned/%s' % spicename)        

        # tar files from it to spices/
        iconpath = '/home/ec2-user/temp/cloned/%s/icon.png' % spicename
        if not os.path.exists(iconpath):
            cmd('tar -cvf /home/ec2-user/spices/%s.tar.gz /home/ec2-user/spicerackdev/%s' % (mid, spicename))
        else:
            cmd('cp %s /home/ec2-user/icons/%s.png' % (iconpath, mid))
            iconpath = iconpath.strip('icon.png')
            cmd('tar -cvf /home/ec2-user/spices/%s.tar.gz /home/ec2-user/spicerackdev/%s --directory=%s icon.png' % (mid, spicename, iconpath))

        # delete the cloned repo
        cmd('rm -f -r /home/ec2-user/temp/cloned/%s') % spicename

        # Send a POST to the heroku server
        payload = {}
        payload[mid] = {
            'spicename' : spicename,
            'gituser' : gituser,
            'author' : author,
            'tagline' : tagline,
            'description' : description,
            'version' : get('version:%s' % mid),
            'hotkey' : hotkey,
            }
        put('metadata:%s' % mid, payload[mid])
        send_post(payload, '/spices/refresh')
    except Exception as e:
        payload = {'error' : 'Error in adding Spice: %s' % str(e)}
        send_post(payload, '/spices/refresh')
Пример #8
0
def sql_to_abs():
	global data, last_save
	data = [copy.deepcopy(init_data)] # Make sure data is reset.
	
	info = get("SELECT name,author,description,notes FROM info")[0] # Get info.
	data[0]["info"] = {"name": info[0], "author": info[1], 
	                   "description": info[2], "notes": info[3]}
	
	scenes = get("SELECT order_id,name,contents FROM scenes") # Get scenes.
	for scene in scenes:
		data[0]["scenes"].append({"order_id": scene[0], "name": scene[1], "contents": scene[2]})
	
	last_save = copy.deepcopy(data[-1])
Пример #9
0
def cmd_modified(args, context):
    if len(args) != 0:
        return False
    lm = get("SELECT last_modified FROM info")
    lm = lm[0][0]
    body = "Last modified: {0}".format(time.strftime(config.timestamp_format, time.localtime(lm)))
    return {"body": body}
Пример #10
0
def authenhandler ( req ) :

    if req.headers_in.has_key( "Authorization" ) :
        # If authorization is sent either req.user is set or an error response is produced

        try :
            type , uuid = req.headers_in["Authorization"].split(" ",1)
        except ValueError , ex :
            req.log_error( "authenhandler : Malformed Authorization header '%s'" % req.headers_in["Authorization"] )
            req.status = apache.HTTP_UNAUTHORIZED
            return apache.DONE

        # NOTE : nagios http configuration will not go through response handler
        if type == "Basic" :
            try :
                db = database.get()
            except database.C3DBException , ex :
                req.log_error( "authenhandler : exception '%s' while accessing database" % ex.type , apache.APLOG_EMERG )
                req.status = apache.HTTP_INTERNAL_SERVER_ERROR
                return apache.OK
            if not db.check_user_password( req.user , req.get_basic_auth_pw() ) :
                db.close()
                req.log_error( "authenhandler : Wrong password for user %s" % req.user )
                # NOTE : This is a browser response, so we can perform a hard return
                return apache.HTTP_UNAUTHORIZED

            req.log_error( "authenhandler : user '%s' from Basic Authentication" % req.user , apache.APLOG_INFO )
            if db.get_user_group( req.user ) == "nagiosadmin" :
                req.user = "******"
            else :
                req.user = "******"
            db.close()
            return apache.OK
Пример #11
0
def handler ( req ) :

    # FIXME : reuse code to get unique UUID on args

    if req.args or req.method == "POST" :
        _args = util.FieldStorage(req)
        args = dict( map( lambda  x:  tuple ( ( x , _args.get(x,None) ) ) , _args.keys() ) )
        missing = []
        for required in ( 'UUID' , 'DISTRO' , 'HOSTNAME' ) :
            if not args.has_key( required ) :
                missing.append( required )
        if missing :
            return send_error( req , "%s missing" % ", ".join(missing) )
    else :
        return send_error( req , "Malformed request" )

    error_msg = []

    try :
        db = database.get()
    except database.C3DBException , ex :
        msg = "Exception '%s' while accessing database" % ex.type
        req.log_error( "register handler : %s" % msg , apache.APLOG_EMERG )
        req.status = apache.HTTP_INTERNAL_SERVER_ERROR
        return apache.OK
Пример #12
0
	def columns(self, table):
		"""get columns of"""
		import database
		if not self._columns.get(table):
			self._columns[table] = [c[0] for c in \
				database.get().sql("desc `%s`" % table, as_dict=False)]
		return self._columns[table]
Пример #13
0
 def __dump(self, name=None):
     db = database.get(self.connection_info)
     db_schema = db.schema
     if (name):
         table = db_schema.get_table(name)
         yml = "tables:\n" + table.get_yaml()
     else:
         yml = db_schema.get_yaml()
     return yml
Пример #14
0
def get(**args):
    """start a new session"""
    req = http_request.req

    req.session = Session(req)
    if req.form.get("user"):
        database.get()
        database.conn.begin()
        req.session.new()
        database.conn.commit()
    else:
        req.session.load()

    return {
        "user": req.session.user,
        "sid": req.session.name,
        "userobj": objstore.get(type="user", name=req.session.user),
    }
Пример #15
0
    def sync(self):
        self.__ensure_valid()
        db = database.get(self.connection_info)
        #db_schema = db.schema
        #yml_schema = self.__load_yml_schema()

        cs = None
        yml_schema = None
        #cs = changeset.Diff(self.path + "/versions/head.yaml", yml_schema, db_schema)
        db.sync(cs, yml_schema)
Пример #16
0
def getversions(data):
    """
    Given a set of spices 
    Input -> a dict that maps
       spicename -> metadata
       'system' : version
    Input -> a list of (str) spicenames, json-encoded
    Output -> [spicename, spicename, system?]
    where system is included only if the system spices
    must be updated
    """
    updates = []
    for spicename, metadata in data.iteritems():
        if spicename == 'system':
            storedversion = get('systemversion')
            if str(storedversion) != str(metadata):
                Statsd.increment('update.system')
                updates.append(spicename)
            continue

        if isinstance(metadata, str):
            try:
                metadata = json.loads(metadata)
            except ValueError:
                log('Metadata for spice "%s" could not be json decoded: "%s"', spicename, metadata)
                continue

        mid = get('spice-id:%s' % spicename.replace(' ', '-'))
        storeddata = get('metadata:%s' % mid)
        if storeddata is None:
            log('No stored data for spice %s, skipping.', spicename)
            continue

        if any([not storeddata,
               not metadata,
               'version' not in storeddata,
               'version' not in metadata]):
            continue
        storedversion = storeddata['version']
        if str(storedversion) != str(metadata['version']):
            Statsd.increment('update.%s' % spicename.replace(' ', '-'))
            updates.append(spicename)
    return json.dumps(updates)
Пример #17
0
def all(bot, update):
    messages = database.get(update.message.chat_id)
    if type(messages) is str:
        bot.sendMessage(update.message.chat_id, text=messages)
    else:
        books = messages["books"]
        msg = ""
        for book in books:
            msg += "{}: {}\n".format(str(book["page"]).zfill(3), book["title"])
        bot.sendMessage(update.message.chat_id, text=msg)
Пример #18
0
def test_one(protocol, variables):
  """Runs one single test, returns the CER on the test set"""

  # 1. get the data from our preset API for the database
  train = database.get(protocol, 'train', database.CLASSES, variables)

  # 2. preprocess the data using our module preprocessor
  norm = preprocessor.estimate_norm(numpy.vstack(train))
  train_normed = preprocessor.normalize(train, norm)

  # 3. trains our logistic regression system
  trainer = algorithm.MultiClassTrainer()
  machine = trainer.train(train_normed)

  # 4. applies the machine to predict on the 'unseen' test data
  test = database.get(protocol, 'test', database.CLASSES, variables)
  test_normed = preprocessor.normalize(test, norm)
  test_predictions = machine.predict(numpy.vstack(test_normed))
  test_labels = algorithm.make_labels(test).astype(int)
  return analysis.CER(test_predictions, test_labels)
Пример #19
0
def open_story(path):
	global body, context
	if not database.opendb(path):
		body = "Unable to open file."
		return
	ver = database.get("SELECT pystory_ver FROM info")[0][0] # Check version.
	if ver != database.PYSTORY_VER:
		body = "Story file structure version mismatch."
		return 
	storyfile.sql_to_abs()
	context = ["\"{0}\"".format(storyfile.data[-1]["info"]["name"]), "STORY", None]
Пример #20
0
def authzhandler ( req ) :

    # FIXME : use a serialezed node on apache notes instead of reopening the database
    try :
        db = database.get()
        node = db.get_node( req.user )
        db.close()
    except database.C3DBException , ex :
        req.log_error( "authzhandler : exception '%s' while accessing database" % ex.type , apache.APLOG_EMERG )
        req.status = apache.HTTP_INTERNAL_SERVER_ERROR
        return apache.OK
Пример #21
0
def newroom(DB, name, owner):
	roomids = get(DB, "SELECT id FROM rooms") # Find highest room ID.
	newid = 0
	for rid in roomids:
		if rid[0] > newid:
			newid = rid[0]
	newid += 1

	put(DB, """INSERT INTO rooms (name, desc, owner, exits, items, id, locked) VALUES ('{0}', ' ', '{1}', 'gAJ9cQAu', 'gAJdcQAu', '{2}', '1')""".format(name, owner, newid))

	return newid
Пример #22
0
 def enter(self):
     self.next_state = S_CONTINUE
     self.station_code = database.get('trains.station_code', 'LBG')
     self.last_update = 0
     Buttons.enable_interrupt(Buttons.BTN_A,
                              lambda t: self.set_next_state(S_TO_SETTINGS),
                              on_press=True,
                              on_release=False)
     Buttons.enable_interrupt(Buttons.BTN_Menu,
                              lambda t: self.set_next_state(S_EXIT),
                              on_press=True,
                              on_release=False)
Пример #23
0
def return_doc(call):
    libs = db.get(type_user="******")
    for i in libs:
        bot.send_message(
            chat_id=i.get_id(),
            text="User with alias {} will return book soon".format(
                call.from_user.username))
    bot.edit_message_text(
        chat_id=call.message.chat.id,
        message_id=call.message.message_id,
        text="Please, go to the Library and return your book",
        reply_markup=bot_features.get_inline_markup([["OK!", "Back"]]))
Пример #24
0
def login(request):
    global lg
    print(request.GET)

    if ("login" and "password") in request.GET:
        if "admin" in request.GET["login"] and "0000" in request.GET["password"]:
            lg["success"] = True

    if ("type" and "text") in request.GET:
        lg = {
            "success": False,
            "Groups": database.get("Groups"),
            "Users": database.get("Users")
        }
        for i in range (0, len(lg["Users"])):
            print(lg["Users"][i]["groupId"])
            if "Admin" == request.GET["type"]:
                if lg["Users"][i]["groupId"] == 2:
                    print("Admin")
                    vkAPI.messages.send(user_id=lg["Users"][i]["id_vk"], message = request.GET["text"], random_id = random.randint(1, 999999999999999), v=5.103)
            elif "Moder" == request.GET["type"]:
                if lg["Users"][i]["groupId"] == 1:
                    print("Moder")
                    vkAPI.messages.send(user_id=lg["Users"][i]["id_vk"], message = request.GET["text"], random_id = random.randint(1, 999999999999999), v=5.103)
            elif "Usual" == request.GET["type"]:
                if lg["Users"][i]["groupId"] == 3:
                    print("Usual")
                    vkAPI.messages.send(user_id=lg["Users"][i]["id_vk"], message = request.GET["text"], random_id = random.randint(1, 999999999999999), v=5.103)
        
    if ("id_u" and "text_u") in request.GET:
        lg = {
            "success": False,
            "Groups": database.get("Groups"),
            "Users": database.get("Users")
        }
        for i in range(0, len(lg["Users"])):
            if int(lg["Users"][i]["id_vk"]) == int(request.GET["id_u"]):
                vkAPI.messages.send(user_id=lg["Users"][i]["id_vk"], message = request.GET["text_u"], random_id = random.randint(1, 999999999999999), v=5.103)

    return render(request, "login.html", lg)
Пример #25
0
    def create_open_database(self):
        db = database.get()

        try:
            db.open()
        except Exception as e:
            idaapi.warning('Creating/opening Classy database failed: %s' %
                           str(e))

        if db.is_open:
            self.menumgr.set_state(MenuState.DATABASE_OPENED)
        else:
            self.menumgr.set_state(MenuState.DATABASE_CLOSED)
Пример #26
0
def main():
    if request.method == 'GET':
        pets = database.get()
        model = {"title": "Awesome Pet Photos", "header": "Photos", "pets": pets}
        print('Pets Home Page Requested!')

    if request.method == 'POST':
        data = request.form.to_dict(flat=True)
        pets = database.search(data['search'])
        model = {"title": "Awesome Pet Photos", "header": "Some Pets!", "pets": pets}
        print('Search Requested: ' + data['search'])

    return render_template('index.html', model=model)
Пример #27
0
def greeting(message):
    user[message.chat.id] = user_info()
    exist = aut.check(message.from_user.username)
    print(db.get(alias=message.from_user.username))
    if not exist:
        print(message)
        message = bot.send_message(
            message.chat.id, "Please send your e-mail with @innopolis.ru")
        bot.register_next_step_handler(message, auth)
    else:
        user[message.chat.id].me = db.get(alias=message.from_user.username)[0]
        print(type(user[message.chat.id].me))
        if type(user[message.chat.id].me) == Librarian:
            bot.send_message(message.chat.id,
                             "Now choose what you want to do",
                             reply_markup=bot_features.get_inline_markup(
                                 u.keyboard_librarian_buttons_home))
        else:
            bot.send_message(message.chat.id,
                             "Now choose what you want to do",
                             reply_markup=bot_features.get_inline_markup(
                                 u.keyboard_patron_buttons_home))
Пример #28
0
def open_story(path):
    global body, context
    if not database.opendb(path):
        body = "Unable to open file."
        return
    ver = database.get("SELECT pystory_ver FROM info")[0][0]  # Check version.
    if ver != database.PYSTORY_VER:
        body = "Story file structure version mismatch."
        return
    storyfile.sql_to_abs()
    context = [
        "\"{0}\"".format(storyfile.data[-1]["info"]["name"]), "STORY", None
    ]
Пример #29
0
    def save_to_disk(data: set) -> None:
        """Saves a set of account_ids to the database.

        Args:
            data: The set of account_ids to save.
        """
        conn, cur = database.get()

        for x in data:
            cur.execute("INSERT OR IGNORE INTO accounts (id) VALUES ({})".format(x))

        conn.commit()
        conn.close()
Пример #30
0
def C_EXIT(S, DB, sender, args):
	if len(args) == 0:
		C_GO(S, DB, sender, [])

	elif len(args) >= 3 and args[0].lower() == "set": # Add an exit.
		roomid = getroom(DB, sender)
		roominfo = roomstat(DB, roomid)

		if roominfo["owner"] == sender or roominfo["locked"] == 0: # Do we have permission to add an exit?
			try:
				test = get(DB, "SELECT * FROM rooms WHERE id='{0}'".format(int(args[1]))) # Does the target room exist?
				if not len(test):
					send(S, sender, "The target room does not exist.")
					return

				else: # Set an exit.
					if goodname(" ".join(args[2:])):
						exits = roominfo["exits"]
						exits[" ".join(args[2:]).lower()] = int(args[1])
						put(DB, "UPDATE rooms SET exits='{0}' WHERE id='{1}'".format(obj2str(exits), roomid))
						send(S, sender, "Exit \"{0}\" leads to room ID {1}.".format(" ".join(args[2:]).lower(), int(args[1])))
					else:
						send(S, sender, "Invalid name.")
			except (ValueError):
				C_HELP(S, DB, sender, ["exit set"])

		else:
			send(S, sender, "The room is set to locked and you are not the owner.")

	elif len(args) >= 2 and args[0].lower() == "del": # Delete an exit.
		roomid = getroom(DB, sender)
		roominfo = roomstat(DB, roomid)

		if roominfo["owner"] == sender or roominfo["locked"] == 0: # Do we have permission to delete an exit?
			if " ".join(args[1:]).lower() in roominfo["exits"]: # Delete the exit.
				exits = roominfo["exits"]
				del exits[" ".join(args[1:]).lower()]
				put(DB, "UPDATE rooms SET exits='{0}' WHERE id='{1}'".format(obj2str(exits), roomid))
				send(S, sender, "Exit \"{0}\" deleted.".format(" ".join(args[1:])))
			else:
				send(S, sender, "No such exit.")

		else:
			send(S, sender, "The room is set to locked and you are not the owner.")

	elif args[0].lower() == "set":
		C_HELP(S, DB, sender, ["exit set"])
	elif args[0].lower() == "del":
		C_HELP(S, DB, sender, ["exit del"])
	else:
		C_HELP(S, DB, sender, ["exit"])
Пример #31
0
    def update_signature(self):
        self.return_type = self.return_type_w.text().encode(
            'ascii', 'replace').strip() or 'void'
        self.owner_type = self.owner_type_w.text().encode('ascii',
                                                          'replace').strip()
        self.name = self.name_w.text().encode('ascii', 'replace').strip()
        self.args = self.args_w.text().encode('ascii', 'replace').strip()
        self.is_const = self.is_const_w.isChecked()
        self.ctor_type = self.ctor_type_w.currentIndex() + 1
        self.dtor_type = self.dtor_type_w.currentIndex()

        # ctors and dtors shouldn't have a return type, dtors shouldn't have args
        if self.owner_type:
            owner_last_type = self.owner_type.split('::')[-1]
            if self.name == owner_last_type:
                self.return_type = ''
            elif self.name == '~' + owner_last_type:
                self.return_type = ''
                self.args = ''

        signature_segs = []
        if self.return_type:
            signature_segs.append(self.return_type)
            signature_segs.append(' ')
        if self.owner_type:
            signature_segs.append(self.owner_type)
            signature_segs.append('::')
        signature_segs.append(self.name)
        signature_segs.append('(')
        signature_segs.append(self.args)
        signature_segs.append(')')
        if self.is_const:
            signature_segs.append(' const')
        self.signature = ''.join(signature_segs)
        self.signature_w.setText(self.signature)

        self.is_signature_valid = False
        self.mangled = None
        try:
            if not self.name or (' ' in self.name):
                raise ValueError('Name is invalid')
            self.mangled = itanium_mangler.mangle_function(
                self.signature,
                database.get().typedefs, self.ctor_type, self.dtor_type)
            self.is_signature_valid = True
            self.status = ''
            self.status_w.setText('Valid')
        except (ValueError, NotImplementedError) as e:
            self.status = str(e)
            self.status_w.setText('Invalid: ' + self.status)
        self.mangled_w.setText(str(self.mangled))
Пример #32
0
def speak(request, userID, userInfo="", msg="", answ="", attach=""):
    # Специальные команды бота
    # #Учим бота новым словам
    if msg[:6] == "/teach":
        pos = msg.find("?")
        newMsg = msg[7:pos].replace(" ", "")
        newAnsw = msg[pos + 1:]
        database.insert("answer", ["msg", "answ"], [newMsg, newAnsw])
        answ = "Я добавил новый запрос '{0}', давай попробуй =)".format(newMsg)
    # #Вывести список всех команд
    elif msg == "/list":
        answ = database.get("answer", ["msg"])
    # #Узнать в какой я группе
    elif msg == "/whoAmI":
        answ = """Вы относитесь к группе {0}""".format(
            database.getGroup(str(userID))[0]["groupName"])
    # #Посмотреть список пользователей
    elif msg == "/whoAreThey":
        answ = """Пользователи:\n"""
        for i in database.getGroup():
            answ += """id: {0}, group: {1}\n""".format(i["id"], i["groupName"])
    elif msg == "/changeMe":
        # 1) Удалить пользователя из базы
        database.deleteUser(userID)
        # 2) Вызвать клавиатуру
        keyboardStart(request, userID)
        return 1

    # Поиск ответа в базе
    if answ == "":
        for i in database.get("answer"):
            if msg == i["msg"]:
                answ = i["answ"]
                break
            else:
                answ = "Я не знаю такой команды. Можешь научить меня используя команду /teach ЗАПРОС ? ОТВЕТ"

    sendAnswer(userID, answ, attach)
Пример #33
0
def _read_cowyboy_data(id):
    root = "flaustria/cowyboys/roster/" + str(id)
    cowyboy = database.get(root)
    """
  cowyboy = {"id": id}
  cowyboy["prefix"] = database.get(root + "/prefix")
  cowyboy["first_name"] = database.get(root + "/first_name")
  cowyboy["name"] = database.get(root + "/name")
  cowyboy["color"] = database.get(root + "/color")
  cowyboy["power"] = database.get(root + "/power")
  cowyboy["wins"] = database.get(root + "/wins")
  cowyboy["duels"] = database.get(root + "/duels")
  """
    return cowyboy
Пример #34
0
def get_table(eID, name):
    ids = {
        "Customer":"CustomerID",
        "Employee":"EmployeeID",
        "Login":"******",
        "Inventory":"InventoryID",
        "Model":"ModelNumber",
        "CustomerOrder":"OrderNumber"
    }
    eid = int(request.cookies.get('eID'))
    table = name
    id_column = ids[table]
    data = database.get(table, id_column)
    return render_template('table.html', data=data, table=table, eID=eID)
Пример #35
0
def search_doc(call):
    if call.data == "Books":
        u.multithreading[str(call.message.chat.id)].field = "Book"
    elif call.data == "Articles":
        u.multithreading[str(call.message.chat.id)].field = "Article"
    elif call.data == "Audio/Video":
        u.multithreading[str(call.message.chat.id)].field = "AV"
    list_of_docs = db.get(type_book=u.multithreading[str(call.message.chat.id)].field)
    u.multithreading[str(call.message.chat.id)].db_to_search = [i.get_title() for i in list_of_docs]
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                          text="Enter name of doc from list {}  \n or type title of new one".format(u.multithreading[str(call.message.chat.id)].db_to_search))
    bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id,
                                  reply_markup=bot_features.get_inline_markup(u.keyboard_button_back))
    bot.register_next_step_handler(call.message, search)
Пример #36
0
def save_code():
    logging.info(f"Saving code from {request.remote_addr}")
    # print("This is save_code()")
    if request.method == 'POST':
        database_name = request.args.get('database')
        table_name = request.args.get('table')
        data = request.data
        data = data.decode("utf-8").strip()
        print("database_name", database_name)
        print("table_name", table_name)
        print("data", data)
        with open("analysis_code.json", "r+") as code_file:
            file_data = json.load(code_file)
            print("data read from the file is", file_data)
            db = file_data.get(database_name)
            if db:
                tbl = db.get(table_name)
                if tbl:
                    last_modified = tbl.get("last_modified")
                    code = tbl.get("code")
                    mapper = tbl.get("mapper")
                    tbl.update(
                        {"last_modified": date.today().strftime("%d-%m-%Y")})
                    tbl.update({"code": data})
                    file_data.update({database_name: db})
                else:
                    dictionary = {}
                    dictionary.update(
                        {"last_modified": date.today().strftime("%d-%m-%Y")})
                    dictionary.update({"mapper": None})
                    dictionary.update({"code": data})
                    db.update({table_name: dictionary})
                    file_data.update({database_name: db})
            else:
                x = {}
                dictionary = {}
                dictionary.update(
                    {"last_modified": date.today().strftime("%d-%m-%Y")})
                dictionary.update({"mapper": None})
                dictionary.update({"code": data})
                x.update({table_name: dictionary})
                file_data.update({database_name: x})
            print("The file data being written the file is:\n",
                  json.dumps(file_data))
            print(json.dumps(file_data))
            code_file.seek(0)
            code_file.truncate()
            code_file.write(json.dumps(file_data))
            return json.dumps({"status": True, "message": f"Success"})
        return json.dumps({"status": False, "message": "Failed"})
Пример #37
0
def get(ch, command):
    command = command[len(SAVE_COMMAND):]
    datereg = re.compile(r'(1[0-2]|[1-9])\/(3[01]|[12][0-9]|[0-9])\/\d{4}')
    date = datereg.search(command)
    querywords = command.split(' ')
    if date is not None:
        date = date.group()
        date.lstrip("0")
        querywords = command.split(' ')
        # here is where you get the full info for that date
        hist = db.get(ch, date)
        return hist
    else:
        return -1
Пример #38
0
async def plug_starboard(msg, emojis):
    global channel_id
    stars = msg.guild.get_channel(channel_id)
    starred = []

    # Count emojis
    for reaction in msg.reactions:
        if str(reaction.emoji) in emojis:
            starred.append(str(reaction.count) + "x" + str(reaction.emoji))

    embed = embedify.embedify(
        title = 'STARBOARD ;]',
        desc = msg.content,
        fields = [
            ['AUTHOR', f'<@{msg.author.id}> `{str(msg.author)}`', True],
            ['CHANNEL', f'<#{msg.channel.id}>', True],
            [
                'LINK',
                f'[JUMP](https://discord.com/channels/{msg.guild.id}/{msg.channel.id}/{msg.id})',
                True
            ],
            ['STARS', '\n'.join(starred), True]
        ],
        thumb = str(msg.author.avatar_url)
    )

    # Get the attachments
    attachments = [att.url for att in msg.attachments]
    if len(attachments):
        embed.add_field(
            name = 'ATTACHMENTS',
            value = '\n'.join(attachments),
            inline = False
        )
        try:
            msg.attachments[0].height
            embed.set_image(url = attachments[0])
        except:
            pass

    # Either post a new star or update the existing one
    stars_id = dbman.get('starboard', 'starboard_id', message_id = msg.id)
    try:
        if not stars_id:
            raise TypeError("stars_id isn't available yet")
        stars_msg = await stars.fetch_message(stars_id)
        await stars_msg.edit(embed = embed)
    except:
        stars_msg = await stars.send(embed = embed)
        dbman.insert('starboard', starboard_id = stars_msg.id, message_id = msg.id)
Пример #39
0
def test_process_commands():
    with open('src/test/test_output.txt', 'w+') as text_file:
        text_file.write('')
    commands = [
        {'close_time': 20, 'item': 'toaster_1', 'reserve_price': 10.0, 'timestamp': 10,
            'user_id': 1, 'bids': {}, 'bid_count': 0, 'highest_bid': 0, 'lowest_bid': math.inf},
        {'bid_amount': 7.5, 'item': 'toaster_1', 'timestamp': 12, 'user_id': 8},
        {'bid_amount': 12.5, 'item': 'toaster_1', 'timestamp': 13, 'user_id': 5},
        {'close_time': 20, 'item': 'tv_1', 'reserve_price': 250.0, 'timestamp': 15,
            'user_id': 8, 'bids': {}, 'bid_count': 0, 'highest_bid': 0, 'lowest_bid': math.inf},
        {'bid_amount': 20, 'item': 'toaster_1', 'timestamp': 17, 'user_id': 8},
        {'timestamp': 20}
    ]
    app.process_commands(commands, 'src/test/test_output.txt')
    assert database.get('toaster_1') == {'close_time': 20, 'item': 'toaster_1', 'reserve_price': 10.0, 'timestamp': 10, 'user_id': 1, 'bid_count': 3, 'highest_bid': 20, 'lowest_bid': 7.5, 'bids': {
        5: {'user_id': 5, 'amount': 12.5, 'timestamp': 13},
        8: {'user_id': 8, 'amount': 20, 'timestamp': 17}
    }}
    assert database.get('tv_1') == {'close_time': 20, 'item': 'tv_1', 'reserve_price': 250.0, 'timestamp': 15,
                                    'user_id': 8, 'bid_count': 0, 'bids': {}, 'highest_bid': 0, 'lowest_bid': math.inf}
    with open('src/test/test_output.txt', 'r') as text_file:
        contents = text_file.read()
        assert contents == '20|toaster_1|8|SOLD|12.50|3|20.00|7.50\n20|tv_1||UNSOLD|0.00|0|0.00|0.00\n'
Пример #40
0
    def unlink_struct(self, delete_orphaned=False):
        if self.struct_id == idc.BADADDR:
            return

        del database.get().classes_by_struct_id[self.struct_id]

        if delete_orphaned:
            idc.del_struc(self.struct_id)
        else:
            struct_name = idc.get_struc_name(self.struct_id)
            idc.set_struc_cmt(self.struct_id, 'Orphaned from %s' % self.name, False)
            idc.set_struc_name(self.struct_id, '%s_orphaned' % struct_name)

        self.struct_id = idc.BADADDR
Пример #41
0
async def queue_update(guild: discord.Guild, queue_id: int):
    queue = db.get(db.queue_ref(guild.id, queue_id), db.Key.queue, default=[])
    queue_name = db.get(db.queue_ref(guild.id, queue_id),
                        db.Key.name,
                        default="Lab")
    queue_update_channel = guild.get_channel(
        db.get(db.guild_ref(guild.id), db.Key.queue_updates_channel))

    await delete_queue_update_message(guild, queue_id)

    embed = discord.Embed(title=u"Next in queue:᲼᲼᲼᲼᲼᲼᲼᲼᲼᲼᲼᲼",
                          colour=discord.Colour.blue())
    embed.set_author(
        name=f"{queue_name.title()} Queue",
        icon_url=
        "https://cdn.discordapp.com/icons/812343984294068244/69241d42f3661678d61b3af3cfb04f45.png"
    )

    if len(queue) > 0:
        regex = re.compile(r" \(\d+\)")
        user = await guild.fetch_member(queue[0])
        embed.description = user.display_name
        embed.set_thumbnail(url=user.avatar_url)
        embed.set_footer(text="To move them to your room click ✅")

        for i in range(len(queue)):
            user = await guild.fetch_member(queue[i])
            await update_queue_position(user, i + 1, regex=regex)
    else:
        embed.description = "The queue is empty."

    message = await queue_update_channel.send(embed=embed)
    if len(queue) > 0:
        await message.add_reaction("✅")

    db.update(db.queue_ref(guild.id, queue_id), db.Key.queue_update_message,
              [queue_update_channel.id, message.id])
Пример #42
0
def login(request):
    global lg
    tmp = []

    for i in database.get("groups"):
        tmp.append(i)
        print(i)
        print(tmp)

    lg["groups"] = tmp

    if ("login" and "password") in request.GET:
        if "admin" == request.GET.get("login") and "0000" == request.GET.get(
                "password"):
            lg["success"] = True

    elif ("groups" and "message") in request.GET:
        msg = request.GET.get("message")
        users_list = database.get("users")
        group_name = request.GET.get("groups")

        if group_name == 'Sempai':
            for i in range(len(users_list)):
                if lg["groups"][0][0] == users_list[i][1]:
                    send_message(users_list[i][0], msg)

        elif group_name == 'Moder':
            for i in range(len(users_list)):
                if lg["groups"][1][0] == users_list[i][1]:
                    send_message(users_list[i][0], msg)

        elif group_name == "User":
            for i in range(len(users_list)):
                if lg["groups"][2][0] == users_list[i][1]:
                    send_message(users_list[i][0], msg)

    return render(request, "login.html", lg)
Пример #43
0
def ani_door(d, i, m, p, screen):
    x = {
        pygame.K_UP: p.x,
        pygame.K_DOWN: p.x,
        pygame.K_LEFT: p.x - 1,
        pygame.K_RIGHT: p.x + 1
    }[d]
    y = {
        pygame.K_UP: p.y - 1,
        pygame.K_DOWN: p.y + 1,
        pygame.K_LEFT: p.y,
        pygame.K_RIGHT: p.y
    }[d]
    door = i.i[y][x][0]
    key = {"黄": 0, "蓝": 1, "红": 2, "绿": 3}[door]
    if p.keys[key] > 0:
        p.keys[key] -= 1
        draw_status(p, screen)
        t0, phase, phase0 = time.time(), 1, 1
        floor = pygame.image.load(database.get(m.m[y][x]))
        print(x, y)
        while time.time() - t0 < 0.3:
            if time.time() - t0 < 0.1:
                phase = 2
            elif time.time() - t0 < 0.2:
                phase = 3
            else:
                phase = 4
            if phase0 != phase:
                pic = pygame.image.load(database.get(i.i[y][x] + str(phase)))
                screen.blit(floor, map2screen(m, x, y, init.V, 'corner'))
                screen.blit(pic, map2screen(m, x, y, init.V, 'corner'))
                pygame.display.update()
            phase0 = phase
        screen.blit(floor, map2screen(m, x, y, init.V, 'corner'))
        pygame.display.update()
        i.i[y][x] = ''
Пример #44
0
    def save_as(self):
        db = database.get()

        path = QtWidgets.QFileDialog.getSaveFileName(
            None, 'Export Classy database', '', 'Classy database (*.cdb)')
        if not path[0]:
            return

        # Check for user idiocy
        if os.path.normpath(path[0]) == os.path.normpath(db.path):
            idaapi.warning(
                'You cannot overwrite the currently active Classy database.')
            return

        db.save_as(path[0])
Пример #45
0
def man_lib(call):
    user[call.message.chat.id].list_of_objects = db.get(
        type_user="******"
    )  # TODO: Проверить, работает ли с пустым списком лайбрерианов
    user[call.message.chat.id].type = "Librarian"
    list_of_libs = [
        user[call.message.chat.id].list_of_objects[i].get_mail()
        for i in range(len(user[call.message.chat.id].list_of_objects))
    ]
    bot.edit_message_text(
        chat_id=call.message.chat.id,
        message_id=call.message.message_id,
        text="type email of Librarian from list\n{}".format(list_of_libs),
        reply_markup=bot_features.get_inline_markup(u.keyboard_button_back))
    bot.register_next_step_handler(call.message, search)
Пример #46
0
    def try_set_typedef(self, t):
        val = idaapi.askqstr('', 'Enter typedef value')
        if val is None:
            return

        val_segs = val.split()
        itanium_mangler.fix_multi_seg_types(val_segs)
        if len(val_segs) != 1 or (
                val_segs[0] not in itanium_mangler.BUILTIN_TYPES
                and not itanium_mangler.check_identifier(val_segs[0])):
            idaapi.warning('That value is invalid.')
            return

        database.get().typedefs[t] = val.strip()
        self.update_list()
Пример #47
0
async def createProject(name: str):
    conn, cur = database.get()

    r = gh.create_repository(name)
    if r:
        print(dir(r))
        await bot.say("Created {} successfully. Link: {}".format(
            r.name, r.clone_url))
    else:
        await bot.say("Github repo failed to create.")
        return

    with conn:
        conn.execute("INSERT INTO Projects ('name', 'repo') VALUES (?, ?)",
                     (name, r.clone_url))
Пример #48
0
def roomstat(DB, room):
	name = get(DB, "SELECT name FROM rooms WHERE id='{0}'".format(room))[0][0]
	desc = get(DB, "SELECT desc FROM rooms WHERE id='{0}'".format(room))[0][0]
	owner = get(DB, "SELECT owner FROM rooms WHERE id='{0}'".format(room))[0][0]
	exits = str2obj(get(DB, "SELECT exits FROM rooms WHERE id='{0}'".format(room))[0][0])
	items = str2obj(get(DB, "SELECT items FROM rooms WHERE id='{0}'".format(room))[0][0])
	locked = get(DB, "SELECT locked FROM rooms WHERE id='{0}'".format(room))[0][0]

	return {"name": name, "desc": desc, "owner": owner, "exits": exits,
		"items": items, "locked": locked}
Пример #49
0
def newFighter() -> str:
    battler = get("format")

    battler = battler.replace("#adjective#", get("adjective"))
    battler = battler.replace("#character#", get("character"))
    battler = battler.replace("#sidekick#", get("character"))
    battler = battler.replace("#power#", get("power"))
    battler = battler.replace("#weapon#", get("weapon"))

    return battler
Пример #50
0
    def update_user(self):
        db = sqlite3.connect('database.db')
        result = database.get(self.user_id, db)
        rows = result.fetchall()

        user_id = rows[0][0]

        print(user_id, self.lineEdit.text(), self.lineEdit_2.text(),
              self.lineEdit_3.text(), self.lineEdit_4.text())
        result2 = database.update(self.lineEdit.text(), self.lineEdit_2.text(),
                                  self.lineEdit_3.text(), self.lineEdit_4.text(), user_id, db)

        if result2:
            print("Successful")
        else:
            print("Error")
Пример #51
0
    def get_user(self):
        self.stackedWidget.setCurrentIndex(0)

        db = sqlite3.connect('database.db')
        result = database.get(self.user_id, db)
        rows = result.fetchall()

        name = rows[0][1]
        email = rows[0][2]
        password = rows[0][3]
        phone = rows[0][4]

        self.lineEdit.setText(name)
        self.lineEdit_2.setText(email)
        self.lineEdit_3.setText(password)
        self.lineEdit_4.setText(phone)
Пример #52
0
def C_MKROOM(S, DB, sender, args):
	if len(args) == 0:
		C_HELP(S, DB, sender, ["mkroom"])

	else:
		rnames = get(DB, "SELECT name FROM rooms")
		for name in rnames: # Check if the room exists.
			if " ".join(args).lower() == name[0].lower():
				send(S, sender, "A room by that name already exists.")
				return

		if goodname(" ".join(args)):
			newid = newroom(DB, " ".join(args), sender)
			send(S, sender, "Created new room \"{0}\", ID {1}.".format(" ".join(args), newid))
		else:
			send(S, sender, "Invalid name.")
Пример #53
0
    def set_struct_id(self, new_struct_id, delete_orphaned=False):
        db = database.get()

        if self.struct_id == new_struct_id:
            return

        if new_struct_id in db.classes_by_struct_id:
            raise ValueError('The struct is already assigned to the class %s' % db.classes_by_struct_id[new_struct_id]).name

        self.unlink_struct(delete_orphaned)

        self.struct_id = new_struct_id
        if self.struct_id != idc.BADADDR:
            db.classes_by_struct_id[self.struct_id] = self

        self.refresh()
Пример #54
0
async def createGist(message):
    conn, cur = database.get()

    tokens = message.content.split(' ')
    gistName = tokens[1]
    contents = ' '.join(tokens[2:])

    files = {'{}.txt'.format(gistName): {'content': contents}}

    gist = gh.create_gist(gistName, files)
    await bot.send_message(message.channel,
                           "Gist created {}".format(gist.html_url))

    with conn:
        conn.execute("INSERT INTO Gists ('link', 'gistName') VALUES (?, ?)",
                     (gist.html_url, gistName))
Пример #55
0
    def handle_add(self):
        t = idaapi.askqstr('', 'Enter typedef name')
        if t is None:
            return

        if t in database.get().typedefs:
            idaapi.warning('That name is already used.')
            return

        if not itanium_mangler.check_identifier(t):
            idaapi.warning('That name is invalid.')
            return

        # Todo: prevent overwriting builtins

        self.try_set_typedef(t)
Пример #56
0
def C_LIST(S, DB, sender, args):
	roomlist = get(DB, "SELECT id,name FROM rooms")

	if len(args) == 0: # List all the rooms.
		body = "Rooms: " # Rooms
		for n, room in enumerate(roomlist):
			if n < len(roomlist) - 1:
				body += room[1] + " (" + str(room[0]) + "), "
			else:
				body += room[1] + " (" + str(room[0]) + ")"
		send(S, sender, body)

	else:
		for room in roomlist:
			if room[1].lower() == " ".join(args).lower():
				send(S, sender, "{0} ({1})".format(room[1], str(room[0])))
				return
		send(S, sender, "No such room.")
Пример #57
0
def C_TP(S, DB, sender, args):
	if len(args) != 1:
		C_HELP(S, DB, sender, ["tp"])

	else:
		roomid = getroom(DB, sender)
		roominfo = roomstat(DB, roomid)
		playerinfo = playerstat(DB, sender)
		test = get(DB, "SELECT id FROM rooms WHERE id='{0}'".format(args[0])) # See if room exists.

		if len(test):
			try:
				announce_room(S, DB, roomid, "{0} teleported out of the room.".format(playerinfo["name"]))
				enterroom(DB, int(args[0]), sender) # Join new room.
				announce_room(S, DB, int(args[0]), "{0} teleported into the room.".format(playerinfo["name"]))
			except (ValueError): # Bad argument.
				C_HELP(S, DB, sender, ["tp"])

		else: # No such room.
			C_HELP(S, DB, sender, ["tp"])
Пример #58
0
	def __init__(self):
		"""set vars"""
		import os
		import database

		self.out = {}
		self.out_text = '' # if not json
		self.form = {}
		self.method = None
		self.db = database.get()
		
		if os.environ.get('REQUEST_METHOD'):
			self.load_env()
			self.load_form()
			self.load_cookies()
			
			# cleanup this so that request is loaded only once
			os.environ['REQUEST_METHOD'] = ''
			if not 'session.py' in self.script_name:
				self.start_session()
Пример #59
0
    def data(self):
        if self._cached_data:
            return self._cached_data

        db_key = (self._uri, self._params)
        self._cached_data = database.get(db_key)
        if self._cached_data:
            return self._cached_data

        if not self._check_user_agent():
            raise UserAgentError("Invalid or no User-Agent set.")

        response = requests.get(self._uri, params=self._params, headers=self._headers)
        if response.content and response.status_code == 200:
            release_json = json.loads(response.content)
            self._cached_data = release_json.get('resp').get(self._uri_name)
            database.put(db_key, self._cached_data)
            return self._cached_data
        else:
            status_code = self._response.status_code
            raise HTTPError(status_code)
Пример #60
0
 def bootstrap(self):
     if os.path.exists('versions/bootstrap.yml'):
         raise AppError("bootstrap can only be run on an empty project without versions.")
     # Create the bootstrap version
     db = database.get(self.connection_info)
     db_schema = db.get_actual_schema()
     bootstrap_version = self.create_bootstrap(db_schema)
     # Modify the migrations table to honor the migration_table setting.
     migration_table = schema.Table()
     migration_table.load_from_file(_get_resource_path('/migrations.yml'))
     migration_table.name = config.migration_table
     # Create the head_version schema
     head_version = schema.Version()
     head_version.filename = self.path + "/versions/head.yml"
     head_version.name = "head"
     head_version.schema = bootstrap_version.schema
     head_version.migration.previous = bootstrap_version.name
     head_version.create_table(migration_table)
     # Save the head version to the path and the head.yml
     head_version.save_to_file()
     head_version.save_to_path(self.path + "/schema")