Exemplo n.º 1
0
def register():
    error = None
    if request.method == 'POST':
        ID = request.form['ID']
        name = request.form['name']
        pwd = request.form['pwd']
        pwd_confirm = request.form['pwd_confirm']
        error = None
        if not ID:
            error = 'Username is required.'
        elif not pwd:
            error = 'Password is required.'
        elif not pwd == pwd_confirm:
            error = 'Password is not the same.'
        elif User.query.filter_by(username=ID).first() is not None:
            error = 'User {} is already registered.'.format(ID)
            return redirect(url_for('frame.index1', error=error))

        if error is None:
            new_client = User(username=ID,
                              password=generate_password_hash(pwd),
                              name=name)
            db1.add(new_client)
            db1.commit()
            db1.remove()
            error = 'register success'
            return redirect(url_for('frame.index1', error=error))
        flash(error)
    return redirect(url_for('frame.index1', error=error))
Exemplo n.º 2
0
def synchronize_players(clan_id):
    logger.info("synchronize_players(" + clan_id + ")")
    logger.info("Clan member synchronization triggered for " + str(clan_id))

    from model import db_session
    clan_info = get_clan_info.delay(str(clan_id)).wait()
    logger.info("Synchronizing " + clan_info['data'][str(clan_id)]['abbreviation'])
    processed = set()
    for player_id in clan_info['data'][str(clan_id)]['members']:
        player = clan_info['data'][str(clan_id)]['members'][player_id]
        player_data = get_player_info.delay(str(player['account_id'])).wait()
        p = Player.query.filter_by(wot_id=str(player['account_id'])).first()
        if not player_data:
            if p: processed.add(p.id) # skip this guy later when locking players
            continue # API Error?

        since = datetime.datetime.fromtimestamp(
            float(player_data['data'][str(player['account_id'])]['clan']['since']))

        if p:
            # Player exists, update information
            processed.add(p.id)
            p.locked = False
            p.clan = clan_info['data'][str(clan_id)]['abbreviation']
            p.role = player['role'] # role might have changed
            p.member_since = since # might have rejoined
        else:
            # New player
            p = Player(str(player['account_id']),
                       'https://eu.wargaming.net/id/' + str(player['account_id']) + '-' + player[
                           'account_name'] + '/',
                       since,
                       player['account_name'],
                       clan_info['data'][str(clan_id)]['abbreviation'],
                       player['role'])
            logger.info('Adding player ' + player['account_name'])
        db_session.add(p)

    # Lock players which are no longer in the clan
    for player in Player.query.filter_by(clan=clan_info['data'][str(clan_id)]['abbreviation']):
        if player.id in processed or player.id is None or player.locked: continue
        logger.info("Locking player " + player.name)
        player.locked = True
        player.lock_date = datetime.datetime.now()
        db_session.add(player)

    try:
        db_session.commit()
        logger.info("Clan member synchronization successful")
    except Exception as e:
        logger.warning("Clan member synchronization failed. Rolling back database transaction:")
        logger.exception(e)
        db_session.rollback()
    finally:
        db_session.remove()

    return True
Exemplo n.º 3
0
def ajax_updateuser():
    data = request.form.to_dict()
    data_role = data['role'].split(",")
    roles = []
    for role in data_role:

        temp = Role.query.filter_by(role=role).first()
        if temp is not None:
            roles.append(temp)
        else:
            return jsonify({'error': '角色不存在'})
    user = User.query.filter_by(id=data['id']).first()
    user.role = roles
    db1.add(user)
    db1.commit()
    db1.remove()
    return jsonify()  # Return json object to make ajax success.
