Example #1
0
 def export_subscriptions(self, request):
     subscriptions = self.model.objects.all()
     rows = [",".join([s.name, s.email]) for s in subscriptions]
     response = HttpResponse("\r\n".join(rows))
     response.mimetype = "text/csv"
     response["Content‐Disposition"] = "attachment; filename=inscricoes.csv"
     return response
Example #2
0
    def __call__(
        self,
        request,
        *args,
        **kwargs
        ):
        """
        Redirects to one of the CRUD methods depending 
        on the HTTP method of the request. Checks whether
        the requested method is allowed for this resource.
        """

        # Check permission

        if not self.authentication.is_authenticated(request):
            response = HttpResponse(_('Authorization Required'),
                                    mimetype=self.mimetype)
            challenge_headers = self.authentication.challenge_headers()
            for (k, v) in challenge_headers.items():
                response[k] = v
            response.status_code = 401
            return response

        try:
            return self.dispatch(request, self, *args, **kwargs)
        except HttpMethodNotAllowed:
            response = HttpResponseNotAllowed(self.permitted_methods)
            response.mimetype = self.mimetype
            return response
Example #3
0
 def export_subscriptions(self, request):
     subscriptions = self.model.objects.all()
     rows = [','.join([s.name, s.email]) for s in subscriptions]
     response = HttpResponse('\r\n'.join(rows))
     response.mimetype = "text/csv"
     #response['Content-Disposition'] = 'attachment; filename=inscricoes.csv'
     return response
Example #4
0
 def export_subscriptions(self, request):
     """Metodo usado para exportar inscricoes, deve ser registrado no get_urls"""
     subscriptions = self.model.objects.all()
     rows = [','.join([s.name, s.email]) for s in subscriptions]
     response = HttpResponse('\r\n'.join(rows))
     response.mimetype = "text/csv"
     response['content-Disposition'] = 'atachement; filename=inscricoes.csv'
     return response
Example #5
0
    def export_subscriptions(self, request):
        subscriptions = self.model.objects.all()
        rows = [','.join([s.name, s.email]) for s in subscriptions]

        response = HttpResponse('\r\n'.join(rows))
        response.mimetype = "text/csv"
        response['Content-Disposition'] = 'attachment; filename=inscricoes.csv'
        return response
Example #6
0
 def export_subscriptions(self, request):
     '''
     View para exportar inscritos em arquivo formato csv
     '''
     subscriptions = self.model.objects.all()
     
     # list comprehension para contenar nome com email, separados por (,)
     rows = [','.join([s.name, (s.email or s.phone)]) for s in subscriptions] 
     
     # prepara o response com mimetype
     response = HttpResponse('\r\n'.join(rows))
     response.mimetype = 'text/csv'
     response['Content-Disposition'] = 'attachment; filename=inscricoes.csv'
     
     return response
def getScatterdata(request):
    year_ = datetime.datetime.now().year
    record_data = Land_record.objects.all()
    dictionary_data = [x for x in record_data.values()]
    frame = change_panda(dictionary_data)
    start = datetime.date(year_, 1, 1)
    end = datetime.date(year_, 12, 31)
    frame = frame[(frame.index >= start) & (frame.index <= end)]

    fig = Figure()
    axis = fig.add_subplot(1, 1, 1)
    frame.payment_remaining = frame.payment_remaining.apply(lambda x: 200
                                                            if x else 600)
    color = [x for x in frame.payment_remaining]
    axis.scatter(frame.index,
                 frame.total_price,
                 s=frame.payment_remaining,
                 c=color,
                 cmap="RdYlGn",
                 alpha=0.8)
    data_set = set(zip(frame.index, frame.total_price))
    data_counts = frame.index.value_counts().to_dict()
    for xy in data_set:
        axis.annotate(data_counts[xy[0]],
                      xy=xy,
                      fontsize=15,
                      color="black",
                      va="bottom",
                      ha="center")
    for tick in axis.get_xticklabels():
        tick.set_rotation(90)
    axis.xaxis.set_major_formatter(mpl.dates.DateFormatter('%b-%d'))
    fig.autofmt_xdate()
    axis.set_xlabel("Dates " + str(year_))
    axis.set_ylabel("Remaining Payment Amounts")
    axis.set_title("Payment History Of Landload " + str(year_))
    axis.tick_params(axis='x', colors='green')
    axis.tick_params(axis='y', colors='green')
    axis.legend([Circle(
        (0, 0), fc='r'), Circle((0, 0), fc='g')],
                ["Payment Remaining", "Payment Done"],
                loc='upper right')
    canvas = FigureCanvas(fig)
    output = io.BytesIO()
    canvas.print_png(output)
    response = HttpResponse(output.getvalue())
    response.mimetype = "img/png"
    return response
