def render_map(request): print "render_map was called" if request.method == 'POST': print "POST" if (request.POST.get('mapRequestType', '') == 'new_position'): newposition = Position(lat=request.POST['lat'], lon=request.POST['lon']) newposition.save() ujo = get_user_json(request) ujo.location = newposition ujo.save() refresh_redirect = HttpResponseRedirect('/mealsOnWheels/map/') refresh_redirect.status_code = 278 return refresh_redirect elif (request.POST.get('mapRequestType', '') == 'radius_changed'): search_by_radius(request.POST['new_radius'],get_user_location(request), request) refresh_redirect = HttpResponseRedirect('/mealsOnWheels/map/') refresh_redirect.status_code = 278 return refresh_redirect elif(request.POST.get('mapRequestType', '') == 'clear_data'): reset_user_data(request) print "We're about to send the redirect" refresh_redirect = HttpResponseRedirect('/mealsOnWheels/map/') refresh_redirect.status_code = 278 return refresh_redirect elif(request.POST.get('mapRequestType', "") == "term_search"): search_by_term(request.POST['term'], request) refresh_redirect = HttpResponseRedirect('/mealsOnWheels/map/') refresh_redirect.status_code = 278 return refresh_redirect else: key = request.POST['foodTruckKey'] rate = request.POST['rate'] print "key:" + key +"rate:" + rate myUser = request.user print "user:"******"tot n of foodtruck" + str( FoodTruck.objects.count()) ##for i in FoodTruck.objects.all(): ## print str(i) try: myFood = FoodTruck.objects.get(key=key) print "myFood--->" + str(myFood) except: print "There is no food truck corresponding to this key."+\ "\nDid you perse all the food truck from admin page?" myReviews = myUser.review_set.filter(foodtruck=myFood) if myReviews.count()==1: myReview = myReviews[0] myReview.rate = rate myReview.pub_date=datetime.datetime.today() myReview.save() else: print "this is my first review" myUser.review_set.create( foodtruck=myFood,rate=rate, pub_date=datetime.datetime.today()) print str(myUser.review_set.get(foodtruck=myFood)) return HttpResponse(key) return render(request,'mealsOnWheels/map.html', {'json_string': get_user_json(request).json_object, 'location': get_user_location(request)})
def redirect(name: str) -> HttpResponse: url = reverse(name) response = HttpResponseRedirect(url) response.status_code = status.HTTP_303_SEE_OTHER return response
def get(self, request, **kwargs): accept_header = request.headers.get("Accept", "") if getattr(self, "is_html_export", False) or "text/html" in accept_header: return super().get(request, **kwargs) if not accept_header or accept_header in ("plain", "text/plain"): return self.get_text(request, **kwargs) export_headers = { "frab_xml": ["application/xml", "text/xml"], "frab_json": ["application/json"], } for url_name, headers in export_headers.items(): if any(header in accept_header for header in headers): target_url = getattr(self.request.event.urls, url_name).full() response = HttpResponseRedirect(target_url) response.status_code = 303 return response if "*/*" in accept_header: return self.get_text(request, **kwargs) return super().get(request, **kwargs) # Fallback to standard HTML response
def refresh(request): """Simulate cookie refresh - redirect logged in user with a new cookie""" redirect_url = request.GET.get(REDIRECT_FIELD_NAME, '') response = HttpResponseRedirect(redirect_url) response.delete_cookie(SSO_COOKIE_NAME) # Redirect with cookie doesn't work with 300 series response.status_code = 200 return set_ticket_cookie(request.user, response)
def redirect(request): form = RedirectForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(repr(form.errors)) response = HttpResponseRedirect(form.cleaned_data['path']) response.set_cookie('_domain', form.cleaned_data['domain']) response.status_code = 307 # Re-submit POST requests return response
def unauthorizedResponse(request): logout(request) response = HttpResponseRedirect('https://' + request.get_host()) response.delete_cookie(key='whydahusertoken_sso') response.delete_cookie(key='whydahusertoken_sso', path='/', domain=request.get_host() ) response.set_cookie('whydahusertoken_sso','') response.status_code = 401 if request.method == 'GET': redirect_url = 'https://' + request.get_host() + request.POST.get('path', '/') else: redirect_url = 'https://' + request.get_host() return HttpResponseRedirect('error401')
def ajax_add_form(request): try: # If form was submited if request.method == 'POST': # Get user auth = AuthSession(request.session) client = auth.get_clientFactory() # Get all script_types from NetworkAPI script_list = client.create_roteiro().listar() form = AssociateScriptForm(script_list, request.POST) if form.is_valid(): # Data id_script = form.cleaned_data['script'] equipment = form.cleaned_data['equip_id'] equip_nam = form.cleaned_data['equip_name'] try: # Business client.create_equipamento_roteiro().inserir( equipment, id_script) messages.add_message( request, messages.SUCCESS, equip_script_messages.get("success_insert")) except EquipamentoRoteiroError, e: messages.add_message( request, messages.ERROR, equip_script_messages.get("error_equal_ass")) # Redirect to list_all action url_param = reverse("equip.script.search.list") url_param = url_param + "?equip_name=" + equip_nam response = HttpResponseRedirect(url_param) if request.is_ajax(): response.status_code = 278 return response else: # Invalid form, show errors return render_to_response( EQUIPMENT_SCRIPT_ADD_FORM, {'add_form': form}, context_instance=RequestContext(request)) except NetworkAPIClientError, e: logger.error(e) messages.add_message(request, messages.ERROR, e)
def decorator(request, *args, **kwargs): wp_query = request.GET.get('p', None) if wp_query: try: post = Post.objects.published().get(postmeta__key='wp_post_id', postmeta__value=wp_query) ar = post.pub_date.strftime("%Y/%m/%d").split('/') ar.append(post.slug) htr = HttpResponseRedirect(reverse('blog:post-detail', args=ar)) htr.status_code = 301 # This should reflect a 'Moved Permanently' code. return htr except Post.DoesNotExist: raise Http404 return view_fn(request, *args, **kwargs)
def _decorated(request, *args, **kwargs): auth = AuthSession(request.session) if auth.is_authenticated(): return view_func(request, *args, **kwargs) else: if request.is_ajax(): response = HttpResponseRedirect(URL_LOGIN) response.status_code = 278 response.content = error_messages.get('login_required') return response else: return HttpResponseRedirect(URL_LOGIN + '?redirect=' + request.path)
def unauthorizedResponse(request): logout(request) response = HttpResponseRedirect('https://' + request.get_host()) response.delete_cookie(key='whydahusertoken_sso') response.delete_cookie(key='whydahusertoken_sso', path='/', domain=request.get_host()) response.set_cookie('whydahusertoken_sso', '') response.status_code = 401 if request.method == 'GET': redirect_url = 'https://' + request.get_host() + request.POST.get( 'path', '/') else: redirect_url = 'https://' + request.get_host() return HttpResponseRedirect('error401')
def get(self, request, **kwargs): accept_header = request.headers.get('Accept', '') if getattr(self, 'is_html_export', False) or 'text/html' in accept_header: return super().get(request, **kwargs) if not accept_header or accept_header in ('plain', 'text/plain'): return self.get_text(request, **kwargs) export_headers = { 'frab_xml': ['application/xml', 'text/xml'], 'frab_json': ['application/json'], } for url_name, headers in export_headers.items(): if any(header in accept_header for header in headers): target_url = getattr(self.request.event.urls, url_name).full() response = HttpResponseRedirect(target_url) response.status_code = 303 return response return super().get(request, **kwargs) # Fallback to standard HTML response
def createComplaint(request): user = request.GET.get('user', None) if user == None: return redirect(reverse('main')) if request.is_ajax(): title = request.POST.get('title') description = request.POST.get('description') if not check_string(title): messages.error(request, 'Wrong title') if not check_string(description): messages.error(request, 'Wrong description') if len(messages.get_messages(request)) == 0: messages.success(request, 'Check succeeded') complaint = Complaint(user=User.objects.get(username=user), author=request.user, title=title, description=description) complaint.save() response = HttpResponseRedirect(reverse('main')) response.status_code = 278 return response data = {} # <editor-fold desc="SEND-MESSAGES"> sended_messages = [] for message in messages.get_messages(request): sended_messages.append({ "level": message.level, "message": message.message, "extra_tags": message.tags, }) data['messages'] = sended_messages # </editor-fold> return HttpResponse(json.dumps(data), content_type="application/json") context = { 'user': user, } return render(request, 'complaint_create.html', context)
def process_request(self, request): if request.path == reverse('registration_inactive'): return None if path_matches(request.path, getattr(settings, 'INACTIVE_PATHS', [])): return None if not request.user.is_authenticated(): return None if request.user.is_authenticated() and not request.user.is_active: # @@TODO: add a cfgable notification/flash/portalstatus message callback # somehow (settings.py i guess :-/) response = HttpResponseRedirect(reverse('registration_inactive')) response.status_code = 307 # please don't cache? return response
def redirect(request): form = RedirectForm(request.GET) if not form.is_valid(): return HttpResponseBadRequest(repr(form.errors)) parameters = request.GET.copy() for key in ['domain', 'path']: if key in parameters: del parameters[key] parameters = urllib.urlencode(parameters) url = form.cleaned_data['path'] if parameters: url = '%s?%s' % (url, parameters) response = HttpResponseRedirect(url) response.set_cookie('_domain', form.cleaned_data['domain']) response.status_code = 307 # Re-submit POST requests return response
def schedule_entries(request, entry_id): if request.method == 'GET': return HttpResponse("TODO: Entry Detail %s" % entry_id, content_type='text/plain') if request.method == 'DELETE': redirect = HttpResponseRedirect("/schedule/") if request.is_ajax(): redirect.status_code = 278 try: entry = ScheduleEntry.objects.get(id=int(entry_id)) if entry: if timezone.now() < (entry.begin_time - timedelta(seconds=60)): print("delete entry: %s" % entry.id) entry.delete() messages.success(request, 'Sucessfully deleted schedule entry') return redirect else: messages.success('must delete more than one minute in advance') return redirect else: messages.success('entry not found') return redirect except ValueError as e: messages.success('incorrect argument') return redirect
def get_response(self, request, redirectnode, **kwargs): response = HttpResponseRedirect(redirectnode.new_url) response.status_code = redirectnode.redirect_type return response
def connect_interfaces(request, id_interface=None, front_or_back=None, all_interfaces=None): auth = AuthSession(request.session) client = auth.get_clientFactory() lists = dict() lists['id_interface'] = id_interface lists['front_or_back'] = front_or_back if request.method == "GET": if request.GET.__contains__('search_equip'): equipment_name = request.GET.get('search_equip') logger.debug(equipment_name) else: try: int(all_interfaces) return render_to_response(NEW_INTERFACE_CONNECT_FORM, lists, RequestContext(request)) except Exception: equipment_name = all_interfaces data = dict() data["start_record"] = 0 data["end_record"] = 1000 data["asorting_cols"] = ["id"] data["searchable_columns"] = ["nome"] data["custom_search"] = equipment_name data["extends_search"] = [] equipment = list() try: search_equipment = client.create_api_equipment().search( search=data) equipment = search_equipment.get('equipments') except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except Exception as e: logger.error(e) messages.add_message(request, messages.ERROR, e) interface_list = list() for equip in equipment: data["searchable_columns"] = [""] data["custom_search"] = "" data["extends_search"] = [{'equipamento__id': equip.get('id')}] try: search_interface = client.create_api_interface_request( ).search(fields=[ 'id', 'interface', 'front_interface__basic', 'back_interface__basic' ], search=data) interface_list = search_interface.get('interfaces') except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except Exception as e: logger.error(e) messages.add_message(request, messages.ERROR, e) if not interface_list: logger.error('Equipment do not have interfaces availables.') messages.add_message( request, messages.ERROR, 'Equipment do not have interfaces availables.') return render_to_response(NEW_INTERFACE_CONNECT_FORM, lists, RequestContext(request)) try: int(front_or_back) for i in interface_list: if front_or_back and i.get( 'front_interface') or not front_or_back and i.get( 'back_interface'): interface_list.remove(i) lists['connect_form'] = ConnectFormV3(equipment[0], interface_list, initial={ 'equip_name': equipment[0].get('name'), 'equip_id': equipment[0].get('id') }) lists['equipment'] = equipment[0] except Exception: if all_interfaces: allInt = list() for i in interface_list: allInt.append({ 'id': i.get('id'), 'interface': i.get('interface') }) lists['all_interfaces'] = allInt return render_to_response_ajax( AJAX_LIST_INTERFACES, lists, context_instance=RequestContext(request)) elif request.method == "POST": equip_id = request.POST['equip_id'] search_equipment = client.create_api_equipment().get([equip_id]) equipment = search_equipment.get('equipments') interface_list = list() data = dict() data["start_record"] = 0 data["end_record"] = 1000 data["asorting_cols"] = ["id"] data["searchable_columns"] = [""] data["custom_search"] = "" for equip in equipment: data["extends_search"] = [{'equipamento__id': equip.get('id')}] try: search_interface = client.create_api_interface_request( ).search(fields=[ 'id', 'interface', 'front_interface__basic', 'back_interface__basic' ], search=data) interface_list = search_interface.get('interfaces') except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, e) except Exception as e: logger.error(e) messages.add_message(request, messages.ERROR, e) for i in interface_list: if front_or_back and i.get( 'front_interface') or not front_or_back and i.get( 'back_interface'): interface_list.remove(i) form = ConnectFormV3(equipment[0], interface_list, request.POST) if form.is_valid(): front = form.cleaned_data['front'] back = form.cleaned_data['back'] link_a = "front" if front_or_back else "back" interface_a = dict(link=link_a, id=id_interface) if front: interface_b = dict(link="front", id=front) else: interface_b = dict(link="back", id=back) try: client.create_api_interface_request().connecting_interfaces( [interface_a, interface_b]) messages.add_message( request, messages.SUCCESS, equip_interface_messages.get("success_connect")) except NetworkAPIClientError as e: logger.error(e) messages.add_message(request, messages.ERROR, 'Erro linkando as interfaces: %s' % e) except Exception as e: logger.error(e) messages.add_message(request, messages.ERROR, 'Erro linkando as interfaces: %s' % e) response = HttpResponseRedirect( reverse("interface.edit", args=[id_interface])) response.status_code = 278 return response else: lists['connect_form'] = form lists['equipment'] = equipment[0] return render_to_response(NEW_INTERFACE_CONNECT_FORM, lists, RequestContext(request))
def wayf(request): # Instantiate the metadata metadata = ShibbolethMetadata(settings.SHIB_METADATA) # Get the IdP list idps = metadata.getIdps() # A list to hold the cookies-to-be-set cookies = [] # Get the current IdP, if there is one if settings.IDP_COOKIE in request.COOKIES.keys(): current_idp = idps[request.COOKIES[settings.IDP_COOKIE]] else: current_idp = None # Try to get the user's last used IdP if settings.LAST_IDP_COOKIE in request.COOKIES.keys(): selectedidp = idps[request.COOKIES[settings.LAST_IDP_COOKIE]] else: selectedidp = None # If this is the first visit, use some IP-based heuristics, as in utils.py's getUserRealm() # this uses the getUserRealm magic from dnsutils #if not selectedidp: # selectedidp = idps.getIdpForScope(getUserRealm(request.META['REMOTE_ADDR'])) # First check to see if anything has changed if request.method == "POST": if 'clear' in request.POST.keys(): if request.POST['clear']: response = HttpResponseRedirect("/") response.delete_cookie(settings.IDP_COOKIE, domain=settings.COOKIE_DOMAIN) response['P3P'] = settings.P3P_HEADER return response elif 'user_idp' in request.POST.keys(): current_idp = idps[request.POST['user_idp']] if current_idp: cookies.append({ 'name': settings.LAST_IDP_COOKIE, 'data': request.POST['user_idp'], 'age': 86400 * 100 }) if request.POST.get('save'): if request.POST.get('savetype') == 'perm': age = 86400 * 100 else: age = None cookies.append({ 'name': settings.IDP_COOKIE, 'data': request.POST['user_idp'], 'age': age }) # At this point we have handled the cookies and have an IdP, if the intent is such if not request.GET: # We were called without any arguments if current_idp: response = render_to_response( "wayf_set.html", {'currentidp': current_idp.getName()}, context_instance=RequestContext(request)) for cookie in cookies: if cookie['age']: expires = time.strftime( "%a, %d-%m-%y %H:%M:%S GMT", time.gmtime(time.time() + cookie['age'])) else: expires = None response.set_cookie(cookie['name'], cookie['data'], domain=settings.COOKIE_DOMAIN, max_age=cookie['age'], expires=expires) else: idplist = idps.getIdpsByCategory() response = render_to_response( "wayf.html", { 'idplist': idplist, 'request': request, 'selected': selectedidp }, context_instance=RequestContext(request)) response['P3P'] = settings.P3P_HEADER return response # If we got to this point, then this is a request comming from an SP if current_idp: # We have an IdP to route the request to if 'entityID' in request.GET.keys() and 'return' in request.GET.keys(): # a SAML Discovery Service request # Discovery Service mandates that 'entityID' holds the SP's ID if 'returnIDParam' in request.GET.keys( ) and request.GET['returnIDParam']: returnparam = request.GET['returnIDParam'] else: returnparam = 'entityID' response = HttpResponseRedirect(request.GET['return'] + "&" + urlencode(((returnparam, current_idp.id), ))) elif 'shire' in request.GET.keys() and 'target' in request.GET.keys(): # an old Shibboleth 1.x request # We just redirect the user to the given IdP response = HttpResponseRedirect( current_idp. sso['urn:mace:shibboleth:1.0:profiles:AuthnRequest'] + "?" + request.GET.urlencode()) else: response = render_to_response("500.html") response.status_code = 400 # bad request for cookie in cookies: if cookie['age']: expires = time.strftime( "%a, %d-%m-%y %H:%M:%S GMT", time.gmtime(time.time() + cookie['age'])) else: expires = None response.set_cookie(cookie['name'], cookie['data'], domain=settings.COOKIE_DOMAIN, max_age=cookie['age'], expires=expires) response['P3P'] = settings.P3P_HEADER return response # If we got this far, then we need to be redirected, but don't know where to. # Let the user pick an IdP # Generate the category - idp list idplist = idps.getIdpsByCategory() # Render the apropriate wayf template response = render_to_response("wayf_from_sp.html", { 'idplist': idplist, 'request': request, 'selected': selectedidp }, context_instance=RequestContext(request)) response['P3P'] = settings.P3P_HEADER return response
def get(self, request, proxito_path, template_name='404.html'): """ Handler for 404 pages on subdomains. This does a couple things: * Handles directory indexing for URLs that don't end in a slash * Handles directory indexing for README.html (for now) * Handles custom 404 serving For 404's, first search for a 404 page in the current version, then continues with the default version and finally, if none of them are found, the Read the Docs default page (Maze Found) is rendered by Django and served. """ # pylint: disable=too-many-locals # Parse the URL using the normal urlconf, so we get proper subdomain/translation data _, __, kwargs = url_resolve(proxito_path, urlconf='readthedocs.proxito.urls') final_project, lang_slug, version_slug, filename = _get_project_data_from_request( # noqa request, project_slug=kwargs.get('project_slug'), subproject_slug=kwargs.get('subproject_slug'), lang_slug=kwargs.get('lang_slug'), version_slug=kwargs.get('version_slug'), filename=kwargs.get('filename', ''), ) # Check and perform redirects on 404 handler redirect_path, http_status = self.get_redirect( final_project, lang_slug, version_slug, filename, request.path, ) if redirect_path and http_status: return self.get_redirect_response(request, redirect_path, http_status) storage_root_path = final_project.get_storage_path( type_='html', version_slug=version_slug, include_file=False, ) storage = get_storage_class(settings.RTD_BUILD_MEDIA_STORAGE)() # First, check for dirhtml with slash for tryfile in ('index.html', 'README.html'): storage_filename_path = os.path.join(storage_root_path, filename, tryfile) log.debug( 'Trying index filename: project=%s version=%s, file=%s', final_project.slug, version_slug, storage_filename_path, ) if storage.exists(storage_filename_path): log.info( 'Redirecting to index file: project=%s version=%s, url=%s', final_project.slug, version_slug, storage_filename_path, ) # Use urlparse so that we maintain GET args in our redirect parts = urlparse(proxito_path) if tryfile == 'README.html': new_path = os.path.join(parts.path, tryfile) else: new_path = parts.path + '/' new_parts = parts._replace(path=new_path) resp = HttpResponseRedirect(new_parts.geturl()) return resp # If that doesn't work, attempt to serve the 404 of the current version (version_slug) # Secondly, try to serve the 404 page for the default version # (project.get_default_version()) for version_slug_404 in [ version_slug, final_project.get_default_version() ]: for tryfile in ('404.html', '404/index.html'): storage_root_path = final_project.get_storage_path( type_='html', version_slug=version_slug_404, include_file=False, ) storage_filename_path = os.path.join(storage_root_path, tryfile) if storage.exists(storage_filename_path): log.debug( 'Serving custom 404.html page: [project: %s] [version: %s]', final_project.slug, version_slug_404, ) resp = HttpResponse( storage.open(storage_filename_path).read()) resp.status_code = 404 return resp # Finally, return the default 404 page generated by Read the Docs resp = render(request, template_name) resp.status_code = 404 return resp
def redirect(request, e): response = HttpResponseRedirect(reverse("auctions:index")) response.status_code = 404 return response
interface_b = dict(link="front", id=front) else: interface_b = dict(link="back", id=back) try: client.create_api_interface_request().connecting_interfaces([interface_a, interface_b]) messages.add_message(request, messages.SUCCESS, equip_interface_messages.get("success_connect")) except NetworkAPIClientError, e: logger.error(e) messages.add_message(request, messages.ERROR, 'Erro linkando as interfaces: %s' % e) except Exception, e: logger.error(e) messages.add_message(request, messages.ERROR, 'Erro linkando as interfaces: %s' % e) response = HttpResponseRedirect(reverse("interface.edit", args=[id_interface])) response.status_code = 278 return response else: lists['connect_form'] = form lists['equipment'] = equipment[0] return render_to_response(NEW_INTERFACE_CONNECT_FORM, lists, RequestContext(request)) @log @login_required @has_perm([{"permission": EQUIPMENT_MANAGEMENT, "write": True, "read": True}]) def disconnect_interfaces(request, interface_a=None, interface_b=None): auth = AuthSession(request.session)
def actually_render_to_response(self, request, extra_context=None): """Returns an :class:`HttpResponseRedirect` to :attr:`self.target_url`.""" response = HttpResponseRedirect(self.target_url) response.status_code = self.status_code return response
def wayf(request): # Instantiate the metadata metadata = ShibbolethMetadata(settings.SHIB_METADATA) # Get the IdP list idps = metadata.getIdps() sps = metadata.getSps() # A list to hold the cookies-to-be-set cookies = [] # Get the current IdP, if there is one if settings.IDP_COOKIE in request.COOKIES.keys(): current_idp = idps[request.COOKIES[settings.IDP_COOKIE]] else: current_idp = None # Try to get the user's last used IdP if settings.LAST_IDP_COOKIE in request.COOKIES.keys(): selectedidp = idps[request.COOKIES[settings.LAST_IDP_COOKIE]] else: selectedidp = None # If this is the first visit, use some IP-based heuristics, as in utils.py's getUserRealm() # this uses the getUserRealm magic from dnsutils # if not selectedidp: # selectedidp = idps.getIdpForScope(getUserRealm(request.META['REMOTE_ADDR'])) # First check to see if anything has changed if request.method == "POST": if 'clear' in request.POST.keys(): if request.POST['clear']: response = HttpResponseRedirect("/") response.delete_cookie(settings.IDP_COOKIE, domain=settings.COOKIE_DOMAIN) response['P3P'] = settings.P3P_HEADER return response elif 'user_idp' in request.POST.keys(): current_idp = idps[request.POST['user_idp']] if current_idp: cookies.append({'name': settings.LAST_IDP_COOKIE, 'data': request.POST['user_idp'], 'age': 86400 * 100}) if request.POST.get('save'): if request.POST.get('savetype') == 'perm': age = 86400 * 100 else: age = None cookies.append({'name': settings.IDP_COOKIE, 'data': request.POST['user_idp'], 'age': age}) # At this point we have handled the cookies and have an IdP, if the intent is such if not request.GET: # We were called without any arguments if current_idp: response = render_to_response("wayf_set.html", {'currentidp': current_idp.getName()}, context_instance=RequestContext(request)) for cookie in cookies: if cookie['age']: expires = time.strftime("%a, %d-%m-%y %H:%M:%S GMT", time.gmtime(time.time() + cookie['age'])) else: expires = None response.set_cookie(cookie['name'], cookie['data'], domain=settings.COOKIE_DOMAIN, max_age=cookie['age'], expires=expires) else: idplist = idps.getIdpsByCategory() response = render_to_response("wayf.html", {'idplist': idplist, 'request': request, 'selected': selectedidp}, context_instance=RequestContext(request)) response['P3P'] = settings.P3P_HEADER return response # If we got to this point, then this is a request comming from an SP if current_idp: # We have an IdP to route the request to if 'entityID' in request.GET.keys() and 'return' in request.GET.keys(): # a SAML Discovery Service request # Discovery Service mandates that 'entityID' holds the SP's ID if 'returnIDParam' in request.GET.keys() and request.GET['returnIDParam']: returnparam = request.GET['returnIDParam'] else: returnparam = 'entityID' # check if the return url is a valid response url returnval = request.GET['return'] if not sps.isDiscoveryResponseLocation(returnval): response = render_to_response("400.html") response.status_code = 400 # bad request else: response = HttpResponseRedirect(returnval + "&" + urlencode(((returnparam, current_idp.id),))) elif 'shire' in request.GET.keys() and 'target' in request.GET.keys(): # an old Shibboleth 1.x request # We just redirect the user to the given IdP response = HttpResponseRedirect( current_idp.sso['urn:mace:shibboleth:1.0:profiles:AuthnRequest'] + "?" + request.GET.urlencode() ) else: response = render_to_response("400.html") response.status_code = 400 # bad request for cookie in cookies: if cookie['age']: expires = time.strftime("%a, %d-%m-%y %H:%M:%S GMT", time.gmtime(time.time() + cookie['age'])) else: expires = None response.set_cookie(cookie['name'], cookie['data'], domain=settings.COOKIE_DOMAIN, max_age=cookie['age'], expires=expires) response['P3P'] = settings.P3P_HEADER return response # If we got this far, then we need to be redirected, but don't know where to. # Let the user pick an IdP # Generate the category - idp list idplist = idps.getIdpsByCategory() # Render the apropriate wayf template response = render_to_response("wayf_from_sp.html", {'idplist': idplist, 'request': request, 'selected': selectedidp}, context_instance=RequestContext(request)) response['P3P'] = settings.P3P_HEADER return response
def connect(request, id_interface, front_or_back): lists = dict() if not (front_or_back == "0" or front_or_back == "1"): raise Http404 try: # Get user auth = AuthSession(request.session) client = auth.get_clientFactory() lists['id_interface'] = id_interface lists['front_or_back'] = front_or_back lists['search_form'] = SearchEquipForm() if request.method == "GET": if request.GET.__contains__('equip_name'): lists['search_form'] = search_form = SearchEquipForm( request.GET) if search_form.is_valid(): # Get equip name in form name_equip = search_form.cleaned_data['equip_name'] # Get equipment by name from NetworkAPI equipment = client.create_equipamento().listar_por_nome( name_equip)['equipamento'] # Get interfaces related to equipment selected interf_list = client.create_interface().list_all_by_equip( equipment['id']) # Remove interface that is being added to the combobox i = [] for inter in interf_list['interfaces']: if id_interface != inter['id']: i.append(inter) interf_list = {} interf_list['interfaces'] = i lists['connect_form'] = ConnectForm(equipment, interf_list['interfaces'], initial={ 'equip_name': equipment['nome'], 'equip_id': equipment['id']}) lists['equipment'] = equipment elif request.method == "POST": equip_id = request.POST['equip_id'] # Get equipment by name from NetworkAPI equipment = client.create_equipamento().listar_por_id( equip_id)['equipamento'] # Get interfaces related to equipment selected interf_list = client.create_interface().list_all_by_equip( equipment['id']) form = ConnectForm( equipment, interf_list['interfaces'], request.POST) if form.is_valid(): front = form.cleaned_data['front'] back = form.cleaned_data['back'] # Get interface to link interface_client = client.create_interface() interface = interface_client.get_by_id(id_interface) interface = interface.get("interface") if interface['protegida'] == "True": interface['protegida'] = 1 else: interface['protegida'] = 0 if len(front) > 0: # Get front interface selected inter_front = interface_client.get_by_id(front) inter_front = inter_front.get("interface") if inter_front['protegida'] == "True": inter_front['protegida'] = 1 else: inter_front['protegida'] = 0 related_list = client.create_interface().list_connections( inter_front["interface"], inter_front["equipamento"]) for i in related_list.get('interfaces'): if i['equipamento'] == interface['equipamento']: lists['connect_form'] = form lists['equipment'] = equipment raise Exception( 'Configuração inválida. Loop detectado nas ligações entre patch-panels') # Business Rules interface_client.alterar(inter_front['id'], inter_front['interface'], inter_front['protegida'], inter_front['descricao'], interface['id'], inter_front['ligacao_back'], inter_front['tipo'], inter_front['vlan']) if front_or_back == "0": interface_client.alterar(interface['id'], interface['interface'], interface['protegida'], interface['descricao'], interface['ligacao_front'], inter_front['id'], interface['tipo'], interface['vlan']) else: interface_client.alterar(interface['id'], interface['interface'], interface['protegida'], interface['descricao'], inter_front['id'], interface['ligacao_back'], interface['tipo'], interface['vlan']) else: # Get back interface selected inter_back = interface_client.get_by_id(back) inter_back = inter_back.get("interface") if inter_back['protegida'] == "True": inter_back['protegida'] = 1 else: inter_back['protegida'] = 0 related_list = client.create_interface().list_connections( inter_back["interface"], inter_back["equipamento"]) for i in related_list.get('interfaces'): if i['equipamento'] == interface['equipamento']: lists['connect_form'] = form lists['equipment'] = equipment raise Exception('Configuração inválida. Loop detectado nas ligações entre patch-panels') # Business Rules interface_client.alterar(inter_back['id'], inter_back['interface'], inter_back['protegida'], inter_back['descricao'], inter_back['ligacao_front'], interface['id'], inter_back['tipo'], inter_back['vlan']) if front_or_back == "0": interface_client.alterar(interface['id'], interface['interface'], interface['protegida'], interface['descricao'], interface['ligacao_front'], inter_back['id'], interface['tipo'], interface['vlan']) else: interface_client.alterar(interface['id'], interface['interface'], interface['protegida'], interface['descricao'], inter_back['id'], interface['ligacao_back'], interface['tipo'], interface['vlan']) messages.add_message( request, messages.SUCCESS, equip_interface_messages.get("success_connect")) url_param = reverse( "equip.interface.edit.form", args=[interface['equipamento_nome'], id_interface]) response = HttpResponseRedirect(url_param) response.status_code = 278 return response else: lists['connect_form'] = form lists['equipment'] = equipment except NetworkAPIClientError, e: logger.error(e) messages.add_message(request, messages.ERROR, e)
def logout(request): auth.logout(request) response = HttpResponseRedirect(reverse("core-signIn")) response.set_cookie(key='token', value='') response.status_code = 200 return response
def passSurvey(request): survey_url = request.GET.get('survey', None) try: survey = Survey.objects.get(url=survey_url) except: return redirect(reverse('main')) if request.is_ajax(): print(request.POST) change = request.POST.get('rating_change', None) if change is not None: data = { 'btn_change': '0', } if change == '1': try: survey.upped.get(username=request.user.username) except: survey.upped.add(request.user) data['btn_change'] = '1' survey.rating += 1 try: survey.downed.get(username=request.user.username) except: pass else: survey.downed.remove(request.user) survey.rating += 1 else: survey.upped.remove(request.user) survey.rating -= 1 survey.save() elif change == '-1': try: survey.downed.get(username=request.user.username) except: survey.downed.add(request.user) data['btn_change'] = '-1' survey.rating -= 1 try: survey.upped.get(username=request.user.username) except: pass else: survey.upped.remove(request.user) survey.rating -= 1 else: survey.downed.remove(request.user) survey.rating += 1 survey.save() data['count_like'] = survey.upped.count() data['count_dislike'] = survey.downed.count() return HttpResponse(json.dumps(data), content_type="application/json") elif (lock_change := request.POST.get('change_lock', None)) is not None: survey.isLocked = not survey.isLocked survey.save() data = { 'btn_change': '1', } if survey.isLocked: data['btn_change'] = '0' return HttpResponse(json.dumps(data), content_type="application/json") elif (id := request.POST.get('answered', None)) is not None: id = int(id) text = request.POST.get('text') if id == -1: comment = Commentary( survey=survey, text=text, user=User.objects.get(username=request.user.username)) comment.save() else: comment = Commentary( parentComment=Commentary.objects.get(id=id), text=text, user=User.objects.get(username=request.user.username)) if comment.parentComment.survey is None: comment.rootComment = comment.parentComment.rootComment else: comment.rootComment = comment.parentComment comment.save() response = HttpResponseRedirect( reverse('survey_pass') + f"?survey={survey_url}") response.status_code = 278 return response
def editSurvey(request): survey = request.GET.get('survey', None) try: survey = Survey.objects.get(url=survey) except: return redirect(reverse('main')) if survey.creator != None and survey.creator.username != request.user.username: return redirect(reverse('main')) if request.is_ajax(): data = {} if request.POST.get('delete', default=False) == 'true': print('Delete') survey.delete() response = HttpResponseRedirect(reverse('main')) response.status_code = 278 return response else: # <editor-fold desc="CHECKS"> checked = False title = request.POST.get('title') description = request.POST.get('description') linkAccess = request.POST.get('linkAccess') if linkAccess == 'true': linkAccess = True else: linkAccess = False if not check_string(title): messages.error(request, "Incorrect title") if not check_string(description): messages.error(request, "Incorrect description") questionFilled = True filled = True different = True questionDifferent = True stop = 0 enoughAnswers = True i = 0 while request.POST.get(f'question{i + 1}', default=None) != None: if not check_string(request.POST.get(f'question{i + 1}')): questionFilled = False for j in range(i): if request.POST.get( f'question{i + 1}') == request.POST.get( f'question{j + 1}'): questionDifferent = False break for j in range(10): if request.POST.get(f'answer{i + 1}_{j + 1}', default=None) != None: if not check_string( request.POST.get(f'answer{i + 1}_{j + 1}')): filled = False for k in range(j): if request.POST.get(f'answer{i + 1}_{j + 1}' ) == request.POST.get( f'answer{i + 1}_{k + 1}'): different = False break else: stop = j break if stop <= 1: enoughAnswers = False i += 1 if i == 0: messages.error(request, "Number of questions should be at least 1") if not questionDifferent: messages.error(request, "Questions should be different") if not questionFilled: messages.error(request, "Questions should not be empty") if not enoughAnswers: messages.error( request, "Number of answers for each question should be at least 2") if not different: messages.error( request, "Answers for each question should be different") if not filled: messages.error(request, "Answers should not be empty") if len(messages.get_messages(request)) == 0: checked = True # </editor-fold> data['success'] = True if checked: for question in SurveyQuestion.objects.filter(survey=survey): question.delete() for comment in Commentary.objects.filter(survey=survey): comment.delete() survey.rating = 0 survey.downed.clear() survey.upped.clear() survey.participants = 0 survey.save() i = 0 while request.POST.get(f'question{i + 1}', default=None) != None: surveyQuestion = SurveyQuestion( survey=survey, text=request.POST.get(f'question{i + 1}'), multipleChoice=( request.POST.get(f'multichoice{i + 1}') == 'true')) surveyQuestion.save() for j in range(10): if request.POST.get(f'answer{i + 1}_{j + 1}', default=None) != None: surveyAnswer = SurveyAnswer( surveyQuestion=surveyQuestion, text=request.POST.get( f'answer{i + 1}_{j + 1}')) surveyAnswer.save() else: break i += 1 if len(messages.get_messages(request)) == 0: messages.success(request, 'Check succeeded') # <editor-fold desc="SEND-MESSAGES"> sended_messages = [] for message in messages.get_messages(request): sended_messages.append({ "level": message.level, "message": message.message, "extra_tags": message.tags, }) data['messages'] = sended_messages # </editor-fold> return HttpResponse(json.dumps(data), content_type="application/json") questions = SurveyQuestion.objects.filter(survey=survey) answers = [] for i in range(len(questions)): objects = SurveyAnswer.objects.filter(surveyQuestion=questions[i]) answers.append(zip(objects, [j + 1 for j in range(objects.count())])) context = { 'survey': survey, } context['answers'] = zip(questions, answers, [i + 1 for i in range(len(questions))]) return render(request, 'surveyEditing.html', context)
def wrapped_contest_view(request, contestid=None, **kwargs): try: token_container.set_token(request.COOKIES.get(settings.SATORI_TOKEN_COOKIE_NAME, '')) except: token_container.set_token('') page_info = None try: if contestid is not None: try: page_info = Web.get_page_info(Contest(int(contestid))) except: page_info = Web.get_page_info() raise else: page_info = Web.get_page_info() page_info.url = urlquote(request.path) res = func(request, page_info, **kwargs) if request.COOKIES.get(settings.SATORI_TOKEN_COOKIE_NAME, '') != token_container.get_token(): res.set_cookie(settings.SATORI_TOKEN_COOKIE_NAME, token_container.get_token(), domain=settings.SATORI_TOKEN_COOKIE_DOMAIN, path=settings.SATORI_TOKEN_COOKIE_PATH, secure=settings.SATORI_TOKEN_COOKIE_SECURE or None, httponly=settings.SATORI_TOKEN_COOKIE_HTTPONLY or None) return res except (TokenInvalid, TokenExpired): res = HttpResponseRedirect(reverse('login')+'?redir='+urlquote(request.path)) res.set_cookie(settings.SATORI_TOKEN_COOKIE_NAME, '') return res except AccessDenied: if page_info and not page_info.role: return HttpResponseRedirect(reverse('login')+'?redir='+urlquote(request.path)) if request.method == 'POST': info = 'You don\'t have rights to perform the requested action.' else: info = 'You don\'t have rights to view the requested object.' res = render_to_response('error.html', { 'page_info' : page_info, 'message': 'Access denied', 'info': info }) res.status_code = 403 return res except ArgumentNotFound: res = render_to_response('error.html', { 'page_info' : page_info, 'message': 'Object not found', 'info': 'The requested object does not exist.' }) res.status_code = 404 return res except TTransportException: res = render_to_response('error.html', { 'page_info' : page_info, 'message': 'Server error', 'info': 'Communication with the core server failed.' }) res.status_code = 500 return res except Exception as e: traceback.print_exc() if settings.DEBUG: reporter = ExceptionReporter(request, *sys.exc_info()) detail = reporter.get_traceback_html() detail2 = [] in_style = False for line in detail.split('\n'): if line.startswith(' </style'): in_style = False if line == ' #summary { background: #ffc; }': line = ' #summary { background: #eee; }' if in_style: line = ' #content ' + line if line.startswith(' <style'): in_style = True detail2.append(line) detail = '\n'.join(detail2) else: detail = '' res = render_to_response('error.html', { 'page_info' : page_info, 'message': 'Internal server error', 'info': 'The server encountered an internal error.', 'detail': detail }) res.status_code = 500 return res
def wrapped_contest_view(request, contestid=None, **kwargs): try: token_container.set_token( request.COOKIES.get(settings.SATORI_TOKEN_COOKIE_NAME, '')) except: token_container.set_token('') page_info = None try: if contestid is not None: try: page_info = Web.get_page_info(Contest(int(contestid))) except: page_info = Web.get_page_info() raise else: page_info = Web.get_page_info() page_info.url = urlquote(request.path) res = func(request, page_info, **kwargs) if request.COOKIES.get(settings.SATORI_TOKEN_COOKIE_NAME, '') != token_container.get_token(): res.set_cookie(settings.SATORI_TOKEN_COOKIE_NAME, token_container.get_token(), domain=settings.SATORI_TOKEN_COOKIE_DOMAIN, path=settings.SATORI_TOKEN_COOKIE_PATH, secure=settings.SATORI_TOKEN_COOKIE_SECURE or None, httponly=settings.SATORI_TOKEN_COOKIE_HTTPONLY or None) return res except (TokenInvalid, TokenExpired): res = HttpResponseRedirect( reverse('login') + '?redir=' + urlquote(request.path)) res.set_cookie(settings.SATORI_TOKEN_COOKIE_NAME, '') return res except AccessDenied: if page_info and not page_info.role: return HttpResponseRedirect( reverse('login') + '?redir=' + urlquote(request.path)) if request.method == 'POST': info = 'You don\'t have rights to perform the requested action.' else: info = 'You don\'t have rights to view the requested object.' res = render_to_response('error.html', { 'page_info': page_info, 'message': 'Access denied', 'info': info }) res.status_code = 403 return res except ArgumentNotFound: res = render_to_response( 'error.html', { 'page_info': page_info, 'message': 'Object not found', 'info': 'The requested object does not exist.' }) res.status_code = 404 return res except TTransportException: res = render_to_response( 'error.html', { 'page_info': page_info, 'message': 'Server error', 'info': 'Communication with the core server failed.' }) res.status_code = 500 return res except Exception as e: traceback.print_exc() if settings.DEBUG: reporter = ExceptionReporter(request, *sys.exc_info()) detail = reporter.get_traceback_html() detail2 = [] in_style = False for line in detail.split('\n'): if line.startswith(' </style'): in_style = False if line == ' #summary { background: #ffc; }': line = ' #summary { background: #eee; }' if in_style: line = ' #content ' + line if line.startswith(' <style'): in_style = True detail2.append(line) detail = '\n'.join(detail2) else: detail = '' res = render_to_response( 'error.html', { 'page_info': page_info, 'message': 'Internal server error', 'info': 'The server encountered an internal error.', 'detail': detail }) res.status_code = 500 return res