예제 #1
0
def start(bot, update):
    database = DBHandler()
    database.add_id(update.message.chat_id)
    logger.info("Connected to bot: %d" % update.message.chat_id)
    bot.send_message(chat_id=update.message.chat_id, text="Hello")
    bot.send_message(chat_id=update.message.chat_id,
                     text=database.get_latest_post()[0])
예제 #2
0
def home():
    """ Display the home page """
    columns_to_hide = ('vautoid', 'carfaxid', 'body_type', 'created_at')
    db_handler = DBHandler()
    records = db_handler.get_all_potential_records()
    table_headers = list(records[0].keys())
    make_model_records = db_handler.get_all_make_models()
    make_model = defaultdict(list)
    for record in make_model_records:
        make_model[record["make"]].append(record["model"])

    make_model_year_col = [record["make_model_year"] for record in records]
    years = defaultdict(int)
    year_regex = re.compile(r"^\s*(\d+)")
    for value in make_model_year_col:
        match_obj = year_regex.search(value)
        if match_obj is not None:
            years[match_obj.group(1)] += 1

    years = sorted(
        years.items(),
        reverse=True)  # This will return a list of tuple (key, value)
    return render_template("home.html",
                           table_headers=table_headers,
                           records=records,
                           make_model=make_model,
                           columns_to_hide=columns_to_hide,
                           years=years)
예제 #3
0
    def roll(self, crit_type, database, weapon_type):

        if database == '--Select database--' or weapon_type == '--Select weapon type--':
            self.textlabel.setText('Invalid input.\nCheck the dropdown menus.')
            return

        db_filename = database + '.sqlite'
        global dbobj
        dbobj = DBHandler(db_filename)

        if self.checkbox.isChecked():
            crit = dbobj.select_random(crit_type, 1, weapon_type)
            if crit == None:
                self.textlabel.setText('No crits in the database!')
                return
        else:
            crit = dbobj.select_random(crit_type, 0, weapon_type)
            if crit == None:
                self.textlabel.setText(
                    'No more unused crits.\nUntick \'used\' box or reset')
                return
            dbobj.set_used(crit[2], crit_type)

        crittext = 'Author: {}\nName: {}\n\n{}'.format(crit[1], crit[2],
                                                       crit[3])
        self.textlabel.setText(crittext)
예제 #4
0
파일: userapi.py 프로젝트: turfaa/turangga
def showUrl(local=False, token=None):
    if local:
        local_make_response = data_to_object

        if token is None:
            return local_make_response(False, {'message': 'Invalid data'})

    else:
        local_make_response = data_to_response

        if not ('token' in request.form):
            return local_make_response(False, {'message': 'Invalid data'})

        token = request.form['token']

    db = DBHandler()
    try:
        username = db.tokenLookup(token)
        urls = db.userOwn(username)
    except DBException as err:
        return local_make_response(False, {'message': err.message})
    else:
        urls = list(urls)

        for i in range(len(urls)):
            urls[i] = list(urls[i])
            urls[i][0] = baseurl + urls[i][0]

        return local_make_response(True, {'url': urls})
예제 #5
0
    def unlock(self, username, password, create_new):
        user_data_dir = os.path.join(self.data_directory, username)
        if create_new:
            if os.path.exists(user_data_dir):
                raise AuthenticationError('User {} already exists'.format(username))
            else:
                os.mkdir(user_data_dir)
        else:
            if not os.path.exists(user_data_dir):
                raise AuthenticationError('User {} does not exist'.format(username))

            if not os.path.exists(os.path.join(user_data_dir, 'rotkehlchen.db')):
                # This is bad. User directory exists but database is missing.
                # Make a backup of the directory that user should probably remove
                # on his own. At the same time delete the directory so that a new
                # user account can be created
                shutil.move(
                    user_data_dir,
                    os.path.join(self.data_directory, 'backup_%s' % username)
                )

                raise AuthenticationError(
                    'User {} exists but DB is missing. Somehow must have been manually '
                    'deleted or is corrupt. Please recreate the user account.'.format(username))

        self.db = DBHandler(user_data_dir, username, password)
        self.user_data_dir = user_data_dir
        return user_data_dir
