def display_paste(paste_id): now = datetime.now() keep_alive = False try: paste = Paste.load(paste_id) # Delete the paste if it expired: if not isinstance(paste.expiration, datetime): # burn_after_reading contains the paste creation date # if this read appends 10 seconds after the creation date # we don't delete the paste because it means it's the redirection # to the paste that happens during the paste creation try: keep_alive = paste.expiration.split('#')[1] keep_alive = datetime.strptime(keep_alive, '%Y-%m-%d %H:%M:%S.%f') keep_alive = now < keep_alive + timedelta(seconds=10) except IndexError: keep_alive = False if not keep_alive: paste.delete() elif paste.expiration < now: paste.delete() raise ValueError() except (TypeError, ValueError): return error404(ValueError) context = {'paste': paste, 'keep_alive': keep_alive} return dmerge(context, GLOBAL_CONTEXT)
def delete_paste(quiet=False, *pastes): """ Remove pastes, given its ID or its URL quiet: Don't print anything pastes: List of pastes, given by ID or URL """ for paste_uuid in map(unpack_paste, pastes): try: Paste.load(paste_uuid).delete() if not quiet: print('Paste {} is removed'.format(paste_uuid)) except ValueError: if not quiet: print('Paste {} doesn\'t exist'.format(paste_uuid))
def delete_paste(paste_id): try: paste = Paste.load(paste_id) except (TypeError, ValueError): return error404(ValueError) if paste.owner_key != request.forms.get("owner_key", None): return HTTPResponse(status=403, body="Wrong owner key") paste.delete() return { "status": "ok", "message": "Paste deleted", }
def admin(): session = request.environ.get("beaker.session") if not session or not session.get("is_authenticated"): redirect(ADMIN_LOGIN_URL) paste_id = request.forms.get("paste", "") if paste_id: try: if "/paste/" in paste_id: paste_id = urlparse(paste_id).path.split("/paste/")[-1] paste = Paste.load(paste_id) paste.delete() except (TypeError, ValueError, FileNotFoundError): return { "status": "error", "message": f"Cannot find paste '{paste_id}'", **GLOBAL_CONTEXT, } return {"status": "ok", "message": "Paste deleted", **GLOBAL_CONTEXT} return {"status": "ok", "message": "", **GLOBAL_CONTEXT}