Ejemplo n.º 1
0
def hits_stats(request, id, channel_type=None):
    """ hits stats for chart datastreams """

    try:
        ds = DataStream.objects.get(pk=int(id))
    except Visualization.DoesNotExist:
        raise Http404

    dao = DatastreamHitsDAO(ds)
    hits = dao.count_by_days(30, channel_type)
    field_names = [unicode(ugettext_lazy("REPORT-CHART-DATE")), unicode(ugettext_lazy("REPORT-CHART-TOTAL_HITS"))]
    t = loader.get_template("datastream_manager/hits_stats.json")
    c = Context({"data": list(hits), "field_names": field_names, "request": request, "cache": dao.from_cache})
    return HttpResponse(t.render(c), content_type="application/json")
Ejemplo n.º 2
0
Archivo: views.py Proyecto: Junar/datal
def hits_stats(request, id, channel_type=None):
    """ hits stats for chart datastreams """

    try:
        datastream = DataStream.objects.get(pk=int(id))
    except DataStream.DoesNotExist:
        raise DataStreamDoesNotExist

    hits_dao = DatastreamHitsDAO(datastream)
    hits = hits_dao.count_by_days(30, channel_type)
    field_names = [unicode(ugettext_lazy('REPORT-CHART-DATE')),unicode(ugettext_lazy('REPORT-CHART-TOTAL_HITS'))]
    t = loader.get_template('viewDataStream/hits_stats.json')
    c = Context({'data': list(hits), 'field_names': field_names, "request": request, "cache": hits_dao.from_cache})

    return HttpResponse(t.render(c), content_type="application/json")
Ejemplo n.º 3
0
def embed(request, guid):
    account = request.account
    preferences = request.preferences
    msprotocol = 'https' if account.get_preference(
        'account.microsite.https') else 'http'
    base_uri = msprotocol + '://' + preferences['account_domain']

    try:
        datastream = DataStreamDBDAO().get(preferences['account_language'],
                                           guid=guid,
                                           published=True)
        parameters_query = RequestProcessor(request).get_arguments(
            datastream['parameters'])
    except Http404:
        return render_to_response('viewDataStream/embed404.html', {
            'settings': settings,
            'request': request
        })

    DatastreamHitsDAO(datastream).add(ChannelTypes.WEB)
    end_point = urllib.urlencode(parameters_query)
    header_row = request.REQUEST.get('header_row', False)
    fixed_column = request.REQUEST.get('fixed_column', False)

    return render_to_response('viewDataStream/embed.html', locals())
Ejemplo n.º 4
0
def embed(request, guid):
    """
    Get an embedded datastream
    :param request:
    :param guid:
    :return:
    """
    account = request.account
    preferences = request.preferences
    msprotocol = 'https' if account.get_preference(
        'account.microsite.https') else 'http'
    base_uri = msprotocol + '://' + preferences['account_domain']

    try:
        # parche horrible para usar account_language en vez del language del user
        user = request.user
        user.language = preferences['account_language']

        datastream = DataStreamDBDAO().get(user, guid=guid, published=True)
        parameters_query = RequestProcessor(request).get_arguments(
            datastream['parameters'])
    except DataStreamRevision.DoesNotExist:
        return render_to_response('viewDataStream/embed404.html', {
            'settings': settings,
            'request': request
        })

    DatastreamHitsDAO(datastream).add(ChannelTypes.WEB)
    end_point = urllib.urlencode(parameters_query)
    header_row = request.REQUEST.get('header_row', False)
    fixed_column = request.REQUEST.get('fixed_column', False)

    return render_to_response('viewDataStream/embed.html', locals())
Ejemplo n.º 5
0
def view(request, id, slug):
    """
    Get a datastream
    :param request:
    :param id:
    :param slug:
    :return:
    """
    logger = logging.getLogger(__name__)

    account = request.account

    preferences = request.preferences

    # parche horrible para usar account_language en vez del language del user
    user = request.user
    user.language = preferences['account_language']

    datastream = DataStreamDBDAO().get(user, datastream_id=id, published=True)

    url_query = urllib.urlencode(
        RequestProcessor(request).get_arguments(datastream['parameters']))

    DatastreamHitsDAO(datastream).add(ChannelTypes.WEB)

    notes = datastream['notes']
    if request.GET.get('embedded', False) == 'true':
        return render_to_response('viewDataStream/embedded.html', locals())
    else:
        return render_to_response('viewDataStream/index.html', locals())
Ejemplo n.º 6
0
    def index_datastreams(self):
        if self.options['datastreams']:
            if self.options['debug']: print "[Iniciando datastreams]"
            for datastream in DataStream.objects.filter(
                    last_published_revision__status=StatusChoices.PUBLISHED):
                try:
                    datastreamrevision = datastream.last_published_revision
                    datastream_rev = DataStreamDBDAO().get(
                        datastreamrevision.user,
                        datastream_revision_id=datastreamrevision.id,
                        published=True)
                    search_dao = DatastreamSearchDAOFactory().create(
                        datastreamrevision)
                    try:
                        search_dao.add()
                    except DatastreamI18n.MultipleObjectsReturned:
                        print "[ERROR ds] DatastreamI18n.MultipleObjectsReturned (ds.id= %s)" % datastream.id
                        continue
                    except AttributeError:
                        print "[ERROR ds] self.datastream.last_published_revision == None (ds= %s)" % datastream.id
                        continue

                    h = DatastreamHitsDAO(datastream_rev)

                    doc = {
                        'docid': "DS::%s" % datastreamrevision.datastream.guid,
                        "type": "ds",
                        "doc": {
                            "fields": {
                                "hits": h.count(),
                                "web_hits": h.count(channel_type=0),
                                "api_hits": h.count(channel_type=1)
                            }
                        }
                    }
                    try:
                        self.es.update(doc)
                    except:
                        if self.options['debug']:
                            print "[ERROR]: No se pudo ejecutar: ", doc
                except:
                    print "[ERROR ds] Fallo al indexar ID {} de la cuenta: {}".format(
                        datastream.id, datastream.user.account.name)