Example #8
0
def export(request):
    if request.method == "GET":
        filename = u"主机硬件信息"
        filename = filename.encode('gbk')
        response = HttpResponse()
        response['Content-Disposition'] = 'attachment; filename=' + filename + '.csv'  
        response.mimetype = 'text/csv'
        
        # 直接拼装一个csv字符串
        # 行中以","分隔, 每行以"\n" 分隔
        res = []
        line1 = []
        # machine
        line1.extend([u'生产厂商', u'型号', u'序列号'])
        # os
        line1.extend([u'OS类型', u'OS位数', u'OS版本'])
        # ip
        line1.extend([u'管理IP', u'内网IP', u'外网IP',u'是否Bond',u'DNS服务器'])
        # cpu
        line1.extend([u'生产厂商', u'型号', u'内核数',u'数量'])
        # mem
        line1.extend([u'生产厂商', u'型号', u'容量(G)',u'数量'])
        
        res.append(','.join(line1))
        
        item_list = export_hardware_info()
        for item in item_list:
            temp = []
            temp.extend([item.machine_mf, item.machine_model, item.machine_sn])
            temp.extend([item.os_type, item.os_bit, item.os_version])
            temp.extend([item.manage_ip, item.private_ip, item.public_ip, str(item.is_bond), item.nameserver])
            
            temp.extend([item.processor_mf, item.processor_model,
                item.processor_cores, item.processor_number])
            
            mem_info = item.mem_list[0]
            
            temp.extend([mem_info.mem_mf, mem_info.mem_model,
                str(float(mem_info.mem_size)/1024), mem_info.mem_number])
            
            res.append(','.join(temp))
        
        content = '\n'.join(res)
        response.content = content.encode('gbk')
        
        return response
    else:
        return  HttpResponseBadRequest(u"错误请求")
Example #9
0
 def __call__(self, request, *args, **kwargs):
     """
     Redirects to one of the CRUD methods depending 
     on the HTTP method of the request. Checks whether
     the requested method is allowed for this resource.
     """
     # Check permission
     if not self.authentication.is_authenticated(request):
         response = HttpResponse(_('Authorization Required'), mimetype=self.mimetype)
         challenge_headers = self.authentication.challenge_headers()
         response._headers.update(challenge_headers)
         response.status_code = 401
         return response
     
     try:
         return self.dispatch(request, self, *args, **kwargs)
     except HttpMethodNotAllowed:
         response = HttpResponseNotAllowed(self.permitted_methods)
         response.mimetype = self.mimetype
         return response
def getHistdata(request):
    record_data = Land_record.objects.all()

    dictionary_data = [x for x in record_data.values()]
    frame = change_panda(dictionary_data)
    date_frame = frame.index.value_counts().sort_index()
    year_ = datetime.datetime.now().year
    date = []
    range_ = []
    for info in date_frame.iteritems():
        if info[0].year == year_:
            date.append(info[0])
            range_.append(info[1])
    fig = Figure()
    print(date)
    axis = fig.add_subplot(1, 1, 1)
    axis.plot(date, range_)
    #axis.xaxis.set_ticks(frame.index)
    axis.xaxis.set_major_formatter(mpl.dates.DateFormatter('%b-%d'))
    for tick in axis.get_xticklabels():
        tick.set_rotation(90)
    x_lab = "Dates For " + str(year_)
    title = "User's Use history " + str(year_)
    axis.set_xlabel(x_lab)
    axis.set_ylabel("Number Of Users")
    axis.set_title(title)
    fig.autofmt_xdate()
    axis.tick_params(axis='x', colors='green')
    axis.tick_params(axis='y', colors='green')
    canvas = FigureCanvas(fig)
    output = io.BytesIO()
    canvas.print_png(output)

    response = HttpResponse(output.getvalue())
    response.mimetype = "img/png"
    return response
