def CleanupDatabase(request):
    if request.matched_route is None:
        return
    routename = request.matched_route.name
    if (routename == "save") or (routename == "retr"):
        logger.debug("Route matched for cleanup: %s" % routename)
        try:
            session = DBSession()
            result = session.query(Secret).\
                filter((Secret.ExpiryTime < datetime.datetime.now()) | (Secret.LifetimeReads == 0)).\
                delete()
            session.flush()
            session.close()
        except (OperationalError, DBAPIError), exc:
            logger.error("CleanupDatabase(): DBAPIError %s" % exc)
            pass
Esempio n. 2
0
def view_save(request):
    if not request.method == 'POST':
        return Response('Method not allowed', content_type='text/plain', status_int=405)

    se = SecretEncrypter()
    logger.debug(request.POST['data'])
    uid = se.encrypt(request.POST['data'])
    model = se.ret_secret_model()

    choices = ('', 'as3','shell','cf','csharp','cpp','css','delphi','diff','erl',
        'groovy','js','java','jfx','pl','php','plain','ps','py','ruby',
        'scala','sql','vb','xml'
        )

    hours_to_expire = is_intinrangeor(request.POST['hours_until_expiration'], 1, 168, 4)
    model.ExpiryTime = datetime.datetime.now() + timedelta(hours=hours_to_expire)

    model.LifetimeReads = is_intinrangeor(request.POST['maximum_views'], 1, 5, 2)
    model.Snippet = is_valisinchoices(request.POST['snippet_type'], choices, 'plain')

    if len(request.POST['data']) < 1:
        #invalid form (no data to save was given)
        return HTTPFound(location=request.route_url('home'))

    friendly_time = '{}d {}h'.format(hours_to_expire // 24, hours_to_expire % 24) 

    session = DBSession()

    try:
        logger.debug("Attempting to save snippet")
        session.add(model)

        logger.debug("Attempting to flush to database")
        session.flush()

    except DBAPIError, exc:
        logger.error("DBAPIError: %s" % exc)
        return HTTPFound(location=request.route_url('sorry'))