本文整理汇总了Python中wirecloud.commons.utils.http.build_error_response函数的典型用法代码示例。如果您正苦于以下问题:Python build_error_response函数的具体用法?Python build_error_response怎么用?Python build_error_response使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了build_error_response函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create
def create(self, request, workspace_id):
try:
ts = json.loads(request.body)
except ValueError as e:
msg = _("malformed json data: %s") % unicode(e)
return build_error_response(request, 400, msg)
workspace = Workspace.objects.get(pk=workspace_id)
if not (request.user.is_superuser or workspace.users.filter(pk=request.user.pk).exists()):
return build_error_response(request, 403, _('You are not allowed to update this workspace'))
if 'active' in ts:
active = ts.get('active', False)
if isinstance(active, string_types):
active = ts['active'].lower() == 'true'
if active:
# Only one active workspace
setActiveWorkspace(request.user, workspace)
else:
currentUserWorkspace = UserWorkspace.objects.get(workspace=workspace, user=request.user)
currentUserWorkspace.active = False
currentUserWorkspace.save()
if 'name' in ts:
workspace.name = ts['name']
workspace.save()
return HttpResponse(status=204)
示例2: update
def update(self, request, workspace_id):
workspace = get_object_or_404(Workspace, id=workspace_id)
if not request.user.is_superuser and workspace.creator != request.user:
return build_error_response(request, 403, _('You are not allowed to update this workspace'))
wiring_status = parse_json_request(request)
old_wiring_status = workspace.wiringStatus
old_read_only_connections = []
for connection in old_wiring_status['connections']:
if connection.get('readonly', False):
old_read_only_connections.append(connection)
read_only_connections = []
for connection in wiring_status['connections']:
if connection.get('readonly', False):
read_only_connections.append(connection)
if len(old_read_only_connections) > len(read_only_connections):
return build_error_response(request, 403, _('You are not allowed to remove read only connections'))
for connection in old_read_only_connections:
if connection not in read_only_connections:
return build_error_response(request, 403, _('You are not allowed to remove read only connections'))
workspace.wiringStatus = wiring_status
workspace.save()
return HttpResponse(status=204)
示例3: create
def create(self, request, workspace_id):
ts = parse_json_request(request)
fields = []
workspace = get_object_or_404(Workspace, pk=workspace_id)
if not (request.user.is_superuser or workspace.users.filter(pk=request.user.pk).exists()):
return build_error_response(request, 403, _('You are not allowed to update this workspace'))
if 'name' in ts:
workspace.name = ts['name']
fields.append('name')
if 'title' in ts:
workspace.title = ts['title']
fields.append('title')
if 'description' in ts:
workspace.description = ts['description']
fields.append('description')
if 'longdescription' in ts:
workspace.longdescription = ts['longdescription']
fields.append('longdescription')
try:
workspace.save(update_fields=fields)
except IntegrityError:
msg = _('A workspace with the given name already exists')
return build_error_response(request, 409, msg)
return HttpResponse(status=204)
示例4: process
def process(self, request):
if not request.user.is_superuser:
return build_error_response(request, 403, _("You don't have permission to switch current session user"))
try:
user_info = json.loads(request.body)
except ValueError as e:
msg = _("malformed json data: %s") % unicode(e)
return build_error_response(request, 400, msg)
if "username" not in user_info:
return build_error_response(request, 422, "Missing target user info")
user_id = get_object_or_404(User, username=user_info['username']).id
target_user = None
for backend in auth.get_backends():
try:
target_user = backend.get_user(user_id)
except:
continue
if target_user is None:
continue
# Annotate the user object with the path of the backend.
target_user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
break
if target_user is None:
raise Http404
auth.login(request, target_user)
return HttpResponse(status=204)
示例5: read
def read(self, request):
querytext = request.GET.get('q', '')
filters = {
'pagenum': int(request.GET.get('pagenum', '1')),
'maxresults': int(request.GET.get('maxresults', '30')),
'orderby': request.GET.get('orderby', '-creation_date'),
'scope': request.GET.get('scope', None),
'staff': request.GET.get('staff', 'false').lower() == 'true',
}
if not filters['orderby'].replace('-', '', 1) in ['creation_date', 'name', 'vendor']:
return build_error_response(request, 400, _('Orderby value not supported: %s') % filters['orderby'])
if filters['scope']:
filters['scope'] = set(filters['scope'].split(','))
for scope in filters['scope']:
if scope not in ['mashup', 'operator', 'widget']:
return build_error_response(request, 400, _('Scope value not supported: %s') % scope)
if filters['staff'] and not request.user.is_staff:
return build_error_response(request, 403, _('Forbidden'))
response_json = search(querytext, request, **filters)
return HttpResponse(json.dumps(response_json, sort_keys=True), content_type='application/json')
示例6: read
def read(self, request):
querytext = request.GET.get('q', '')
indexname = request.GET.get('namespace', '').strip()
if indexname == '':
message = _('Missing namespace GET parameter providing a search namespace')
return build_error_response(request, 400, message)
if not is_available(indexname):
message = _('Invalid search namespace: %s' % indexname)
return build_error_response(request, 422, message)
try:
pagenum = int(request.GET.get('pagenum', '1'))
except ValueError:
message = _('Invalid pagenum value: %s' % request.GET['pagenum'])
return build_error_response(request, 422, message)
try:
maxresults = int(request.GET.get('maxresults', '30'))
except ValueError:
message = _('Invalid maxresults value: %s' % request.GET['maxresults'])
return build_error_response(request, 422, message)
orderby = tuple(entry.strip() for entry in request.GET.get('orderby', '').split(','))
if orderby == ("",):
orderby = None
result = get_search_engine(indexname)(request, querytext, pagenum=pagenum, maxresults=maxresults, orderby=orderby)
return HttpResponse(json.dumps(result, sort_keys=True), status=200, content_type='application/json; charset=utf-8')
示例7: create
def create(self, request, workspace_id, tab_id, iwidget_id):
workspace = get_object_or_404(Workspace, pk=workspace_id)
if not request.user.is_superuser and workspace.creator != request.user:
msg = _('You have not enough permission for updating the preferences of the iwidget')
return build_error_response(request, 403, msg)
iwidget = get_object_or_404(IWidget.objects.select_related('widget__resource'), pk=iwidget_id)
if iwidget.tab_id != int(tab_id):
raise Http404
iwidget_info = iwidget.widget.resource.get_processed_info(translate=True, process_variables=True)
new_values = parse_json_request(request)
for var_name in new_values:
try:
vardef = iwidget_info['variables']['preferences'][var_name]
except KeyError:
msg = _('Invalid preference: "%s"') % var_name
return build_error_response(request, 422, msg)
if vardef['readonly'] is True:
msg = _('"%s" preference is read only.') % var_name
return build_error_response(request, 403, msg)
iwidget.set_variable_value(var_name, new_values[var_name])
iwidget.save()
return HttpResponse(status=204)
示例8: proxy_request
def proxy_request(request, protocol, domain, path):
# TODO improve proxy security
try:
if request.get_host() != urlparse.urlparse(request.META["HTTP_REFERER"])[1]:
raise Exception()
if settings.SESSION_COOKIE_NAME not in request.COOKIES:
raise Exception()
except:
return build_error_response(request, 403, _(u"Invalid request"))
url = protocol + '://' + domain + path
if len(request.GET) > 0:
url += '?' + request.GET.urlencode()
try:
response = WIRECLOUD_PROXY.do_request(request, url, request.method.upper())
except Exception as e:
msg = _("Error processing proxy request: %s") % unicode(e)
return build_error_response(request, 500, msg)
# Process cookies
for key in response.cookies:
cookie = response.cookies[key]
if cookie['path'] == '':
cookie['path'] = reverse('wirecloud|proxy', kwargs={'protocol': protocol, 'domain': domain, 'path': path})
else:
cookie['path'] = reverse('wirecloud|proxy', kwargs={'protocol': protocol, 'domain': domain, 'path': cookie['path']})
return response
示例9: read
def read(self, request, workspace_id, tab_id, iwidget_id):
workspace = get_object_or_404(Workspace, pk=workspace_id)
if not workspace.is_available_for(request.user):
msg = _("You don't have permission to access this workspace")
return build_error_response(request, 403, msg)
iwidget = get_object_or_404(IWidget, pk=iwidget_id)
if iwidget.tab_id != int(tab_id):
raise Http404
if iwidget.widget is None:
return HttpResponse(json.dumps({}), content_type='application/json; charset=UTF-8')
try:
iwidget_info = iwidget.widget.resource.get_processed_info(translate=True, process_variables=True)
except:
return build_error_response(request, 403, _('Missing widget variables cannot be updated'))
cache_manager = VariableValueCacheManager(workspace, request.user)
prefs = iwidget_info['variables']['preferences']
data = {}
data = {var: cache_manager.get_variable_data("iwidget", iwidget_id, var) for var in prefs}
return HttpResponse(json.dumps(data, sort_keys=True), content_type='application/json; charset=UTF-8')
示例10: create
def create(self, request):
received_data = parse_json_request(request)
if 'options' not in received_data:
return build_error_response(request, 400, _("Missing marketplace options"))
validate_url_param(request, 'options.url', received_data['options']['url'])
if 'user' not in received_data['options'] or received_data['options']['user'] == request.user.username:
user_entry = request.user
elif received_data['options'].get('user', None) is not None:
user_entry = User.objects.get(username=received_data['options']['user'])
else:
user_entry = None
if (user_entry is None or user_entry != request.user) and not request.user.is_superuser:
return build_error_response(request, 403, _("You don't have permissions for adding public marketplaces"))
if 'user' in received_data['options']:
del received_data['options']['user']
try:
Market.objects.create(user=user_entry, name=received_data['name'], options=received_data['options'])
except IntegrityError:
return build_error_response(request, 409, 'Market name already in use')
return HttpResponse(status=201)
示例11: create
def create(self, request):
try:
if 'file' in request.FILES:
request_file = request.FILES['file']
resource = add_packaged_resource(request_file, request.user)
elif 'template_uri' in request.POST:
template_uri = request.POST['template_uri']
downloaded_file = download_http_content(template_uri, user=request.user)
resource = add_packaged_resource(BytesIO(downloaded_file), request.user)
else:
return build_error_response(request, 400, _("Missing parameter: template_uri or file"))
except TemplateParseException as e:
return build_error_response(request, 400, e.msg)
except IntegrityError:
return build_error_response(request, 409, _('Resource already exists'))
resource.users.add(request.user)
return HttpResponse(resource.json_description, content_type='application/json; charset=UTF-8')
示例12: process
def process(self, request):
try:
data = json.loads(request.body)
except ValueError as e:
msg = _("malformed json data: %s") % unicode(e)
return build_error_response(request, 400, msg)
(resource_vendor, resource_name, resource_version) = data['resource'].split('/')
resource = get_object_or_404(CatalogueResource, vendor=resource_vendor, short_name=resource_name, version=resource_version)
if not resource.fromWGT:
msg = _('Only packaged resources can be published')
return build_error_response(request, 400, msg)
base_dir = catalogue.wgt_deployer.get_base_dir(resource_vendor, resource_name, resource_version)
wgt_file = WgtFile(os.path.join(base_dir, resource.template_uri))
market_managers = get_market_managers(request.user)
errors = {}
for market_endpoint in data['marketplaces']:
try:
market_managers[market_endpoint['market']].publish(market_endpoint, wgt_file, request.user, request=request)
except Exception as e:
errors[market_endpoint['market']] = unicode(e)
if len(errors) == 0:
return HttpResponse(status=204)
elif len(errors) == len(data['marketplaces']):
return HttpResponse(json.dumps(errors), status=502, content_type='application/json; charset=UTF-8')
else:
return HttpResponse(json.dumps(errors), status=200, content_type='application/json; charset=UTF-8')
示例13: process
def process(self, request):
data = parse_json_request(request)
(resource_vendor, resource_name, resource_version) = data['resource'].split('/')
resource = get_object_or_404(CatalogueResource, vendor=resource_vendor, short_name=resource_name, version=resource_version)
if not resource.is_available_for(request.user):
return build_error_response(request, 403, _('You are not allowed to delete this market'))
base_dir = catalogue.wgt_deployer.get_base_dir(resource_vendor, resource_name, resource_version)
wgt_file = WgtFile(os.path.join(base_dir, resource.template_uri))
market_managers = get_market_managers(request.user)
errors = {}
for market_endpoint in data['marketplaces']:
try:
market_managers[market_endpoint['market']].publish(market_endpoint, wgt_file, request.user, request=request)
except Exception as e:
errors[market_endpoint['market']] = text_type(e)
if len(errors) == 0:
return HttpResponse(status=204)
elif len(errors) == len(data['marketplaces']):
return build_error_response(request, 502, _('Something went wrong (see details for more info)'), details=errors)
else:
return build_error_response(request, 200, _('Something went wrong (see details for more info)'), details=errors)
示例14: update
def update(self, request, workspace_id, tab_id):
tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id)
if tab.workspace.creator != request.user:
return build_error_response(request, 403, _('You are not allowed to update this workspace'))
user_workspace = UserWorkspace.objects.get(user__id=request.user.id, workspace__id=workspace_id)
if user_workspace.manager != '':
return build_error_response(request, 403, _('You are not allowed to update this workspace'))
data = parse_json_request(request)
if 'visible' in data:
visible = data['visible']
if isinstance(visible, string_types):
visible = visible.strip().lower()
if visible not in ('true', 'false'):
return build_error_response(request, 422, _('Invalid visible value'))
visible = visible == 'true'
elif not isinstance(visible, bool):
return build_error_response(request, 422, _('Invalid visible value'))
if visible:
#Only one visible tab
setVisibleTab(request.user, workspace_id, tab)
else:
tab.visible = False
if 'name' in data:
tab.name = data['name']
tab.save()
return HttpResponse(status=204)
示例15: delete
def delete(self, request, workspace_id, tab_id):
# Get tab, if it does not exist, an http 404 error is returned
tab = get_object_or_404(Tab.objects.select_related('workspace'), workspace__pk=workspace_id, pk=tab_id)
if not request.user.is_superuser and not tab.workspace.users.filter(id=request.user.id).exists():
return build_error_response(request, 403, _('You are not allowed to remove this tab'))
tabs = Tab.objects.filter(workspace__pk=workspace_id).order_by('position')[::1]
if len(tabs) == 1:
msg = _("Tab cannot be deleted as workspaces need at least one tab")
return build_error_response(request, 403, msg)
if tab.iwidget_set.filter(readOnly=True).exists():
msg = _("Tab cannot be deleted as it contains widgets that cannot be deleted")
return build_error_response(request, 403, msg)
# decrease the position of the following tabs
for t in range(tab.position + 1, len(tabs)):
tabs[t].position = tabs[t].position - 1
tabs[t].save()
# Remove the tab
tabs.remove(tab)
deleteTab(tab, request.user)
if tab.visible:
# set a new visible tab (first tab by default)
activeTab = tabs[0]
setVisibleTab(request.user, workspace_id, activeTab)
return HttpResponse(status=204)