Exemplo n.º 4
0
def file_done(vid_name, socketio):
    """Updates the clip status once upload is complete"""

    print "\n\n\n\n\n\n\n  CLIP READY \n\n\n\n\n\n\n"
    # start a scoped session
    scoped_session = db_session()

    # get the clip by name
    clip = scoped_session.query(Clip).filter(Clip.clip_name == vid_name).first()
    clip_id = clip.clip_id
    # update status and commit the change to the db
    clip.clip_status = 'Ready'
    scoped_session.commit()

    ready_clips = {}
    ready_clips['clips'] = [clip_id, clip.start_at, clip.end_at]
    socketio.emit('server update', ready_clips)

    # close the session
    db_session.remove()
Exemplo n.º 5
0
def update_vid_status(vid_name, socketio):
    """Updates the video status once upload is complete"""

    print "\n\n\n\n\n\n\n  VIDEO READY \n\n\n\n\n\n\n"

    # start db session
    scoped_session = db_session()

    #get the video based on the name
    vid = scoped_session.query(Video).filter(Video.vid_name == vid_name).first()
    vid_id = vid.vid_id
    #update the status to be ready
    vid.vid_status = 'Ready'
    scoped_session.commit()

    ready_clips = {}
    ready_clips['clips'] = [vid_id]
    socketio.emit('server update', ready_clips)

    # close the scoped session
    db_session.remove()
Exemplo n.º 6
0
def change_password():
    error = None
    if request.method == 'POST':
        ID = request.form['ID']
        pwd = request.form['pwd']
        pwd_confirm = request.form['pwd_confirm']
        error = None
        if not ID:
            error = 'Username is required.'
        elif not pwd:
            error = 'Password is required.'
        elif not pwd == pwd_confirm:
            error = 'Password is the same.'

        if error is None:
            user = User.query.filter_by(username=ID).first()
            user.password = generate_password_hash(pwd)
            db1.add(user)
            db1.commit()
            db1.remove()
            error = 'revise success'
            # return redirect(url_for('auth.login', error=error))
        flash(error)
    return render_template('change_password.html', error=error)
Exemplo n.º 7
0
def pull_text(clips, vid_id):
    """Goes to video transcript and pulls relevant text"""

    # hook up to db
    scoped_session = db_session()

    # list to hold all pull tuples
    all_pulls = []
    # get the transcript for the selected video
    transcript = scoped_session.query(Transcript).filter(Transcript.vid_id == vid_id).first()

    if transcript:
        for clip in clips:
            # if the clip object has a page line num
            if clip.start_pl is not None:
                # get the timecodes and text for the request page-line nums
                pull = find_text_by_page_line(clip.start_pl, clip.end_pl, transcript.text)
                
                # a tuple is returned for pull (start_at, end_at, pulled_text)
                start_at, end_at, pull_text = pull

                # rebind to the db connected clip obj
                clip = scoped_session.query(Clip).get(clip.clip_id)
                clip.start_at = start_at
                clip.end_at = end_at

                print "pull clip", clip
                # make a new pull obj for the db
                new_pull = TextPull(clip_id=clip.clip_id, pull_text=pull_text)
                scoped_session.add(new_pull)

                # add new pull and update clip obj with timecodes from transcript
                scoped_session.commit()
                print pull_text
    # close scoped session
    db_session.remove()
Exemplo n.º 8
0
def handle_teardown_request(exception):
    db_session.remove()
Exemplo n.º 9
0
def shutdown_session(exception=None):
    db_session.remove()
Exemplo n.º 10
0
def handle_teardown_request(exception):
    db_session.remove()
Exemplo n.º 11
0
def shutdown_session(exception=None):
    """closes all sqlalchemy sessions from each query in this in file."""
    db_session.remove()
Exemplo n.º 12
0
def shutdown_session(exception=None):  # exception=None 很重要
    db1.remove()
Exemplo n.º 13
0
def handle_teardown_request(exception):
    '''最后一个很重要,这边一定要记住,把这个函数写上。如果没有这个函数,每一个会话以后,
    db_session都不会清除,很多时候,数据库改变了,前台找不到,或者明明已经提交,
    数据库还是没有更改,或者长时间没有访问接口,mysql gong away,这样的错误。总之,一定要加上。'''
    db_session.remove()