Example #11
0
def ajax_popup(request, popup_id='', url='/'):
    "Handles pop up forms and requests, by extracting only the required content from response content"
    
    view, args, kwargs = resolve(url)
    
    if not request.user.username:
        return HttpResponseRedirect('/accounts/login')
    
    modules = Module.objects.all()
    active = None
    for module in modules:
        try:
            import_name = module.name + "." + settings.HARDTREE_MODULE_IDENTIFIER
            hmodule = __import__(import_name, fromlist=[str(module.name)])
            urls = hmodule.URL_PATTERNS
            for regexp in urls:
                if re.match(regexp, url):
                    active = module
        except ImportError:
            pass
        except AttributeError:
            pass
    
    response = None
    if active:
        if not request.user.get_profile().has_permission(active):
            response = user_denied(request, "You do not have access to the %s module" % unicode(active), 
                                   response_format='ajax')
    
    if not response:
        if view == ajax_popup:
            raise Http404("OMG, I see myself!")
        
        kwargs['request'] = request
        kwargs['response_format'] = 'ajax'
        response = view(*args, **kwargs)
            
        response = csrf().process_response(request, response)
    
    module_inner = ""
    regexp = r"<!-- module_content_inner -->(?P<module_inner>.*?)<!-- /module_content_inner -->"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        module_inner += block.group('module_inner').strip()
    
    title = ""
    regexp = r"<div class=\\\"title\\\">(?P<title>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        title += block.group('title').replace('\\n', '').strip()
    if not title:
        blocks = re.finditer(r"<title>(?P<title>.*?)</title>", response.content, re.DOTALL)
        for block in blocks:
            title += block.group('title').replace('\\n', '').strip()
    
    subtitle = ""
    regexp = r"<div class=\\\"subtitle-block\\\">(?P<subtitle>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        subtitle += block.group('subtitle').replace('\\n', '').strip()
    
    context = {'content': module_inner,
               'title': title,
               'subtitle': subtitle}
        
    context['popup_id'] = popup_id
    context['url']      = request.path

    if settings.HARDTREE_RESPONSE_FORMATS['json'] in response.get('Content-Type', 'text/html'):
        new_response = render_to_response('core/ajax_popup', context,
                                          context_instance=RequestContext(request), response_format='json')
    else:
        new_response = HttpResponse(json.dumps({'popup': context}))

    new_response.mimetype = settings.HARDTREE_RESPONSE_FORMATS['json']
    try:
        jsonresponse = json.loads(response.content)
        if 'redirect' in jsonresponse:
            new_response.status_code = 302
    except Exception:
        new_response.status_code = response.status_code
    
    
    return new_response