예제 #6
0
파일: userapi.py 프로젝트: turfaa/turangga
def changePassword(local=False,
                   token=None,
                   oldPassword=None,
                   newPassword=None):
    if local:
        local_make_response = data_to_object

        if (token is None) | (oldPassword is None) | (newPassword is None):
            return local_make_response(False, {'message': 'Invalid data'})

    else:
        local_make_response = data_to_response

        if (not ('token' in request.form)) | (
                not ('oldPassword' in request.form)) | (not ('newPassword'
                                                             in request.form)):
            return local_make_response(False, {'message': 'Invalid data'})

        token = request.form['token']
        oldPassword = request.form['oldPassword']
        newPassword = request.form['newPassword']

    db = DBHandler()
    try:
        username = db.tokenLookup(token)
        db.userChangePassword(username, oldPassword, newPassword)
    except DBException as err:
        return local_make_response(False, {'message': err.message})
    else:
        return local_make_response(True)
예제 #7
0
파일: userapi.py 프로젝트: turfaa/turangga
def register(local=False, username=None, password=None):
    if local:
        local_make_response = data_to_object
        if (username is None) | (password is None):
            return local_make_response(False, {'message': 'Invalid data'})

    else:
        local_make_response = data_to_response

        if (not ('username' in request.form)) | (not ('password'
                                                      in request.form)):
            return local_make_response(False, {'message': 'Invalid data'})

        username = request.form['username']
        password = request.form['password']

    if (len(username) < 2):
        return local_make_response(
            False, {'message': 'Username\'s length should be more than 2'})

    if (len(password) < 8):
        return local_make_response(
            False, {'message': 'Password\'s length should be more than 7'})

    db = DBHandler()
    try:
        db.userCreate(username, password)
    except DBException as err:
        return local_make_response(False, {'message': err.message})
    else:
        return local_make_response(True)
예제 #8
0
 def get_user_data(self, userid):
     db = DBHandler()
     db.connect()
     query = "SELECT email, signup_date FROM Users where userid = %s;"
     cursor = db.executeQuery(query, (str(userid)))
     tupl = cursor.fetchone()
     return tupl
예제 #9
0
    def get_results(self):

        from_ = self.from_datetime_edit
        to = self.to_datetime_edit

        # from_.setDateTime(now)

        # to = to.dateTimeFromText(now)

        from_date = from_.textFromDateTime(from_.dateTime())  # Starting date
        to_date = to.textFromDateTime(to.dateTime())  # Ending date

        with DBHandler(self.context.get_database) as cursor:

            cursor.execute(
                """SELECT product_name, sum(quantity_sold), sum(price)
                            FROM `orders` WHERE username= ? AND
                            `date` BETWEEN ? AND ?
                            GROUP BY product_name;""",
                [self.username, from_date, to_date])

            products_result = cursor.fetchall()

            cursor.execute(
                """SELECT sum(price)
                            FROM `orders` WHERE username = ? 
                            AND `date` BETWEEN ? AND ?""",
                [self.username, from_date, to_date])

            total_result = cursor.fetchone()

            # print(products_result)

            return products_result, total_result
예제 #10
0
def main():

    # Read in data and extract data arrays
    #logging.info("Reading input files.")

    dbh = DBHandler(options.db_config_filename, options.db_config_name)
    ssh = SmartMetHandler(options.smartmet_config_filename,
                          options.smartmet_config_name,
                          sleep_time=options.requests_throttle_time)
    fh = FileHandler(s3_bucket='fmi-sasse-classification-dataset')
    tracker = Tracker(dbh, ssh)

    starttime = dt.datetime.strptime(options.starttime, "%Y-%m-%dT%H:%M:%S")
    endtime = dt.datetime.strptime(options.endtime, "%Y-%m-%dT%H:%M:%S")

    d = starttime
    ymd = '{}{}{}'.format(d.year, d.month, d.day)
    while d <= endtime:
        logging.info('Processing time: {}'.format(d))
        tracker.run(d)
        d += timedelta(hours=1)
        if ymd != '{}{}{}'.format(d.year, d.month, d.day):
            save_dataset(tracker, d, fh=fh, db=dbh)
        ymd = '{}{}{}'.format(d.year, d.month, d.day)

    #if tracker.dataset is not None and len(tracker.dataset) > 0:
    save_dataset(tracker, d, fh=fh, db=dbh)
