Ejemplo n.º 1
0
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)})
Ejemplo n.º 2
0
def redirect(name: str) -> HttpResponse:

    url = reverse(name)
    response = HttpResponseRedirect(url)
    response.status_code = status.HTTP_303_SEE_OTHER

    return response
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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')
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
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 _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)
Ejemplo n.º 15
0
 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
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
    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
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
 def get_response(self, request, redirectnode, **kwargs):
     response = HttpResponseRedirect(redirectnode.new_url)
     response.status_code = redirectnode.redirect_type
     return response
Ejemplo n.º 21
0
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))
Ejemplo n.º 22
0
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
Ejemplo n.º 23
0
    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 get_response(self, request, redirectnode, **kwargs):
     response = HttpResponseRedirect(redirectnode.new_url)
     response.status_code = redirectnode.redirect_type
     return response
Ejemplo n.º 25
0
def redirect(request, e):
    response = HttpResponseRedirect(reverse("auctions:index"))
    response.status_code = 404
    return response
Ejemplo n.º 26
0
                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)
Ejemplo n.º 27
0
	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
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
 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
Ejemplo n.º 30
0
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)
Ejemplo n.º 31
0
def logout(request):
    auth.logout(request)
    response = HttpResponseRedirect(reverse("core-signIn"))
    response.set_cookie(key='token', value='')
    response.status_code = 200
    return response
Ejemplo n.º 32
0
                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)
Ejemplo n.º 33
0
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
Ejemplo n.º 34
0
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)
Ejemplo n.º 35
0
 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
Ejemplo n.º 36
0
 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