Beispiel #1
0
def friend_request():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    friendname = request.json.get('friendname')

    if username == None or friendname == None:
        abort(400)

    if db_manager.username_exists(username) and db_manager.username_exists(
            friendname):
        if not db_manager.users_are_friends(username, friendname):
            email = db_manager.get_user(friendname).get("email")

            # Email request
            token = generate_confirmation_token([username, friendname])
            confirm_url = url_for('accept_friend', token=token, _external=True)
            html = render_template('friend.html',
                                   confirm_url=confirm_url,
                                   name=username)
            subject = "New friend request"
            send_email(email, subject, html)

            return "Email sent"
        else:
            return "ERROR, already friends"
Beispiel #2
0
def backuper():
    """
    Backs up each item in backup list.
    """
    # start logging
    logging.info('Starting backups')

    # bring in the backups
    db = DatabaseManager(BACKUP_FILE_PATH)
    logging.debug('Database loaded')

    sql = 'SELECT * FROM backups'
    backup_list = db.select(sql, None)

    # backup schema:
    # [0]coordinate, [1]name, [2]owner, [3]active, [4]backup_times

    for entry in backup_list:
        # Is this planet being actively backed up?
        if not entry[3]:
            # nope, skip it
            continue

        # perform the backup action
        perform_backup(db, entry)

        # update log to reflect new backup
        prune_backups(db, entry)

    logging.info('Backups completed.')
    logging.info('=====================================================.')
Beispiel #3
0
def callback():
    code = request.args.get('code')
    url = 'https://accounts.spotify.com/api/token'

    resp = requests.post(url=url,
                         data={
                             'grant_type': 'authorization_code',
                             'code': code,
                             'redirect_uri': SPOTIFY_REDIRECT_URI,
                             'client_id': SPOTIFY_CLIENT_ID,
                             'client_secret': SPOTIFY_CLIENT_SECRET
                         })

    if resp.status_code != 200:
        print resp.json()

    else:
        token = resp.json()
        access_token = '%s %s' % (token['token_type'], token['access_token'])
        refresh_token = token['refresh_token']

        resp = requests.get(url='https://api.spotify.com/v1/me',
                            headers={'Authorization': access_token})

        if resp.status_code == 200:
            user_data = resp.json()

            manager = DatabaseManager(DATABASE)
            manager.create_user(session['telegram_user'],
                                session['telegram_first_name'],
                                user_data['id'], access_token, refresh_token)

    return redirect('/')
Beispiel #4
0
def get_friends():
    db_manager = DatabaseManager()

    username = request.json.get('username').lower()
    token = request.json.get('token')

    if username == None or token == None:
        abort(400)

    # Verifiy token
    token_credentials = db_manager.verify_auth_token(token=token)
    if token_credentials is None:
        abort(401)
    elif not db_manager.check_password(token_credentials[0],
                                       token_credentials[1]):
        abort(401)
    elif token_credentials[0] != username:
        abort(401)

    friends = db_manager.get_friends_for_user(username)
    # It is unsafe to send your friends password hash to the browser...         email_verified and id aren't needed
    for friend in friends:
        if friend == None:
            friends.remove(friend)
            continue
        del friend['password_hash']
        del friend['email_verified']
        del friend['id']

    return response_cache_header(json.dumps({"friends": friends}))
Beispiel #5
0
def change_password():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    old_password = sha512_crypt.encrypt(
        request.json.get('old_password'),
        salt=app.config['SECURITY_PASSWORD_SALT'],
        rounds=5000)
    new_password = sha512_crypt.encrypt(
        request.json.get('new_password'),
        salt=app.config['SECURITY_PASSWORD_SALT'],
        rounds=5000)
    token = request.json.get('token')

    # Not everything filled in
    if username == None or old_password == None or new_password == None or token == None:
        abort(400)

    # Verifiy token
    token_credentials = db_manager.verify_auth_token(token=token)
    if token_credentials is None:
        abort(401)
    elif not db_manager.check_password(token_credentials[0],
                                       token_credentials[1]):
        abort(401)
    elif token_credentials[0] != username:
        abort(401)

    if db_manager.check_password(username, old_password):
        db_manager.change_password(username, old_password, new_password)
        return response_cache_header("Changed password",
                                     cache_control="no-cache")
    else:
        return response_cache_header("ERROR, Wrong password",
                                     cache_control="no-cache")