예제 #11
0
 def __init__(self):
     self.config = util.load_config()
     util.register_gcp_credential(self.config)
     self.dbhandler = DBHandler(self.config)
     self.gcphandler = GCPHandler(self.config)
     target_ids = util.load_target_ids('target.txt')
     self.user_sids = self.dbhandler.select_user_sids(target_ids)
예제 #12
0
    def authenticate_user(self):
        username = self.username_line_edit.text()
        password = self.password_line_edit.text()

        with DBHandler(self.context.get_database) as cursor:
            find_user_query = """
            SELECT priviledge FROM users WHERE
            username = ? AND password = ?
            """

            cursor.execute(find_user_query, [username, password])

            results = cursor.fetchone()

        try:
            if results[0] == 0:
                from saleswindow import SalesWindow
                # Create session and all activites will be recorded with `username`
                self.saleswindow = SalesWindow(username=username,
                                               context=self.context)
                self.saleswindow.show()
                self.hide()

            if results[0] == 1:
                from adminwindow import AdminWindow
                self.adminwindow = AdminWindow(context=self.context)
                self.adminwindow.show()
                self.hide()

        except TypeError as e:
            self.error_label.setText(str(e))
예제 #13
0
def run(bot):
    database = DBHandler()
    while True:
        for user in database.get_items():
            latest_posts = get_updates(database)
            send_posts_to(bot, user, latest_posts)

        sleep(1 * config.HOURS)
예제 #14
0
 def __init__(self,
              timeout=None,
              db_config=("127.0.0.1", "my_database", "my_user")):
     assert timeout == None or isinstance(
         timeout, int), "timeout must be an integer in seconds"
     self.channels = {}  # channel_name = [channel_callback]
     self.mustExit = threading.Event()
     self.timeout = timeout
     self.db = DBHandler(db_config)
예제 #15
0
    def get_product_list(self):
        with DBHandler(self.context.get_database) as cursor:
            cursor.execute("SELECT * FROM products")
            results = cursor.fetchall()

            # Genexpr to get all items from database
            self.product_list = [
                self._Product(*value) for _, value in enumerate(results)
            ]
예제 #16
0
    def __init__(self, host, port, dbhost="localhost", dbport=27017):
        threading.Thread.__init__(self)
        self.ssap = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.ssap.bind((host, port))
        self.ssap.listen(1)
        self.client_handlers = dict()

        self.dbhandler = DBHandler(mongohost=dbhost, mongoport=dbport)
        print('listening on ', port)
예제 #17
0
파일: resolver.py 프로젝트: turfaa/turangga
def resolve(short):
    db = DBHandler()

    try:
        redir = db.urlLookup(short)
        db.urlVisit(short)
    except DBException as err:
        return err.message
    else:
        return redirect(redir)
예제 #18
0
    def test_2(self):
        h = DBHandler(inmemory=True)
        records = [Record(1, datetime(2020,12,24,0,0,0), 88, 99),
                   Record(1, datetime(2020,12,24,0,0,0), 88, 99),
                   Record(1, datetime(2020,12,24,0,0,0), 88, 99),]
        [h.insert_record(r) for r in records]

        h.update_uploaded_row_by_less_then_uid(2)
        rows = h.read_unuploaded_rows()
        uids = [r[0] for r in rows]
        self.assertEqual(uids, [3])
예제 #19
0
def save_comments():
    """ Save comments to potential deals table """
    potential_deal_id = int(request.form.get("id"))
    action = request.form.get("action")
    if action.lower() == "none":
        action = None
    comments = request.form.get("comments")
    db_handler = DBHandler()
    db_handler.update_by_id(potential_deal_id, action, comments)
    # return redirect(url_for("home"))
    return jsonify({"success": True}), 200
예제 #20
0
    def __init__(self, parent=None):
        super().__init__(parent)
        conn = sqlite3.connect('cetizen.db')
        self.db = DBHandler(conn)
        self.ui = loadUi('cetizen.ui', self)


        self.logger.setText('')
        self.table.setAlternatingRowColors(True)
        #self.table.setRootIsDecorated(False)

        self.setWindowTitle('Cetizen Crawler')
        self.ui.show()
