Beispiel #1
0
def resetPassword(params):
    email = params['email']
    user = getOneByFields(User, email=email)
    if not user:
        return createAnswer('User with this email not exist', err=True)
    token = createHash(email, timeSalt=True)
    tokenObj = getOneByFields(Token, user_id=user.id)
    if tokenObj:
        tokenId = updateDbByDict({
            'token': token,
            'user_id': user.id
        }, tokenObj)
    else:
        tokenId = updateDbByDict({
            'token': token,
            'user_id': user.id
        },
                                 Token,
                                 insert=True)
    if not tokenId:
        return createAnswer('Something went wrong, sorry', err=True)
    try:
        sendMail(
            email, 'HyperTube Project | Password Reset',
            '<h2>Recovery your password</h2><br>'
            f'<a href="{request.host_url}user/reset/verify/?token={token}">Verify Link</a><br><br>'
            f'<b>Please verify your email by the link</b>')
    except:
        return createAnswer('Messages send blocked (spam policy)', err=True)
    return createAnswer('Verify link successful sent')
Beispiel #2
0
def authUserGoogle(params):
    token = params['id_token']
    url = f'https://www.googleapis.com/oauth2/v3/tokeninfo'
    googleUserInfo = getData(url)
    if not googleUserInfo['error']:
        googleUserInfo = googleUserInfo['data']
    else:
        return createAnswer('Auth failed', err=True)
    updateDbByDict(
        {
            'firstName': googleUserInfo['given_name'],
            'lastName': googleUserInfo['family_name'],
            'email': googleUserInfo['email'],
            'userPhoto': googleUserInfo['picture'],
            'login': googleUserInfo['sub']
        },
        User,
        insert=True)
    user = getOneByFields(User, login=googleUserInfo['sub'])
    if user:
        session['login'] = googleUserInfo['sub']
    else:
        user = getOneByFields(User, email=googleUserInfo['email'])
        session['login'] = user.login
    return getUserInfo(user)
Beispiel #3
0
def createCommentary(params) -> dict:
    commentary = params['commentary']
    IMDBid = params['IMDBid']
    movie = getOneByFields(Movie, imdb_id=IMDBid)
    if not movie:
        return createAnswer('Movie not found', True)
    if answer := checkAuthed():
        return answer
Beispiel #4
0
def verifyReset(params):
    verifyToken = params['token']
    token = getOneByFields(Token, token=verifyToken)
    if token:
        session['reset'] = True
        session['login'] = token.user.login
        deleteById('Token', token.id)
        redirect('/restore')
    return redirect('/')
Beispiel #5
0
def createMovie(IMDBid):
    movieId = updateDbByDict({'imdb_id': IMDBid}, Movie, insert=True)
    if not movieId:
        return movieId
    movie = getOneByFields(Movie, id=movieId)
    user = getUserByFields(login=session['login'])
    try:
        updateDbByDict({
            'user_id': user.id,
            'movie_imdb_id': IMDBid
        },
                       UserWatchHistory,
                       insert=True)
    except:
        pass
    if movie:
        updateDbByDict({'watch_count': movie.watch_count + 1}, movie)
    return movieId
Beispiel #6
0
def getMovieSubtitles(params):
    IMDBid = params['IMDBid']
    createMovie(IMDBid)
    subtitles = []
    languages = {'en', 'ru', 'fr'}
    for language in languages:
        subtitleDB = getOneByFields(Subtitle,
                                    language=language,
                                    movie_imdb_id=IMDBid)
        if subtitleDB:
            subtitles.append({language: f'/{subtitleDB.path}'})
            continue
        subtitleObj = getSubtitles(
            {'params': {
                'imdb_id': IMDBid,
                'languages': language
            }})['data']
        if not subtitleObj:
            continue
        subtitlePath = saveSubtitles(subtitleObj, language, IMDBid)
        if subtitlePath:
            subtitles.append(subtitlePath)
    return createAnswer('data', False, {'subtitlesPath': subtitles})
Beispiel #7
0
def getUserByFields(**fields) -> User:
    user = getOneByFields(User, **fields)
    return user