Exemple #1
0
def edit(username: str):
    try:
        account = queries.get_account(username=username)
    except exceptions.DoesNotExist:
        flask.abort(status=404)
    flask_bouncer.ensure(action=flask_bouncer.EDIT, subject=account)
    form = forms.Edit(obj=account)
    if form.validate_on_submit():
        try:
            operations.update_account(
                account=account,
                display=form.display.data,
                about=form.about.data,
            )
        except exceptions.UnableToUpdate:
            flask.flash(message="Unable to edit account.", category="error")
            return flask.redirect(location=flask.url_for(
                endpoint="accounts.edit", username=account.username))
        else:
            flask.flash(
                message="Account updated.",
                category="success",
            )
            return flask.redirect(location=flask.url_for(
                endpoint="accounts.display", username=account.username))
    context = {"title": f"Edit {account.display}", "form": form}
    return flask.render_template(template_name_or_list="accounts/edit.html",
                                 **context)
Exemple #2
0
 def put(self, id: int):
     account = queries.get_account(id=id)
     flask_bouncer.ensure(action=flask_bouncer.EDIT, subject=account)
     payload = request.get_json(force=True)
     data = self.serializer.load(data=payload)
     operations.update_account(account=account, **data)
     return self.serializer.dump(obj=account), http.HTTPStatus.ACCEPTED
Exemple #3
0
def display(username: str):
    try:
        account = queries.get_account(username=username)
    except exceptions.DoesNotExist:
        flask.abort(status=404)
    blogs = blog_queries.get_blogs(author=account, published=True)
    context = {
        "title": account.display,
        "account": account,
        "blogs": blogs,
    }
    return flask.render_template(template_name_or_list="accounts/display.html",
                                 **context)
Exemple #4
0
def request_reset_password():
    form = forms.EmailRequest()
    if form.validate_on_submit():
        try:
            account = queries.get_account(email=form.email.data)
        except exceptions.DoesNotExist:
            flask.flash(message="This email does not exist.", category="error")
        else:
            flask.flash(
                message="Reset password email has been sent.",
                category="success",
            )
            dispatch.send_reset_password_email(account=account)
        return flask.redirect(location=flask.url_for(
            endpoint="accounts.login"))
    context = {"title": "Reset password", "form": form}
    return flask.render_template(
        template_name_or_list="accounts/email_request.html", **context)
Exemple #5
0
def delete(username: str):
    try:
        account = queries.get_account(username=username)
    except exceptions.DoesNotExist:
        flask.abort(status=404)
    flask_bouncer.ensure(action=flask_bouncer.DELETE, subject=account)
    form = forms.Delete()
    if form.validate_on_submit():
        try:
            operations.delete_account(account=account,
                                      delete_blogs=form.delete_blogs.data)
        except exceptions.UnableToDelete:
            flask.flash(message="Unable to delete account.", category="error")
            return flask.redirect(location=flask.url_for(
                endpoint="accounts.display", username=account.username))
        else:
            flask.flash(message="Account deleted.", category="success")
            if flask_login.current_user == account:
                flask_login.logout_user()
            return flask.redirect(location=flask.url_for(
                endpoint="main.landing"))
    context = {"title": f"Delete {account.display}", "form": form}
    return flask.render_template(template_name_or_list="accounts/delete.html",
                                 **context)
Exemple #6
0
 def get(self, id: int):
     account = queries.get_account(id=id)
     return self.serializer.dump(obj=account), http.HTTPStatus.OK