예제 #21
0
 def __init__(self, test=False, remote=False):
     """         
         Initialize a new CrossValidation instance.         
     
        :param test: if running in test mode or not
        :type test: boolean
        :param remote: whether to use the remote database that is configured in DBHandler
        :type remote: boolean
     """
     self._test = test
     self.dbh = DBHandler(league=LEAGUES[0], test=self._test, remote=remote)
     self.data = {_l: {_y: (None, None) for _y in YEARS} for _l in LEAGUES}
     self._indces = {_l: 0 for _l in LEAGUES}
예제 #22
0
파일: userapi.py 프로젝트: turfaa/turangga
def logout(local=False, token=None):
    if local:
        local_make_response = data_to_object
    else:
        local_make_response = data_to_response
        if 'token' in request.form:
            token = request.form['token']

    if not (token is None):
        db = DBHandler()
        db.userLogout(request.form['token'])

    return local_make_response(True)
예제 #23
0
파일: mainWidget.py 프로젝트: ThiiD/SSR
    def _startDataRead(self):
        """
        Método utilizado para configurar a conexão socket e inicializar uma thread para a leitura dos dados e atualização da interface grafica
        :param ip: ip da conexão socket
        :param port: porta para a conexao socket
        """
        try:
            self._apogeu = int(self._apogeu)
            self._port = int(self._port)
            self._serverIP = str(ip_address(self._serverIP))            
            if self._login == 'supernova' and self._senha == 'astra':
                Window.set_system_cursor("wait")
                self._connect = Cliente(self._serverIP, self._port)
                self._connect.start()
                Window.set_system_cursor("arrow")
                self._updateThread = Thread(target = self.updater)
                self._updateThread.daemon = False
                self.ids.imagem_conexao.background_normal = 'imgs/conectado.png'
                self.ids.latitude.font_size = self.ids.altitude.font_size/2
                self.ids.longitude.font_size = self.ids.altitude.font_size/2
                self.ids.graphAcelerometro.clearLabel()
                self.ids.graphGiroscopio.clearLabel()
                self.ids.graphAltitude.clearLabel()
                self._dataBase = DBHandler(self._missao)
                self._disableNewConnections()
                self._limitesGraficos()
                self.enableSwitchesAndButtons()
                self._updateThread.start()  
                self._conn.dismiss()
            else:
                self._connError.ids.erroConnect.text = "Senha incorreta!"
                self._connError.open()
                raise Exception('Senha incorreta!')

        except ValueError:
            if (type(self._apogeu) != int):
                self._connError.ids.erroConnect.text = "Selecione o apogeu!"
                self._connError.open()
            else:
                self._connError.ids.erroConnect.text = "Erro: server/port mal definidos!"
                self._connError.open()

            raise ValueError

        except ConnectionRefusedError:
            Window.set_system_cursor("arrow")
            self._connError.ids.erroConnect.text = "Falha ao conectar!"
            self._connError.open()
            raise ConnectionRefusedError        
예제 #24
0
    def __init__(self):
        self.continue_schedule = False

        self.local_db = DBHandler()

        self.all_synonyms = set()

        self.trustpilot = TrustPilotCrawler()
        self.reddit = RedditScraper()

        self.scrapers = {
            'trustpilot': TrustPilotCrawler(),
            'reddit': RedditScraper()
        }

        # TODO: Make Environment Variables for API info
        self.kwe_api = f'http://{os.environ["KWE_API_HOST"]}/'
        self.kwe_api_key = {'Authorization': os.environ['KWE_API_KEY']}
        self.sa_api = f'http://{os.environ["SA_API_HOST"]}/prediction/'
        self.sa_api_key = {'Authorization': os.environ['SA_API_KEY']}
        self.synonym_api = f'http://{os.environ["GATEWAY_API_HOST"]}/api/synonyms'
        self.synonym_api_key = {'Authorization': os.environ['GATEWAY_API_KEY']}

        self.sentiment_categories = [{
            'category': 'positive',
            'upper_limit': 1,
            'lower_limit': 0.55
        }, {
            'category': 'negative',
            'upper_limit': 0.45,
            'lower_limit': 0
        }, {
            'category': 'neutral',
            'upper_limit': 0.55,
            'lower_limit': 0.45
        }]

        self.kwe_interval = timedelta(hours=1)
        self.kwe_latest = self._read_kwe_date()

        self.continue_schedule = True
        self.schedule_thread = Thread()
        self.crawler_schedule_thread = Thread()
        self.begin_schedule()

        logging.info(
            f'Initiated scheduler, will create snapshots from {self.kwe_latest}'
        )