Beispiel #6
0
def initEnv():
    """ Code to be executed when called by test function """
    fileConfigApp = 'CalcAl.ini'
    configApp = configparser.RawConfigParser()
    configApp.read(fileConfigApp, encoding="utf-8")
    CalcAl.setLocaleCalcal(configApp, '.')

    # Create and open test database
    baseDirPath = os.path.join(configApp.get('Resources', 'ResourcesDir'),
                               configApp.get('Resources', 'DatabaseDir'))
    baseTestDirPath = os.path.join(baseDirPath, "test")
    if not os.path.exists(baseTestDirPath):
        os.mkdir(baseTestDirPath)
    demoDatabaseName = configApp.get('Resources', 'DemoDatabaseName')
    shutil.copyfile(os.path.join(baseDirPath, demoDatabaseName),
                    os.path.join(baseTestDirPath, demoDatabaseName))

    databaseManager = DatabaseManager.DatabaseManager(configApp, '.',
                                                      baseTestDirPath)
    databaseManager.openDatabase(demoDatabaseName)

    # Init user table in test database
    database = databaseManager.getDatabase()
    database.createUserTables()

    # Values returned to each test calling function
    return configApp, databaseManager
Beispiel #7
0
    def __init__(self) -> None:
        self.root = Tk()
        self.root.geometry("300x370+0+0")
        # self.root.resizable(True, True)
        self.root.eval("tk::PlaceWindow . center")
        self.root.title("Чеботарёв Степан ПКС-405")
        self.root.iconphoto(False, PhotoImage(file=config_get("icon_path")))
        self.Frame = None
        self.database_manager = DatabaseManager()

        # ? Fonts
        self.font_color = "#37474F"
        self.font_color_complementary = "#78909C"
        self.font_color_accent = "#FF9C1A"
        self.font_captcha = ("Curlz MT", 24)
        self.font_20 = (
            "Arial",
            20,
        )
        self.font_24 = (
            "Arial",
            24,
        )
        self.font_28 = (
            "Arial",
            28,
        )
def main():
    parser = ArgumentParser()
    parser.add_argument("--db-uri", required=True)
    parser.add_argument("--serializer", default="CsvRawSerializer")

    args = parser.parse_args()

    logger.info("init")

    db = DatabaseManager(args.db_uri)
    store = YaDiskStore(token=db.get_tokens().yandex_disk)

    for controller in db.get_controllers():
        c = Controller(name=controller.name, mac=controller.mac)
        store.prepare_for_sync_controller(c)

        for sensor in db.get_sensors(controller):
            first_date = db.get_first_sensor_data_date(sensor.id)

            s = Sensor(name=sensor.name, id=sensor.id, controller=c)
            store.prepare_for_sync_sensor(s)
            store.sync(
                sensor=s,
                serializer=getattr(serializers, args.serializer)(),
                stream_wrapper=AesStreamWrapper(key=db.get_encryption_key()),
                first_date=first_date,
                get_data=lambda time_range: db.get_sensor_data(
                    sensor.id, time_range),
            )

    logger.info("done")
Beispiel #9
0
def authenticate():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    password = sha512_crypt.encrypt(request.json.get('password'),
                                    salt=app.config['SECURITY_PASSWORD_SALT'],
                                    rounds=5000)

    if username and password:
        if db_manager.get_user(username):
            if db_manager.get_user(username).get('email_verified'):
                # Check password
                if db_manager.check_password(username, password):
                    return json.dumps({
                        "token":
                        db_manager.generate_auth_token(
                            username, password).decode("utf-8")
                    })
            else:
                return "ERROR, Email not verified"
        else:
            return "ERROR, User not found"
    else:
        return Response('Login!', 401,
                        {'WWW-Authenticate': 'Basic realm="Login!"'})
Beispiel #10
0
def database_manager() -> DatabaseManager:

    filename = "helpdesk.db"
    dbm = DatabaseManager(filename)
    yield dbm
    dbm.__del__()  # explicitly release the database manager
    os.remove(filename)
