Skip to content

Instantly share code, notes, and snippets.

@mazz
Created January 7, 2017 05:09
Show Gist options
  • Save mazz/52d05640b2d824d446beb719e0c41f3a to your computer and use it in GitHub Desktop.
Save mazz/52d05640b2d824d446beb719e0c41f3a to your computer and use it in GitHub Desktop.
sqlalchemy.orm.exc.DetachedInstanceError: Instance <Media at 0x10949c0b8> is not bound to a Session
from pyramid.httpexceptions import HTTPNotFound, HTTPFound
from websauna.utils.slug import uuid_to_slug
from websauna.utils.slug import slug_to_uuid
from websauna.system.core import messages
from websauna.system.http import Request
from websauna.system.core.route import simple_route
from .models import Media
import pafy
import transaction
# Configure view named home at path / using a template hearit/home.html
@simple_route("/", route_name="home", renderer="hearit/home.html")
def home(request: Request):
"""Render the site homepage."""
latest_media_list = request.dbsession.query(Media).order_by(Media.published_at.desc()).all()[:10]
return locals()
@simple_route("/media/{media_uuid}", route_name="detail", renderer="hearit/detail.html")
def detail(request):
# Convert base64 encoded UUID string from request path to Python UUID object
media_uuid = slug_to_uuid(request.matchdict["media_uuid"])
media = request.dbsession.query(Media).filter_by(uuid=media_uuid).one_or_none()
if not media:
raise HTTPNotFound()
if request.method == "POST":
media = request.dbsession.query(Media).filter_by(uuid=media_uuid).first()
video = pafy.new(media.url)
media.title = video.title
request.dbsession.flush()
transaction.commit()
messages.add(request, msg="got the post", kind="success")
return HTTPFound(request.route_url("fetch_media_result", media_uuid=uuid_to_slug(media.uuid)))
if not media:
raise HTTPNotFound()
return locals()
@simple_route("/media/{media_uuid}/fetch_media_result", route_name="fetch_media_result", renderer="hearit/fetch_media_result.html")
def fetch_media_result(request: Request):
# Convert base64 encoded UUID string from request path to Python UUID object
media_uuid = slug_to_uuid(request.matchdict["media_uuid"])
media = request.dbsession.query(Media).filter_by(uuid=media_uuid).first()
if not media:
raise HTTPNotFound()
return locals()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment