Пример #1
0
    def update(self, request, vendor, name, version, user_name=None):
        user = user_authentication(request, user_name)
        gadget = get_object_or_404(Gadget, users=user, vendor=vendor, name=name, version=version)
        xhtml = gadget.xhtml

        try:
            url = xhtml.url
            if (url.startswith('http')):
                #Absolute URL
                xhtml.code = download_http_content(url, user=user)
            else:
                #Relative URL
                if (url.startswith('/deployment/gadgets')):
                    #GWT gadget package
                    xhtml.code = get_xhtml_content(url)
                else:
                    #Gadget with relative url and it's not a GWT package
                    url = gadget.get_resource_url(url, request)
                    xhtml.code = download_http_content(url, user=user)

            xhtml.save()
        except Exception, e:
            msg = _("XHTML code is not accessible")

            raise TracedServerError(e, {'vendor': vendor, 'name': name, 'version': version}, request, msg)
Пример #2
0
    def read(self, request, vendor, name, version, user_name=None):
        #user = user_authentication(request, user_name)
        gadget = get_object_or_404(Gadget, vendor=vendor, name=name, version=version)
        xhtml = get_object_or_404(gadget.xhtml, id=gadget.xhtml.id)

        content_type = gadget.xhtml.content_type
        if not content_type:
            content_type = 'text/html'

        if not xhtml.cacheable:
            try:
                if xhtml.url.startswith('/deployment/gadgets/'):
                    xhtml.code = get_xhtml_content(xhtml.url)
                else:
                    xhtml.code = download_http_content(gadget.get_resource_url(xhtml.url, request),
                                                       user=request.user)
                xhtml.save()
            except Exception, e:
                # FIXME: Send the error or use the cached original code?
                msg = _("XHTML code is not accessible")
Пример #3
0
    def read(self, request, vendor, name, version, user_name=None):
        user = user_authentication(request, user_name)
        gadget = get_object_or_404(Gadget, vendor=vendor, name=name, version=version, users__id=user.id)
        xhtml = gadget.xhtml

        content_type = xhtml.content_type
        if not content_type:
            content_type = 'text/html'

        code = xhtml.code
        if not xhtml.cacheable or code == '':
            try:
                if xhtml.url.startswith('/deployment/gadgets/'):
                    code = get_xhtml_content(xhtml.url)
                    code = includeTagBase(code, xhtml.url, request)
                else:
                    code = download_http_content(gadget.get_resource_url(xhtml.url, request), user=request.user)
                code = fix_ezweb_scripts(code, request)
            except Exception, e:
                # FIXME: Send the error or use the cached original code?
                msg = _("XHTML code is not accessible: %(errorMsg)s") % {'errorMsg': e.message}
                return HttpResponse(get_xml_error(msg), mimetype='application/xml; charset=UTF-8')
Пример #4
0
def update_gadget_script(request, fromWGT=False, user_action=True):
    """ Page for adding gadgets to catalogue without loading EzWeb """
    if (request.user.is_authenticated() and not request.user.username.startswith('anonymous')):
        if ('gadget_vendor' in request.REQUEST and 'gadget_name' in request.REQUEST and 'gadget_version' in  request.REQUEST):
            vendor = request.REQUEST['gadget_vendor']
            name = request.REQUEST['gadget_name']
            version = request.REQUEST['gadget_version']
        else:
            #Send pingback ERROR
            send_pingback(request, {'result_code': -3, 'result_message': _('Invalid params for gadget update! (gadget_vendor, gadget_name, gadget_version)')})

            #template_uri not specified!
            t = loader.get_template('catalogue_adder.html')
            c = Context({'msg': _('Invalid params for gadget update! (gadget_vendor, gadget_name, gadget_version)')})
            return HttpResponseBadRequest(t.render(c), mimetype="application/xhtml+xml")

        gadget_info = {'vendor': vendor, 'gadgetName': name, 'version': version}  # For ping_back

        #Cancel by the user
        if 'pingback_cancel' in request.REQUEST and (request.REQUEST['pingback_cancel'] == 'true'):
            if 'pingback' in request.REQUEST:
                #Send pingback CANCEL
                gadget_info['result_code'] = 1
                gadget_info['result_message'] = _('Cancel by the user')
                send_pingback(request, gadget_info)
            #Redirect
            return HttpResponseRedirect('/')

        try:
            resource = GadgetResource.objects.get(short_name=name, vendor=vendor, version=version)
            gadget_info['gadgetId'] = resource.id
        except Exception:
            #Send pingback ERROR
            gadget_info['result_code'] = -3
            gadget_info['result_message'] = _('Invalid gadget info! Please, specify a valid one!')
            send_pingback(request, gadget_info)

            #Error parsing the template
            t = loader.get_template('catalogue_adder.html')
            c = Context({'msg': _('Invalid gadget info! Please, specify a valid one!')})
            return HttpResponseBadRequest(t.render(c), mimetype="application/xhtml+xml")

        gadget = None
        try:
            gadget = Gadget.objects.get(name=name, vendor=vendor, version=version)
        except Exception:
            pass

        try:
            if gadget != None:
                xhtml = XHTML.objects.get(id=gadget.xhtml.id)

                content_type = gadget.xhtml.content_type
                if not content_type:
                    content_type = 'text/html'

                #if not xhtml.cacheable:
                if (not xhtml.url.startswith('http') and not xhtml.url.startswith('https')):
                    xhtml.code = get_xhtml_content(xhtml.url)
                else:
                    xhtml.code = download_http_content(xhtml.url, user=request.user)
                xhtml.save()
        except Exception:
            #Send pingback ERROR
            gadget_info['result_code'] = -3
            gadget_info['result_message'] = _('XHTML code is not accessible!')
            send_pingback(request, gadget_info)

            #Error parsing the template
            t = loader.get_template('catalogue_adder.html')
            c = Context({'msg': _('XHTML code is not accessible!')})
            return HttpResponseBadRequest(t.render(c), mimetype="application/xhtml+xml")

        #Send pingback OK
        gadget_info['result_code'] = 0
        gadget_info['result_message'] = _('Success')
        send_pingback(request, gadget_info)

        # Gadget updated!
        t = loader.get_template('catalogue_adder.html')
        c = Context({'msg': _('Gadget updated correctly!')})
        return HttpResponse(t.render(c), mimetype="application/xhtml+xml")

    else:
        #Not authenticated or anonymous user => redirecting to login!
        params = {'next': request.META['QUERY_STRING']}

        if 'pingback' in request.REQUEST:
            params['pingback'] = request.REQUEST['pingback']

        return render_to_response('catalogue_adder_login.html', params, context_instance=RequestContext(request))