def dataset_view(request, siloname, id):
    if not granary.issilo(siloname):
        raise Http404
    
    rdfsilo = granary.get_rdf_silo(siloname)
    if not rdfsilo.exists(id):
        raise Http404
            
    c = Context()
    silo = siloname
    #tmpl_context variables needed: c.silo_name, c.zipfiles, c.ident, c.id, c.path
    c.silo_name = siloname
    c.id = id
    ident = request.user
    c.ident = ident.username
    dataset = rdfsilo.get_item(id)

    creator = None
    if dataset.manifest and dataset.manifest.state and 'metadata' in dataset.manifest.state and dataset.manifest.state['metadata'] and \
                                   'createdby' in dataset.manifest.state['metadata'] and dataset.manifest.state['metadata']['createdby']:
        creator = dataset.manifest.state['metadata']['createdby']

    http_method = request.method
        
    if http_method == "GET":
        c.editor = False
        if settings.METADATA_EMBARGOED:
            if not ident:
                return HttpResponse("Not Authorised", status=401)
            silos = authz(ident)
            if silo not in silos:
                return HttpResponseForbidden("Forbidden")
            silos_admin = authz(ident, permission='administrator')
            silos_manager = authz(ident, permission='manager')
            if c.ident == creator or silo in silos_admin or silo in silos_manager:
                c.editor = True
        elif ident:
            silos = authz(ident)
            if silo in silos:
                silos_admin = authz(ident, permission='administrator')
                silos_manager = authz(ident, permission='manager')
                if ident['repoze.who.userid'] == creator or silo in silos_admin or silo in silos_manager:
                    c.editor = True
    else:
        #identity management of item 
        if not ident:
            return HttpResponse("Not Authorised", status=401)
        silos = authz(ident)      
        if silo not in silos:
            return HttpResponseForbidden("Forbidden")
        silos_admin = authz(ident, permission='administrator')
        silos_manager = authz(ident, permission='manager')
        if not (c.ident == creator or silo in silos_admin or silo in silos_manager):
            return HttpResponseForbidden("Forbidden")

    if http_method == "GET":
        c.zipfiles = get_zipfiles_in_dataset(dataset)
        # conneg return
        accept_list = None
        if 'HTTP_ACCEPT' in request.META:
            try:
                accept_list = conneg_parse(request.META['HTTP_ACCEPT'])
            except:
                accept_list= [MT("text", "html")]
        if not accept_list:
            accept_list= [MT("text", "html")]
        mimetype = accept_list.pop(0)
        while(mimetype):
            if str(mimetype).lower() in ["text/html", "text/xhtml"]:
                return render_to_response("/list_of_zipfiles.html", {'c':c,})
            elif str(mimetype).lower() in ["text/plain", "application/json"]:
                return HttpResponse(json.dumps(list(c.zipfiles.keys())), 
                                    mimetype = 'application/json; charset="UTF-8"')
            try:
                mimetype = accept_list.pop(0)
            except IndexError:
                mimetype = None
        #Whoops nothing satisfies - return text/html            
        return render_to_response("/list_of_zipfiles.html", {'c':c,})
    elif http_method == "POST":
        params = request.POST
        if not (params.has_key("filename") and params['filename']):
            return HttpResponse("You must supply a filename to unpack", status=400)

        item_real_filepath = dataset.to_dirpath()
        target_filepath = "%s/%s"%(item_real_filepath, params['filename'])
        if not os.path.isfile(target_filepath):
            return HttpResponse("File to unpack not found", status=404)
        if not check_file_mimetype(target_filepath, 'application/zip'):
            return HttpResponse("File is not of type application/zip", status=415)

        if params.has_key("id") and params['id']:
            target_dataset_name = params['id']
        else:
            target_dataset_name = id

        #step 1: Create / initialize target dataset 
        if not rdfsilo.exists(target_dataset_name):
            if not allowable_id2(target_dataset_name):
                return HttpResponse("Data package name can contain only the following characters - %s and has to be more than 1 character"%ag.naming_rule_humanized,
                                    status=400,
                                    mimetype="text/plain")
            target_dataset = create_new(rdfsilo, target_dataset_name, c.ident)
            hr = HttpResponse("Created",
                                status=201,
                                mimetype="text/plain")
            hr["Content-Location"] = reverse("dataset_view", kwargs={'siloname': siloname, 'id': target_dataset_name})
        else:
            hr = HttpResponse("204 Updated",
                                status=204,
                                mimetype="text/plain")
            target_dataset = rdfsilo.get_item(target_dataset_name)

        #step 2: Unpack zip item 
            
        try:
            unpack_zip_item(target_dataset, dataset, params['filename'], rdfsilo, c.ident)
        except BadZipfile:
            return HttpResponse("BadZipfile: Couldn't unpack zipfile", status=400, mimetype="text/plain")

        # FIXME: err.. wat is this?!
        target_dataset.sync()
        target_dataset.sync()
        target_dataset.sync()

        if hr.status == 201:
            try:
                b.creation(silo, id, ident=c.ident)
            except:
                pass
        else:
            try:
                b.change(silo, id, ident=c.ident)
            except:
                pass

        # conneg return
        accept_list = None
        if 'HTTP_ACCEPT' in request.META:
            try:
                accept_list = conneg_parse(request.META['HTTP_ACCEPT'])
            except:
                accept_list= [MT("text", "html")]
        if not accept_list:
            accept_list= [MT("text", "html")]
        mimetype = accept_list.pop(0)
        while(mimetype):
            if str(mimetype).lower() in ["text/html", "text/xhtml"]:
                return redirect(reverse("dataset_view", kwargs={'silo': silo, 'id': id}))
            elif str(mimetype).lower() in ["text/plain", "application/json"]:
                hr.mimetype = "text/plain"
                return hr
            try:
                mimetype = accept_list.pop(0)
            except IndexError:
                mimetype = None
        # Whoops - nothing satisfies - return text/plain
        hr.mimetype = "text/plain"
        return hr
