def home(): form = LoginForm(request.form) # Handle logging in if request.method == 'POST': if form.validate_on_submit(): login_user(form.user) flash("You are logged in.", 'success') redirect_url = request.args.get("next") or url_for("user.members") return redirect(redirect_url) else: flash_errors(form) return render_template("public/home.html", form=form)
def register(): form = RegisterForm(request.form, csrf_enabled=False) if form.validate_on_submit(): new_user = User.create(username=form.username.data, email=form.email.data, password=form.password.data, first_name=form.first_name.data, last_name=form.last_name.data, active=False) flash("Thank you for registering. You can now log in.", 'success') return redirect(url_for('public.home')) else: flash_errors(form) return render_template('public/register.html', form=form)
def post(self, artid=NEW_ARTICLE): try: self.prep_view_objects(artid) except Badself.articleIDException as baide: flash(baide.message) return redirect(url_for('media.view_article_db')) if self.form.validate_on_submit(): try: if self.article: # Edit an self.article self.article.authors = User.query.filter( User.id.in_(self.form.data["authors"]) ).all() self.article.title = self.form.title.data self.article.body = self.form.body.data self.article.is_visible = self.form.is_visible.data self.article.category = self.form.category.data # Parse subject tag string into multiple tag object tagobjs = [] for arttag in self.form.data["subject_tags"].split(","): tagobj = Tag.query.filter_by(name=arttag).first() if tagobj: tagobjs.append(tagobj) else: tagobjs.append(Tag.create(name=arttag)) self.article.subject_tags = tagobjs db.session.merge(self.article) else: # Create a new self.article self.article = Article.create( title=self.form.title.data, body=self.form.body.data, publish=self.form.is_visible.data, category=self.form.category.data ) # Prepare author and subject tags for submission aids = [int(x) for x in self.form.authors.data] for aid in User.query.filter(User.id.in_(aids)): self.article.authors.append(aid) for tagstr in self.form.subject_tags.data.split(","): # check to see if each tag is in DB, # if not add as a new Tag object taginDB = Tag.query.filter_by(name=tagstr).first() if taginDB: self.article.subject_tags.append(taginDB) else: self.article.subject_tags.append(Tag(name=tagstr)) db.session.add(self.article) db.session.commit() flash("Article submitted!", "success") except InvalidRequestError as ire: db.session.rollback() db.session.flush() flash("Database error encountered. Article was not saved.", "failure") return redirect(url_for('media.view_article_db')) else: flash_errors(self.form)