示例#1
0
def search():
    keyword = request.form.get('keyword').lower()
    word = models.Word.query.filter_by(id=keyword).first()
    if word is None:
        try:
            response = requests.get(
                "https://wordsapiv1.p.rapidapi.com/words/" + keyword,
                headers={
                    'x-rapidapi-key': RAPIDAPI_KEY,
                    'x-rapidapi-host': RAPIDAPI_HOST,
                    "Accept": "application/json"
                })
            import_word_search(response.json())
        except Exception as e:
            print(e)

    word = models.Word.query.filter_by(id=keyword).first()
    if word:
        models.UserStats.save_search(word, get_user(), datetime.now())
        user_count, count = models.UserStats.all_time_count(word, get_user())
        context = dict(word=json.loads(json.dumps(word.serialize())),
                       user_count=user_count,
                       count=count,
                       keyword=keyword)
    else:
        context = dict(word=None, keyword=keyword)
    return render_template('memo/search.html', **context)
示例#2
0
    def save_vocab(self, form):

        user = get_user()
        vocab = models.Vocab(user, form.name.data)
        models.db.session.add(vocab)
        models.db.session.commit()
        return vocab
示例#3
0
def vocab(id):
    """Reset stats for a course"""
    # Check if course exists
    vocab = models.Vocab.query.filter_by(id=id,
                                         user_id=get_user().id).first_or_404()
    context = dict(vocab=vocab)
    return render_template('memo/vocab.html', **context)
示例#4
0
def practice(id):
    # Check if vocab exists
    vocab = models.Vocab.query.filter_by(id=id, user_id=get_user().id).first()
    if vocab is None:
        flash('Not Exists Vocabulary selected.', 'warning')
        return redirect(url_for('memo.main'))

    vocab_word = models.VocabWord.query.filter_by(vocab=vocab) \
        .order_by(models.VocabWord.view.asc()) \
        .order_by(models.VocabWord.practice_point.asc()).first()

    vocab_word.view += 1
    models.db.session.commit()

    definition = models.Definition.query.filter_by(
        word_id=vocab_word.word_id).first()

    other_words = models.VocabWord.query.filter(models.VocabWord.vocab_id.is_(vocab.id)).filter(models.VocabWord.word_id.isnot(vocab_word.word_id)) \
        .order_by(models.VocabWord.view.asc()).limit(2)

    words = [vocab_word]
    for word in other_words:
        words.append(word)
    random.shuffle(words)

    context = dict(vocab=vocab,
                   vocab_word=vocab_word,
                   definition=definition,
                   words=words)
    return render_template('memo/practice.html', **context)
示例#5
0
 def save_user(self, form):
     user = get_user()
     user.name = form.name.data
     user.email = form.email.data
     user.password = form.password.data
     user.registered = True
     models.db.session.add(user)
     models.db.session.commit()
示例#6
0
    def post(self):
        response = self.get()
        if response:
            return response
        form = forms.CreateVocabForm(request.form)
        if form.validate():
            is_exists = models.Vocab.query.filter_by(
                user_id=get_user().id, name=form.name.data).first()
            if is_exists:
                flash('Error. This name is exists', 'warning')
            else:
                vocab = self.save_vocab(form)
                flash('Successfully created.', 'success')
                return redirect(url_for('memo.vocab', id=vocab.id))

        self.form = form
示例#7
0
def profile():
    user = get_user()
    if user.registered:
        form = forms.ProfileForm(obj=user)
        if request.method == 'POST':
            form = forms.ProfileForm(request.form)
            if form.validate():
                user = models.User.query.filter_by(email=user.email).first()
                if user:
                    user.name = form.name.data
                    user.email = form.email.data
                    models.db.session.commit()

                    session['user'] = user.id
                    flash('Successfully updated.', 'success')
                else:
                    flash('Wrong email.', 'warning')
    else:
        flash('Please Login', 'warning')
        return redirect(url_for('auth.login'))
    context = dict(form=form)
    return render_template('memo/profile.html', **context)
示例#8
0
def login():
    user = get_user()
    if user.registered:
        flash('Already login', 'warning')
        return redirect(url_for('memo.main'))
    if request.method == 'POST':
        form = forms.LoginForm(request.form)
        if form.validate():
            # Login
            user = models.User.query.filter_by(email=form.email.data).first()
            if user and user.password == form.password.data:
                flash('Successfuly login.', 'success')
                session['user'] = user.id
                return redirect(url_for('memo.main'))
            else:
                flash('Wrong email or password.', 'warning')
        else:
            flash('Login failed.', 'warning')
    else:
        form = forms.LoginForm()
    context = dict(form=form)
    return render_template('auth/login.html', **context)
示例#9
0
 def utility_processor():
     return dict(user=get_user())
示例#10
0
def fetch_current_user_id():
    # Return None if we are outside of request context.
    if _request_ctx_stack.top is None:
        return
    return getattr(get_user(), 'id', None)
示例#11
0
def start_practice():
    # Check if course exists
    vocabs = models.Vocab.query.filter_by(user_id=get_user().id).all()
    [vocab.serialize() for vocab in vocabs]
    context = dict(vocabs=[vocab.serialize() for vocab in vocabs])
    return render_template('memo/start_practice.html', **context)
示例#12
0
 def get(self):
     user = get_user()
     if user.registered:
         flash('Du er allerede logget inn', 'error')
         return redirect(url_for('memo.main'))
     self.form = forms.RegisterForm()