Beispiel #11
0
def get_friends():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    token = request.json.get('token')

    if username == None or token == None:
        abort(400)

    # Verifiy token
    token_credentials = db_manager.verify_auth_token(token=token)
    if token_credentials is None:
        return json.dumps({'username': '******'})
    elif not db_manager.check_password(token_credentials[0],
                                       token_credentials[1]):
        return json.dumps({'username': '******'})
    elif token_credentials[0] != username:
        abort(401)

    friends = db_manager.get_friends_for_user(username)
    # It is unsafe to send your friends password hash to the browser... 	email_verified and id aren't needed
    for friend in friends:
        del friend['password_hash']
        del friend['email_verified']
        del friend['id']

    return json.dumps(friends)
Beispiel #12
0
def register():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    password = sha512_crypt.encrypt(request.json.get('password'),
                                    salt=app.config['SECURITY_PASSWORD_SALT'],
                                    rounds=5000)
    email = request.json.get('email')

    # Check if everything filled in
    if username is None or password is None or email is None:
        return "ERROR, not everything filled in"  # missing arguments

    # Check if already exists
    elif db_manager.username_exists(username) or db_manager.email_exists(
            email):
        return "ERROR, username and/or email do already exist"  # username and/or email do already exist

    else:
        db_manager.create_user(username=username,
                               password_hash=password,
                               email=email,
                               email_verified=False)

        # Email verification
        token = generate_confirmation_token(email)
        confirm_url = url_for('verify_email', token=token, _external=True)
        html = render_template('email.html', confirm_url=confirm_url)
        subject = "Please confirm your email"
        send_email(email, subject, html)

        return "Successfully created user, please verify email.\n"
Beispiel #13
0
    def __init__(self):
        self.databaseManager = DatabaseManager()
        self.communicationManager = CommunicationManager()

        self.file_type = self.databaseManager.get_file_type()
        self.seed_path = self.databaseManager.get_seed_path()
        self.seed_file = self.databaseManager.get_seed_file()
        self.mutate_path = self.databaseManager.get_mutate_path()
        self.crash_path = self.databaseManager.get_crash_path()
        self.target_path = self.databaseManager.get_target_path()
        self.work_summary = None

        self.loop = self.databaseManager.get_loop()
        self.test_number = self.databaseManager.get_test_number()
        self.mutate_mode = self.databaseManager.get_mutate_mode() # windows binary or docker container
        self.stop = False
        
        self.pid = None
        self.debug = None
        self.event = None
        self.debug_time = 0
        self.system_bit = self.databaseManager.get_system_bit()
        
        
        require_directorys = [self.seed_path, self.mutate_path, self.crash_path]
        for directory in require_directorys:
            if not os.path.exists(directory):
                os.makedirs(directory)
Beispiel #14
0
    def __init__(self):
        super().__init__(command_prefix=custom_prefix,
                         owner_id=int(environ['OWNER_ID']),
                         case_insensitive=True,
                         help_command=None,
                         max_messages=None,
                         fetch_offline_members=platform.machine() != 'armv7l',
                         activity=Game(f'Loading...'))

        self.db = DatabaseManager(name=environ['DATABASE_NAME'],
                                  uri=environ['DATABASE_URI'],
                                  bot=self)
        self.i18n = i18n.I18N(source='pt_BR')
        self.log = log
        self.emoji = emojis
        self.color = DEFAULT_EMBED_COLORS
        self.loaded = False
        self.launched_shards = []
        self.started_at = datetime.utcnow()
        self.wavelink = wavelink.Client(self)
        self.guild_blacklist = set()
        self.user_blacklist = set()
        self.invoked_commands = 0
        self.read_messages = 0
        self.played_tracks = 0
        self.prefixes = environ['PREFIXES'].split(', ')
        self._prefixes = {}
        self._message_logs = set()
Beispiel #15
0
def remember():
    db_manager = DatabaseManager()

    selector = request.json.get('selector')

    if selector:
        data = db_manager.get_auth_id(selector)
        if data:
            token = json.loads(data)['token']

            return response_cache_header(json.dumps({
                "token": token,
                "success": True
            }),
                                         cache_control="no-cache")
        else:
            return response_cache_header(json.dumps({
                "error": "no session",
                "success": False
            }),
                                         cache_control="no-cache")
    else:
        return response_cache_header(json.dumps({
            "error": "no session",
            "success": False
        }),
                                     cache_control="no-cache")
