def TestEdit(request, key): test = None error_msg = None current_user = users.get_current_user() api_key = request.REQUEST.get('api_key') # If a key was provided in the endpoint that means this is an edit. if key: test = models.user_test.Test.get_mem(key) meta = models.user_test.TestMeta.get_mem_by_test(test) if (test.user.key().name() != current_user.user_id() and not users.is_current_user_admin()): return http.HttpResponse( 'You can\'t play with tests you don\'t own') if api_key or request.POST: # api_key should map to a User.key() if api_key: user = models.user_test.User.get_by_key_name(api_key) if not user: return http.HttpResponse( 'No user was found with an api_key=%s' % api_key) else: user = models.user_test.User.get_by_key_name( current_user.user_id()) # edit if test: test.name = request.REQUEST.get('name') test.url = request.REQUEST.get('url') test.description = request.REQUEST.get('description') deleted = request.REQUEST.get('deleted') if deleted == '1': test.deleted = True logging.info('deleted: %s' % test.deleted) if request.REQUEST.get('sandboxid'): test.sandboxid = request.REQUEST.get('sandboxid') if request.REQUEST.get('test_keys'): test.test_keys = request.REQUEST.get('test_keys').split(',') # create else: meta = models.user_test.TestMeta().save() test = models.user_test.Test( user=user, name=request.REQUEST.get('name'), url=request.REQUEST.get('url'), description=request.REQUEST.get('description'), sandboxid=request.REQUEST.get('sandboxid', _get_random_sandboxid()), meta=meta) try: test.save() test.add_memcache() if api_key: return http.HttpResponse('{"test_key": "%s"}' % test.key(), mimetype='application/json') else: return http.HttpResponseRedirect('/user/settings') # App Engine model caught a validation exception. except datastore_errors.BadValueError, error_msg: if api_key: msg = 'Validation error: %s' % error_msg logging.info(msg) return http.HttpResponseServerError(msg) request = decorators.add_csrf_to_request(request) test = { 'name': request.REQUEST.get('name'), 'url': request.REQUEST.get('url'), 'description': request.REQUEST.get('description'), 'sandboxid': request.REQUEST.get('sandboxid') } # Do not try to catch / variable-ize this exception, it breaks in # production. except:
def TestEdit(request, key): test = None error_msg = None current_user = users.get_current_user() api_key = request.REQUEST.get("api_key") # If a key was provided in the endpoint that means this is an edit. if key: test = models.user_test.Test.get_mem(key) meta = models.user_test.TestMeta.get_mem_by_test(test) if test.user.key().name() != current_user.user_id() and not users.is_current_user_admin(): return http.HttpResponse("You can't play with tests you don't own") if api_key or request.POST: # api_key should map to a User.key() if api_key: user = models.user_test.User.get_by_key_name(api_key) if not user: return http.HttpResponse("No user was found with an api_key=%s" % api_key) else: user = models.user_test.User.get_by_key_name(current_user.user_id()) # edit if test: test.name = request.REQUEST.get("name") test.url = request.REQUEST.get("url") test.description = request.REQUEST.get("description") deleted = request.REQUEST.get("deleted") if deleted == "1": test.deleted = True logging.info("deleted: %s" % test.deleted) if request.REQUEST.get("sandboxid"): test.sandboxid = request.REQUEST.get("sandboxid") if request.REQUEST.get("test_keys"): test.test_keys = request.REQUEST.get("test_keys").split(",") # create else: meta = models.user_test.TestMeta().save() test = models.user_test.Test( user=user, name=request.REQUEST.get("name"), url=request.REQUEST.get("url"), description=request.REQUEST.get("description"), sandboxid=request.REQUEST.get("sandboxid", _get_random_sandboxid()), meta=meta, ) try: test.save() test.add_memcache() if api_key: return http.HttpResponse('{"test_key": "%s"}' % test.key(), mimetype="application/json") else: return http.HttpResponseRedirect("/user/settings") # App Engine model caught a validation exception. except datastore_errors.BadValueError, error_msg: if api_key: msg = "Validation error: %s" % error_msg logging.info(msg) return http.HttpResponseServerError(msg) request = decorators.add_csrf_to_request(request) test = { "name": request.REQUEST.get("name"), "url": request.REQUEST.get("url"), "description": request.REQUEST.get("description"), "sandboxid": request.REQUEST.get("sandboxid"), } # Do not try to catch / variable-ize this exception, it breaks in # production. except:
request = decorators.add_csrf_to_request(request) test = { 'name': request.REQUEST.get('name'), 'url': request.REQUEST.get('url'), 'description': request.REQUEST.get('description'), 'sandboxid': request.REQUEST.get('sandboxid') } # Do not try to catch / variable-ize this exception, it breaks in # production. except: error_msg = sys.exc_info()[0] logging.info(error_msg) if api_key: return http.HttpResponseServerError(error_msg) request = decorators.add_csrf_to_request(request) test = { 'name': request.REQUEST.get('name'), 'url': request.REQUEST.get('url'), 'description': request.REQUEST.get('description'), 'sandboxid': request.REQUEST.get('sandboxid') } params = { 'test': test, 'sandboxid': _get_random_sandboxid(), 'max_sandboxid_len': _MAX_SANDBOXID_LEN, 'error_msg': error_msg, 'csrf_token': request.session.get('csrf_token') } return util.Render(request, 'user_test_form.html', params)
request = decorators.add_csrf_to_request(request) test = { "name": request.REQUEST.get("name"), "url": request.REQUEST.get("url"), "description": request.REQUEST.get("description"), "sandboxid": request.REQUEST.get("sandboxid"), } # Do not try to catch / variable-ize this exception, it breaks in # production. except: error_msg = sys.exc_info()[0] logging.info(error_msg) if api_key: return http.HttpResponseServerError(error_msg) request = decorators.add_csrf_to_request(request) test = { "name": request.REQUEST.get("name"), "url": request.REQUEST.get("url"), "description": request.REQUEST.get("description"), "sandboxid": request.REQUEST.get("sandboxid"), } params = { "test": test, "sandboxid": _get_random_sandboxid(), "max_sandboxid_len": _MAX_SANDBOXID_LEN, "error_msg": error_msg, "csrf_token": request.session.get("csrf_token"), } return util.Render(request, "user_test_form.html", params)