예제 #25
0
    def __init__(self,
                 id=None,
                 create=None,
                 db_config=("127.0.0.1", "my_database", "my_user"),
                 related_task_id=None,
                 mustExit=None):
        assert id or create, "Bad arguments, no id nor create"
        assert id == None or isinstance(
            id, int), "Bad arguments id, must be an int"
        assert mustExit, "Bad arguments, mustExit not provided"
        assert create == None or (
            isinstance(create, tuple) and 3 <= len(create) <= 4
        ), "Bad argument create, must be (user_id,type,request in json[,is_visible_to_user true/false])"

        self.db = DBHandler(db_config)

        if create:
            self.status, self.progress_percent, self.user_id, self.type, self.request, self.result = "created", 0, create[
                0], create[1], create[2], []
            if isinstance(self.request, str):
                self.request = json.loads(self.request)
            r = self.db.execute(
                "INSERT INTO tasks (status, progress_percent, type, request, user_id) VALUES (%s, %s, %s, %s::jsonb, %s) RETURNING id, start_date, end_date ;",
                [
                    self.status, self.progress_percent, self.type,
                    json.dumps(self.request), self.user_id
                ])
            r = self.db.fetchall(r)
            self.id, self.start_date, self.end_date = r[0]
            if related_task_id:
                self.db.execute(
                    "UPDATE tasks SET related_task_id = %s WHERE id = %s",
                    [related_task_id, self.id])
                self.related_task_id = related_task_id
            with Notifier() as notifier:
                notifier.send_notification(
                    "task", "id={},status=created".format(self.id))
        else:
            r = self.db.execute(
                "SELECT status, progress_percent, type, request, result, user_id, start_date, end_date, related_task_id FROM tasks WHERE id = %s;",
                [id])
            r = self.db.fetchall(r)
            self.id = id
            self.status, self.progress_percent, self.type, self.request, self.result, self.user_id, self.start_date, self.end_date, self.related_task_id = r[
                0]
            if self.result == None:
                self.result = []
예제 #26
0
파일: urlapi.py 프로젝트: turfaa/turangga
def create(local=False, url=None, short=None, token=None):
    if local:
        local_make_response = data_to_object

        if url is None:
            return local_make_response(False, {'message': 'Invalid data'})
    else:
        local_make_response = data_to_response

        if (not ('url' in request.form)):
            return local_make_response(False, {'message': 'Invalid data'})
        url = request.form['url']

        if 'short' in request.form:
            short = request.form['short']
        else:
            short = None

        if 'token' in request.form:
            token = request.form['token']

    if not (token is None):
        try:
            username = db.tokenLookup(request.form['token'])
        except DBException as err:
            return local_make_response(False, {'message': err.message})
    else:
        username = None

    if not (short is None):
        if not (short.isalnum()):
            return local_make_response(
                False, {'message': 'Slug must be alphanumeric.'})

    db = DBHandler()

    if (not validators.url(url)) | ('turang.ga' in url):
        return local_make_response(False, {'message': 'URL is not valid.'})

    newUrl = baseurl

    try:
        newUrl += db.urlNew(url, short, username)
    except DBException as err:
        return local_make_response(False, {'message': err.message})
    else:
        return local_make_response(True, {'url': newUrl})