Beispiel #16
0
def delete_list():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    listname = request.json.get('listname')
    token = request.json.get('token')

    if username == None or listname == None or token == None:
        abort(400)

    # Verifiy token
    token_credentials = db_manager.verify_auth_token(token=token)
    if token_credentials is None:
        return json.dumps({'username': '******'})
    elif not db_manager.check_password(token_credentials[0],
                                       token_credentials[1]):
        return json.dumps({'username': '******'})
    elif token_credentials[0] != username:
        abort(401)

    if not db_manager.listname_exists_for_user(username, listname):
        return "No list found"

    if db_manager.listname_exists_for_user(username, listname):
        db_manager.delete_list(username, listname)
        return "Successfully deleted list"

    return abort(401)
Beispiel #17
0
def delete_list():
    db_manager = DatabaseManager()

    username = request.json.get('username').lower()
    listname = request.json.get('listname')
    token = request.json.get('token')

    if username == None or listname == None or token == None:
        abort(400)

    # Verifiy token
    token_credentials = db_manager.verify_auth_token(token=token)
    if token_credentials is None:
        abort(401)
    elif not db_manager.check_password(token_credentials[0],
                                       token_credentials[1]):
        abort(401)
    elif token_credentials[0] != username:
        abort(401)

    if not db_manager.listname_exists_for_user(username, listname):
        return response_cache_header("No list found", cache_control="no-cache")

    if db_manager.listname_exists_for_user(username, listname):
        db_manager.delete_list(username, listname)
        return response_cache_header(json.dumps(
            {'response': 'Successfully deleted list'}),
                                     cache_control="no-cache")

    return abort(401)
Beispiel #18
0
def friend_request():
    db_manager = DatabaseManager()

    username = request.json.get('username')
    friendname = request.json.get('friendname')

    if username == None or friendname == None:
        abort(400)

    if db_manager.username_exists(username) and db_manager.username_exists(
            friendname):
        if not db_manager.users_are_friends(username, friendname):
            email = db_manager.get_user(friendname).get("email")

            # Email request
            token = generate_confirmation_token([username, friendname])
            confirm_url = 'https://api.woording.com/acceptFriend/' + token
            html = render_template('friend.html',
                                   confirm_url=confirm_url,
                                   name=username)
            subject = "New friend request"
            send_email(email, subject, html)

            return response_cache_header("Email sent",
                                         cache_control="no-cache")
        else:
            return response_cache_header("ERROR, already friends",
                                         cache_control="no-cache")
Beispiel #19
0
 def __init__(self, app):
     QDialog.__init__(self)
     self.app = app
     self.app_path = os.getenv("APPDATA") + "\\" + qApp.applicationName()
     self.registrySettings = QSettings("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", QSettings.NativeFormat)
     self.table_path = self.app_path + "\\tables"
     self.engine = Engine()
     self.minimize_action = QAction("Minimize", self)
     self.maximize_action = QAction("Maximize", self)
     self.settings_action = QAction("Settings", self)
     self.about_action = QAction("About", self)
     self.quit_action = QAction("Quit", self)
     self.tray_icon_menu = QMenu(self)
     self.tray_icon = QSystemTrayIcon(self)
     self.setupUi(self)
     self.icon = QIcon(QPixmap(":icon/off_logo"))
     self.construct_tray_icon()
     self.signal_connectors()
     self.database = DatabaseManager()
     self.shortcut_key = self.database.get_shortcut_key()
     self.populate_modifier_cbox()
     if self.database.get_current_state() == "True":
         self.engine.conv_state = False
     else:
         self.engine.conv_state = True
     self.icon_activated(QSystemTrayIcon.Trigger)
     self.file_path_tview.setEnabled(False)
     self.check_app_path()
     self.update_table(True)
     self.init_combobox()
     if self.registrySettings.contains(qApp.applicationName()):
         self.start_windows_check.setChecked(True)
     else:
         self.start_windows_check.setChecked(False)
Beispiel #20
0
def classify(song_id, activity):
    manager = DatabaseManager(DATABASE)

    return jsonify({
        'code': 1,
        'updated': manager.classify_song(song_id, activity)
    })
Beispiel #21
0
def random_course(request):
    if not request.is_ajax():
        print 'not ajax'
        return
    db = DatabaseManager()
    course = db.generate_random_course()
    jsonified = json.dumps(course, default=decimal_default)
    return HttpResponse(jsonified)
Beispiel #22
0
def test_dbm_fx() -> DatabaseManager:
    """
    Test fixture for Database Manager.

    A DATABASE CONFIGURATION AND CONNECTION IS REQUIRED FOR THESE TESTS.
    """
    database = DatabaseManager()
    return database
