Beispiel #1
0
    def put(self, id):
        team = session.query(Team).filter(Team.id == id).first()
        if not team:
            abort(404, message="Team {} does not exist".format(id))
        error_message = None
        try:
            # Processing input arguments
            parser.add_argument('name', type=str, required=True, trim=True)
            parsed_args = parser.parse_args()

            # Updating team instance
            team.name = parsed_args['name'] if parsed_args['name'] else team.name

            # Saving to DB
            session.merge(team)
            session.commit()
        except IntegrityError:
            error_message = 'Faulty or a duplicate record'
        except ValueError as e:
            error_message = str(e)
        except Exception as e:
            print(str(e))
            error_message = 'Bad request'
        finally:
            if error_message:
                session.rollback()
                abort(400, message='Unable to create team record: ' + error_message)
            else:
                return team, 202
Beispiel #2
0
def process_flag(flag):
    download_flag(flag)
    longflag(flag)
    audioflag(flag)
    md5sum(flag)

    session.merge(flag)
    session.commit()
Beispiel #3
0
def stocks_update(arr: list):
    arr = filter(lambda x: x['type'] in stock_types.enums, arr)
    g = [(r['symbol'], r['description'], r['type'], r['exchange'],
          r['lotsize'], r['rating'], r['volatility'], r.get('last_price'))
         for r in arr]
    for i in g:
        session.merge(Stock(*i))
    session.commit()
Beispiel #4
0
 def put(self):
     sectionSchema = SectionSchema()
     json_data = request.get_json()
     
     if not json_data:
         return jsonify({'message:' : 'No input data provided'}), 400
     
     section = sectionSchema.load(json_data).data
     session.merge(section)
     
     return sectionSchema.dump(section), 200
Beispiel #5
0
def fetch_username(userid):
    user = session.query(User).filter(User.userid == userid).first()
    if user:
        return user.username

    profile_url = 'https://forums.somethingawful.com/member.php?action=getinfo&userid='
    response = requests.get(profile_url + str(userid), cookies=SA_COOKIE)
    if not response.ok: return
    match = re.search(r'<h3>About (.+)</h3>', response.text)
    username = match and match.groups()[0] or 'INVALID'

    session.merge(User(userid=userid, username=username))
    session.commit()
    return username
Beispiel #6
0
def process_flag_json(flag):
    flag['raw'] = str(flag)
    flag['flagid'] = int(flag['path'].split('.')[0].split('/')[-1])
    flag['userid'] = fetch_userid(flag['username'])
    del flag['username']

    already_fetched = session.query(exists().where(Flag.flagid==flag['flagid'])).scalar()

    session.merge(Flag(**flag))
    session.commit()

    if not already_fetched:
        flag = session.query(Flag).filter(Flag.flagid==flag['flagid']).first()
        process_flag(flag)
        print(flag, session.query(User).count(), session.query(Flag).count())
Beispiel #7
0
def fetch_userid(username):
    user = session.query(User).filter(User.username == username).first()
    if user:
        return user.userid

    try:
        profile_url = 'https://forums.somethingawful.com/member.php?action=getinfo&username='******'userid=(\d+)', response.text)
    userid = match and int(match.groups()[0]) or 0

    session.merge(User(userid=userid, username=username))
    session.commit()
    return userid
Beispiel #8
0
def main():
    current_page = args.page_number
    try:
        print("Processing page {}...".format(current_page))
        result = make_request(args, current_page)

        if 'error' in result:
            exit()

        res = result['response']['search']['offers']['entities']
        # res = list(filter(lambda r: r['building'].get('buildingId'), res))
        for e in convert(res):
            session.merge(Author(*e['author']))
            if e['site']:
                session.merge(Site(*e['site']))
            if e['building']:
                session.merge(Building(*e['building']))
                nbid = None
            else:
                nb = session.merge(NewBuilding(*e['new_building']))
                session.commit(
                )  # todo it's working now only for new buildings autoinc IDs
                nbid = nb.id
            o = (nbid, ) + e['offer']
            session.merge(Offer(*o))
            # session.merge(Photo(*e['photo']))
        # for ent in res:
        #     session.merge(Offer(
        #         ent['offerId'],
        #         ent['active'],
        #         ent['area']['value'],
        #         ent['building'].get('houseId')
        #     ))

        session.commit()
        current_page += 1
        print("Waiting {0} seconds".format(args.delay))
        time.sleep(args.delay)
    except Exception as e:
        print(e)
        print("Unknown exception, waiting 60 seconds.")
        time.sleep(60)
    except KeyboardInterrupt:
        print("Finishing...")
        exit()
    print("Done")
Beispiel #9
0
    def put(self, id):
        user = session.query(User).filter(User.id == id).first()
        if not user:
            abort(404, message="User {} does not exist".format(id))
        error_message = None
        try:
            # Processing input arguments
            parser.add_argument('name', type=str, trim=True)
            parser.add_argument('email', type=str, trim=True)
            parser.add_argument('password', type=str)
            parser.add_argument('user_id', type=str)
            parser.add_argument('pin', type=str)
            parser.add_argument('profile_picture', type=str)
            parsed_args = parser.parse_args()

            # Updating user instance
            user.name = parsed_args['name'] if parsed_args['name'] else user.name
            user.email = parsed_args['email'] if parsed_args['email'] else user.email
            user.password = parsed_args['password'] if parsed_args['password'] else user.password
            user.user_id = parsed_args['user_id'] if parsed_args['user_id'] else user.user_id
            user.pin = parsed_args['pin'] if parsed_args['pin'] else user.pin
            user.profile_picture = parsed_args['profile_picture'] if parsed_args[
                'profile_picture'] else user.profile_picture

            # Saving to DB
            session.merge(user)
            session.commit()
        except IntegrityError:
            error_message = 'Faulty or a duplicate record'
        except ValueError as e:
            error_message = str(e)
        except Exception as e:
            print(str(e))
            error_message = 'Bad request'
        finally:
            if error_message:
                session.rollback()
                abort(400, message='Unable to create user record: ' + error_message)
            else:
                return user, 202
Beispiel #10
0
def load_special_users():
    session.merge(User(userid=62448, username="******"))
    session.merge(User(userid=94203, username="******"))
    session.commit()
Beispiel #11
0
def trades_update(arr: list):
    for trade in arr:
        session.merge(Trade(*trade.values()))
    session.commit()