Example #13
0
def ajax_popup(request, popup_id='', url='/'):
    "Handles pop up forms and requests, by extracting only the required content from response content"

    view, args, kwargs = resolve(url)

    if not request.user.username:
        return HttpResponseRedirect('/accounts/login')

    modules = Module.objects.all()
    active = None
    for module in modules:
        try:
            import_name = module.name + "." + \
                          settings.ANAF_MODULE_IDENTIFIER
            hmodule = __import__(import_name, fromlist=[str(module.name)])
            urls = hmodule.URL_PATTERNS
            for regexp in urls:
                if re.match(regexp, url):
                    active = module
        except ImportError:
            pass
        except AttributeError:
            pass

    response = None
    if active and not request.user.profile.has_permission(active):
        response = user_denied(request, "You do not have access to the {0!s} module".format(unicode(active)),
                               response_format='ajax')

    if not response:
        if view == ajax_popup:
            raise Http404("OMG, I see myself!")

        kwargs['request'] = request
        kwargs['response_format'] = 'ajax'
        response = view(*args, **kwargs)

        # response = csrf().process_response(request, response)

    module_inner = ""
    regexp = r"<!-- module_content_inner -->(?P<module_inner>.*?)<!-- /module_content_inner -->"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        module_inner += block.group('module_inner').strip()

    title = ""
    regexp = r"<div class=\\\"title\\\">(?P<title>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        title += block.group('title').replace('\\n', '').strip()
    if not title:
        blocks = re.finditer(
            r"<title>(?P<title>.*?)</title>", response.content, re.DOTALL)
        for block in blocks:
            title += block.group('title').replace('\\n', '').strip()

    subtitle = ""
    regexp = r"<div class=\\\"subtitle-block\\\">(?P<subtitle>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        subtitle += block.group('subtitle').replace('\\n', '').strip()

    context = {'content': module_inner, 'title': title, 'subtitle': subtitle, 'popup_id': popup_id, 'url': request.path}

    if settings.ANAF_RESPONSE_FORMATS['json'] in response.get('Content-Type', 'text/html'):
        new_response = render_to_response('core/ajax_popup', context,
                                          context_instance=RequestContext(request), response_format='json')
    else:
        new_response = HttpResponse(json.dumps({'popup': context}))

    new_response.mimetype = settings.ANAF_RESPONSE_FORMATS['json']
    try:
        jsonresponse = json.loads(response.content)
        if 'redirect' in jsonresponse:
            new_response.status_code = 302
    except Exception:
        new_response.status_code = response.status_code

    return new_response