Beispiel #23
0
def database_manager() -> DatabaseManager:

    filename = "test_additional.db"
    dbm = DatabaseManager(filename)
    yield dbm
    dbm.__del__()  # this is to release the database manager afterwards
    os.remove(filename
              )  # this does what it sounds like it does, removes the test file
Beispiel #24
0
 def __init__(self, game_ids, players, season=None, force_retrieval=False):
     self.force_retrieval = force_retrieval
     self.season = season
     self.game_ids = game_ids
     self.players = players
     self.database_manager = DatabaseManager()
     self.parser = PlayByPlayParser()
     self.game_root_url = "http://www.espn.com/nba/playbyplay?gameId={0}"
Beispiel #25
0
def save_song(telegram_user):
    manager = DatabaseManager(DATABASE)
    user_data = manager.get_user_by_telegram_id(telegram_user,
                                                access_token=True)

    track_id = request.form['track_id']
    track_features = get_track_features(track_id, user_data['access_token'])
    if not track_features:
        return ({
            'code': -1,
            'message': u'Error de autenticación. Prueba con "/conectar"'
        })

    track = {
        'track_id':
        track_id,
        'track_name':
        request.form['track_name'],
        'track_album_id':
        request.form['track_album_id'],
        'track_album_name':
        request.form['track_album_name'],
        'track_popularity':
        request.form['track_popularity'],
        'track_artists':
        request.form['artists'].split(','),
        'duration':
        track_features['duration_ms'] if track_features else 'NA',
        'danceability':
        track_features['danceability'] if track_features else 'NA',
        'energy':
        track_features['energy'] if track_features else 'NA',
        'key':
        track_features['key'] if track_features else 'NA',
        'loudness':
        track_features['loudness'] if track_features else 'NA',
        'mode':
        track_features['mode'] if track_features else 'NA',
        'speechiness':
        track_features['speechiness'] if track_features else 'NA',
        'acousticness':
        track_features['acousticness'] if track_features else 'NA',
        'instrumentalness':
        track_features['instrumentalness'] if track_features else 'NA',
        'liveness':
        track_features['liveness'] if track_features else 'NA',
        'valence':
        track_features['valence'] if track_features else 'NA',
        'tempo':
        track_features['tempo'] if track_features else 'NA'
    }

    inserted_track_id = manager.add_songs(user_data['id'], [track])
    manager.classify_song(inserted_track_id,
                          ACTIVITIES.index(request.form['activity']))

    return jsonify({'code': 1, 'message': 'Saved song succesfully!!!!'})
Beispiel #26
0
 def test_cursor_type(self):
     dbm = DatabaseManager(config.DB_HOST, config.DB_USER,
                           config.DB_PASSWORD, config.DB_NAME)
     get_cursor_type = dbm._DatabaseManager__get_cursor_type
     self.assertEqual(get_cursor_type(use_dict=True),
                      MySQLdb.cursors.DictCursor)
     self.assertEqual(get_cursor_type(use_dict=False),
                      MySQLdb.cursors.Cursor)
     dbm.close()
Beispiel #27
0
def train(telegram_user):
    manager = DatabaseManager(DATABASE)
    unclassified_song = manager.get_unclassified_songs(telegram_user)

    if not unclassified_song:
        return jsonify({'code': 0, 'message': 'All your song are trained.'})

    else:
        return jsonify({'code': 1, 'song': unclassified_song})
Beispiel #28
0
def course_search(request):
    if not request.is_ajax():
        print 'not ajax'
        return
    coursecode = request.POST['coursecode']
    db = DatabaseManager()
    courses = db.recommend_courses(coursecode)
    jsonified = json.dumps(courses, default=decimal_default)
    return HttpResponse(jsonified)
Beispiel #29
0
def accept_friend(token):
    db_manager = DatabaseManager()
    names = confirm_token(token)

    if db_manager.users_are_friends(names[0], names[1]):
        return "Already friends"
    else:
        db_manager.create_friendship(names[0], names[1])
        return "Now friends"
Beispiel #30
0
def database_manager() -> DatabaseManager:
    """
    What is a fixture? https://docs.pytest.org/en/stable/fixture.html#what-fixtures-are
    """
    filename = "test_bookmarks.db"
    dbm = DatabaseManager(filename)
    yield dbm
    dbm.__del__()  # explicitly release the database manager
    os.remove(filename)