Ejemplo n.º 7
0
 def data(self, request, pk=None, format=None, *args, **kwargs):
     instance = self.get_object()
     DatastreamHitsDAO(instance).add(1)
     if format == 'json' or not format:
         return self.engine_call(request, 'invoke')
     return self.engine_call(request,
                             'invoke',
                             format,
                             serialize=False,
                             form_class=DatastreamRequestForm,
                             download=False)
Ejemplo n.º 8
0
    def index_datastreams(self):
        if self.options['datastreams']:
            if self.options['debug']: print "[Iniciando datastreams]"
            for datastream in DataStream.objects.filter(last_published_revision__status=StatusChoices.PUBLISHED):
                try:
                    datastreamrevision=datastream.last_published_revision
                    datastream_rev = DataStreamDBDAO().get(datastreamrevision.user,
                        datastream_revision_id=datastreamrevision.id,
                        published=True
                    )
                    search_dao = DatastreamSearchDAOFactory().create(datastreamrevision)
                    try:
                        search_dao.add()
                    except DatastreamI18n.MultipleObjectsReturned:
                        print "[ERROR ds] DatastreamI18n.MultipleObjectsReturned (ds.id= %s)" % datastream.id
                        continue
                    except AttributeError:
                        print "[ERROR ds] self.datastream.last_published_revision == None (ds= %s)" % datastream.id
                        continue

                    h = DatastreamHitsDAO(datastream_rev)

                    doc={
                        'docid': "DS::%s" % datastreamrevision.datastream.guid,
                        "type": "ds",
                        "doc": {
                            "fields": {
                                "hits": h.count(),
                                "web_hits": h.count(channel_type=0),
                                "api_hits": h.count(channel_type=1)
                            }
                        }
                    }
                    try:
                        self.es.update(doc)
                    except:
                        if self.options['debug']: print "[ERROR]: No se pudo ejecutar: ",doc
                except:
                    print "[ERROR ds] Fallo al indexar ID {} de la cuenta: {}".format(datastream.id, datastream.user.account.name)
Ejemplo n.º 9
0
def view(request, id, slug):
    logger = logging.getLogger(__name__)

    account = request.account

    preferences = request.preferences

    datastream = DataStreamDBDAO().get(
        language=preferences['account_language'],
        datastream_id=id,
        published=True)

    url_query = urllib.urlencode(
        RequestProcessor(request).get_arguments(datastream['parameters']))

    DatastreamHitsDAO(datastream).add(ChannelTypes.WEB)

    notes = datastream['notes']

    return render_to_response('viewDataStream/index.html', locals())
Ejemplo n.º 10
0
    def handle(self, *args, **options):

        # index resources
        if options['reindex']:

            # destruye el index
            ElasticsearchIndex().flush_index()
            es = ElasticsearchIndex()

            for dataset in Dataset.objects.filter(last_published_revision__status=StatusChoices.PUBLISHED):
                datasetrevision=dataset.last_published_revision
                search_dao = DatasetSearchDAOFactory().create(datasetrevision)
                search_dao.add()

            for vz in Visualization.objects.filter(last_published_revision__status=StatusChoices.PUBLISHED):
                vz_revision=vz.last_published_revision
                search_dao = VisualizationSearchDAOFactory().create(vz_revision)
                search_dao.add()

                h = VisualizationHitsDAO(vz_revision)

                doc={
                    'docid': "VZ::%s" % vz.guid,
                    "type": "vz",
                    "doc": {
                        "fields": {
                            "hits": h.count(),
                            "web_hits": h.count(channel_type=0),
                            "api_hits": h.count(channel_type=1)
                        }
                    }
                }
                try:
                    es.update(doc)
                except:
                    pass

            # TODO Hay que usar el metodo query del DAO
            for datastream in DataStream.objects.filter(last_published_revision__status=StatusChoices.PUBLISHED):
                datastreamrevision=datastream.last_published_revision
                datastream_rev = DataStreamDBDAO().get(
                    datastreamrevision.user.language,
                    datastream_revision_id=datastreamrevision.id,
                    published=True
                )
                search_dao = DatastreamSearchDAOFactory().create(datastreamrevision)
                search_dao.add()

                h = DatastreamHitsDAO(datastream_rev)

                doc={
                    'docid': "DS::%s" % datastreamrevision.datastream.guid,
                    "type": "ds",
                    "doc": {
                        "fields": {
                            "hits": h.count(),
                            "web_hits": h.count(channel_type=0),
                            "api_hits": h.count(channel_type=1)
                        }
                    }
                }
                try:
                    es.update(doc)
                except:
                    pass

        for plugin in DatalPluginPoint.get_active_with_att('reindex'):
            plugin.reindex(es)