Example #14
0
def dataset_view(request, siloname, id):
    if not granary.issilo(siloname):
        raise Http404

    rdfsilo = granary.get_rdf_silo(siloname)
    if not rdfsilo.exists(id):
        raise Http404

    c = Context()
    silo = siloname
    #tmpl_context variables needed: c.silo_name, c.zipfiles, c.ident, c.id, c.path
    c.silo_name = siloname
    c.id = id
    ident = request.user
    c.ident = ident.username
    dataset = rdfsilo.get_item(id)

    creator = None
    if dataset.manifest and dataset.manifest.state and 'metadata' in dataset.manifest.state and dataset.manifest.state['metadata'] and \
                                   'createdby' in dataset.manifest.state['metadata'] and dataset.manifest.state['metadata']['createdby']:
        creator = dataset.manifest.state['metadata']['createdby']

    http_method = request.method

    if http_method == "GET":
        c.editor = False
        if settings.METADATA_EMBARGOED:
            if not ident:
                return HttpResponse("Not Authorised", status=401)
            silos = authz(ident)
            if silo not in silos:
                return HttpResponseForbidden("Forbidden")
            silos_admin = authz(ident, permission='administrator')
            silos_manager = authz(ident, permission='manager')
            if c.ident == creator or silo in silos_admin or silo in silos_manager:
                c.editor = True
        elif ident:
            silos = authz(ident)
            if silo in silos:
                silos_admin = authz(ident, permission='administrator')
                silos_manager = authz(ident, permission='manager')
                if ident[
                        'repoze.who.userid'] == creator or silo in silos_admin or silo in silos_manager:
                    c.editor = True
    else:
        #identity management of item
        if not ident:
            return HttpResponse("Not Authorised", status=401)
        silos = authz(ident)
        if silo not in silos:
            return HttpResponseForbidden("Forbidden")
        silos_admin = authz(ident, permission='administrator')
        silos_manager = authz(ident, permission='manager')
        if not (c.ident == creator or silo in silos_admin
                or silo in silos_manager):
            return HttpResponseForbidden("Forbidden")

    if http_method == "GET":
        c.zipfiles = get_zipfiles_in_dataset(dataset)
        # conneg return
        accept_list = None
        if 'HTTP_ACCEPT' in request.META:
            try:
                accept_list = conneg_parse(request.META['HTTP_ACCEPT'])
            except:
                accept_list = [MT("text", "html")]
        if not accept_list:
            accept_list = [MT("text", "html")]
        mimetype = accept_list.pop(0)
        while (mimetype):
            if str(mimetype).lower() in ["text/html", "text/xhtml"]:
                return render_to_response("/list_of_zipfiles.html", {
                    'c': c,
                })
            elif str(mimetype).lower() in ["text/plain", "application/json"]:
                return HttpResponse(
                    json.dumps(list(c.zipfiles.keys())),
                    mimetype='application/json; charset="UTF-8"')
            try:
                mimetype = accept_list.pop(0)
            except IndexError:
                mimetype = None
        #Whoops nothing satisfies - return text/html
        return render_to_response("/list_of_zipfiles.html", {
            'c': c,
        })
    elif http_method == "POST":
        params = request.POST
        if not (params.has_key("filename") and params['filename']):
            return HttpResponse("You must supply a filename to unpack",
                                status=400)

        item_real_filepath = dataset.to_dirpath()
        target_filepath = "%s/%s" % (item_real_filepath, params['filename'])
        if not os.path.isfile(target_filepath):
            return HttpResponse("File to unpack not found", status=404)
        if not check_file_mimetype(target_filepath, 'application/zip'):
            return HttpResponse("File is not of type application/zip",
                                status=415)

        if params.has_key("id") and params['id']:
            target_dataset_name = params['id']
        else:
            target_dataset_name = id

        #step 1: Create / initialize target dataset
        if not rdfsilo.exists(target_dataset_name):
            if not allowable_id2(target_dataset_name):
                return HttpResponse(
                    "Data package name can contain only the following characters - %s and has to be more than 1 character"
                    % ag.naming_rule_humanized,
                    status=400,
                    mimetype="text/plain")
            target_dataset = create_new(rdfsilo, target_dataset_name, c.ident)
            hr = HttpResponse("Created", status=201, mimetype="text/plain")
            hr["Content-Location"] = reverse("dataset_view",
                                             kwargs={
                                                 'siloname': siloname,
                                                 'id': target_dataset_name
                                             })
        else:
            hr = HttpResponse("204 Updated", status=204, mimetype="text/plain")
            target_dataset = rdfsilo.get_item(target_dataset_name)

        #step 2: Unpack zip item

        try:
            unpack_zip_item(target_dataset, dataset, params['filename'],
                            rdfsilo, c.ident)
        except BadZipfile:
            return HttpResponse("BadZipfile: Couldn't unpack zipfile",
                                status=400,
                                mimetype="text/plain")

        # FIXME: err.. wat is this?!
        target_dataset.sync()
        target_dataset.sync()
        target_dataset.sync()

        if hr.status == 201:
            try:
                b.creation(silo, id, ident=c.ident)
            except:
                pass
        else:
            try:
                b.change(silo, id, ident=c.ident)
            except:
                pass

        # conneg return
        accept_list = None
        if 'HTTP_ACCEPT' in request.META:
            try:
                accept_list = conneg_parse(request.META['HTTP_ACCEPT'])
            except:
                accept_list = [MT("text", "html")]
        if not accept_list:
            accept_list = [MT("text", "html")]
        mimetype = accept_list.pop(0)
        while (mimetype):
            if str(mimetype).lower() in ["text/html", "text/xhtml"]:
                return redirect(
                    reverse("dataset_view", kwargs={
                        'silo': silo,
                        'id': id
                    }))
            elif str(mimetype).lower() in ["text/plain", "application/json"]:
                hr.mimetype = "text/plain"
                return hr
            try:
                mimetype = accept_list.pop(0)
            except IndexError:
                mimetype = None
        # Whoops - nothing satisfies - return text/plain
        hr.mimetype = "text/plain"
        return hr