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)
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
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)
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)
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()
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
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)
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)
def utility_processor(): return dict(user=get_user())
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)
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)
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()