def main():

    #if options.dataset_file is None or options.output_file is None:
    dbh = DBHandler(options.db_config_file, options.db_config_name)
    dbh.return_df = False
    fh = FileHandler(s3_bucket=options.bucket)

    with open(options.example_config_file) as f:
        setups = yaml.load(f.read(), Loader=yaml.FullLoader)

    for setup in setups['examples']:

        output_file = '{}/{}-{}.csv'.format(
            setup['output_dir'], setup['starttime'].strftime('%Y%m%dT%H%M%S'),
            setup['endtime'].strftime('%Y%m%dT%H%M%S'))

        # Read in data and extract data arrays
        logging.info("Reading input data for {} - {}...".format(
            setup['starttime'], setup['endtime']))

        features, meta_params, labels, all_params = get_param_names(
            options.param_config_file)

        data = fh.read_data(
            [setup['dataset_file']],
            options,
            return_meta=True,
            starttime=setup['starttime'],  #.strftime('%Y-%m-%dT%H:%M:%S'),
            endtime=setup['endtime'])[0]  #.strftime('%Y-%m-%dT%H:%M:%S'))[0]
        X, y, meta = data

        model = fh.load_model(setup['model_file'])
        scaler = fh.load_model(setup['scaler_file'])

        logging.info('Predicting with {} samples...'.format(len(X)))
        y_pred = model.predict(X)

        df = pd.DataFrame(meta, columns=options.meta_params)
        X_inv = pd.DataFrame(scaler.inverse_transform(X), columns=X.columns)
        df = pd.concat(
            [df.reset_index(drop=True),
             X_inv.reset_index(drop=True)], axis=1)
        df = dbh.get_geom_for_dataset_rows(df)
        df['y_pred'] = y_pred
        df['y'] = y
        fh.df_to_csv(df, output_file)
예제 #28
0
def main():

    # Read in data and extract data arrays
    logging.info("Reading input data for {} - {}...".format(
        options.starttime, options.endtime))

    #if options.dataset_file is None or options.output_file is None:
    dbh = DBHandler(options.db_config_filename, options.db_config_name)
    dbh.return_df = False
    fh = FileHandler(s3_bucket=options.bucket)

    starttime = dt.datetime.strptime(options.starttime, "%Y-%m-%dT%H:%M:%S")
    endtime = dt.datetime.strptime(options.endtime, "%Y-%m-%dT%H:%M:%S")

    features, meta_params, labels, all_params = get_param_names(
        options.param_config_filename)

    scaler = fh.load_model(options.scaler_file)

    # TODO change to read from operational data
    data = pd.DataFrame(dbh.get_dataset(all_params), columns=all_params)

    # TODO use original id stored in db. The id is used to assign predicted classes to a storm object (while saving to db)
    # As far as we do not have operational data, dummy ids are used
    data.loc[:, 'id'] = 0

    data = data.loc[data['weather_parameter'] == 'WindGust']

    # Add week
    data['point_in_time'] = pd.to_datetime(data['point_in_time'], utc=True)
    data['week'] = data['point_in_time'].dt.week

    X = data.loc[:, features]
    X = scaler.transform(X)

    model = fh.load_model(options.model_file)

    logging.info('Predicting with {} {} samples...'.format(
        options.model, len(X)))
    y_pred = model.predict(X)

    # Save to db
    logging.info('Saving...')
    dbh.save_classes(data.loc[:, 'id'], y_pred)
    logging.info('done.')
예제 #29
0
    def update_database(self, product):
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")

        with DBHandler(self.context.get_database) as cursor:
            update_SQL = """
                    UPDATE products SET 
                    quantity_in_stock = quantity_in_stock - ?
                    """

            insert_SQL = """
                            INSERT INTO orders VALUES (?, ?, ?, ?, ?, ?)
                        """

            cursor.execute(update_SQL, [product.quantity])
            cursor.execute(insert_SQL, [
                None, self.username, now, product.name, product.quantity,
                product.subtotal
            ])

            print('Success')
예제 #30
0
파일: urlapi.py 프로젝트: turfaa/turangga
def delete(local=False, short=None, token=None):
    if local:
        local_make_response = data_to_object

        if (short is None) | (token is None):
            return local_make_response(False, {'message': 'Invalid data'})
    else:
        local_make_response = data_to_response
        if ((not ('short' in request.form)) | (not ('token' in request.form))):
            return local_make_response(False, {'message': 'Invalid data'})

        short = request.form['short']
        token = request.form['token']

    db = DBHandler()
    try:
        username = db.tokenLookup(token)
        db.urlDelete(username, short)
    except DBException as err:
        return local_make_response(False, {'message': err.message})
    else:
        return local_make_response(True)