def _get_organizationpage_views():
    organizationpage_view_ids = []
    organizationpage_views = []
    # list out all the resource ID whose is featured with package IDs in the organization
    try:
        resp = c.page.items

        if len(resp)>0 and resp[0].has_key('id'):
            for items in resp:
                pkg_id = items['id']
                for view in db.Civicdata_Featured.find(organizationpage=True, package_id=pkg_id).all():
                    organizationpage_view_ids.append(view.resource_view_id)

            resource_views = model.Session.query(model.ResourceView).filter(model.ResourceView.id.in_(organizationpage_view_ids)).all()

            for view in resource_views:
                resource_view = md.resource_view_dictize(view, {'model': model})
                resource_obj = model.Resource.get(resource_view['resource_id'])
                resource = md.resource_dictize(resource_obj, {'model': model})

                organizationpage_views.append({
                    'resource_view': resource_view,
                    'resource': resource,
                    'package': md.package_dictize(resource_obj.package, {'model':model})
                })


    except Exception, ex:
        print '\nDEBUG: '+str(ex)
Esempio n. 2
0
def _get_homepage_views():
    homepage_view_ids = [
        view.resource_view_id
        for view in db.Featured.find(homepage=True).all()
    ]

    resource_views = model.Session.query(model.ResourceView).filter(
        model.ResourceView.id.in_(homepage_view_ids)).all()

    homepage_views = []
    for view in resource_views:
        resource_view = md.resource_view_dictize(view, {'model': model})
        resource_obj = model.Resource.get(resource_view['resource_id'])

        if resource_obj.state == 'deleted':
            continue

        resource = md.resource_dictize(resource_obj, {'model': model})

        homepage_views.append({
            'resource_view':
            resource_view,
            'resource':
            resource,
            'package':
            md.package_dictize(resource_obj.package, {'model': model})
        })

    return homepage_views
Esempio n. 3
0
def _get_canonical_view(package_id):
    canonical_view_ids = [
        view.resource_view_id for view in db.Featured.find(
            package_id=package_id, canonical=True).all()
    ]

    if not canonical_view_ids:
        return None

    resource_views = model.Session.query(model.ResourceView).filter(
        model.ResourceView.id.in_(canonical_view_ids)).all()

    if resource_views is None:
        return None

    for view in resource_views:
        resource_view = md.resource_view_dictize(view, {'model': model})
        resource_obj = model.Resource.get(resource_view['resource_id'])

        if resource_obj.state == 'deleted':
            continue

        resource = md.resource_dictize(resource_obj, {'model': model})

        return {'resource': resource, 'resource_view': resource_view}

    return None
Esempio n. 4
0
def resource_view_create(context, data_dict):
    '''Creates a new resource view.

    :param resource_id: id of the resource
    :type resource_id: string
    :param title: the title of the view
    :type title: string
    :param description: a description of the view (optional)
    :type description: string
    :param view_type: type of view
    :type view_type: string
    :param config: options necessary to recreate a view state (optional)
    :type config: JSON string

    :returns: the newly created resource view
    :rtype: dictionary

    '''
    model = context['model']

    resource_id = _get_or_bust(data_dict, 'resource_id')
    view_type = _get_or_bust(data_dict, 'view_type')
    view_plugin = ckan.lib.datapreview.get_view_plugin(view_type)

    if not view_plugin:
        raise ValidationError(
            {"view_type": "No plugin found for view_type {view_type}".format(
                view_type=view_type
            )}
        )

    default = logic.schema.default_create_resource_view_schema(view_plugin)
    schema = context.get('schema', default)
    plugin_schema = view_plugin.info().get('schema', {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    _check_access('resource_view_create', context, data_dict)

    if context.get('preview'):
        return data

    max_order = model.Session.query(
        func.max(model.ResourceView.order)
        ).filter_by(resource_id=resource_id).first()

    order = 0
    if max_order[0] is not None:
        order = max_order[0] + 1
    data['order'] = order

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get('defer_commit'):
        model.repo.commit()
    return model_dictize.resource_view_dictize(resource_view, context)
Esempio n. 5
0
def resource_view_create(context, data_dict):
    '''Creates a new resource view.

    :param resource_id: id of the resource
    :type resource_id: string
    :param title: the title of the view
    :type title: string
    :param description: a description of the view (optional)
    :type description: string
    :param view_type: type of view
    :type view_type: string
    :param config: options necessary to recreate a view state (optional)
    :type config: JSON string

    :returns: the newly created resource view
    :rtype: dictionary

    '''
    model = context['model']

    resource_id = _get_or_bust(data_dict, 'resource_id')
    view_type = _get_or_bust(data_dict, 'view_type')
    view_plugin = ckan.lib.datapreview.get_view_plugin(view_type)

    if not view_plugin:
        raise ValidationError({
            "view_type":
            "No plugin found for view_type {view_type}".format(
                view_type=view_type)
        })

    default = logic.schema.default_create_resource_view_schema(view_plugin)
    schema = context.get('schema', default)
    plugin_schema = view_plugin.info().get('schema', {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    _check_access('resource_view_create', context, data_dict)

    if context.get('preview'):
        return data

    max_order = model.Session.query(func.max(
        model.ResourceView.order)).filter_by(resource_id=resource_id).first()

    order = 0
    if max_order[0] is not None:
        order = max_order[0] + 1
    data['order'] = order

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get('defer_commit'):
        model.repo.commit()
    return model_dictize.resource_view_dictize(resource_view, context)
Esempio n. 6
0
def resource_view_update(
        context: Context,
        data_dict: DataDict) -> ActionResult.ResourceViewUpdate:
    '''Update a resource view.

    To update a resource_view you must be authorized to update the resource
    that the resource_view belongs to.

    For further parameters see ``resource_view_create()``.

    :param id: the id of the resource_view to update
    :type id: string

    :returns: the updated resource_view
    :rtype: string

    '''
    model = context['model']
    id = _get_or_bust(data_dict, "id")

    resource_view = model.ResourceView.get(id)
    if not resource_view:
        raise NotFound

    view_plugin = ckan.lib.datapreview.get_view_plugin(resource_view.view_type)
    schema = (context.get('schema')
              or schema_.default_update_resource_view_schema(view_plugin))
    assert view_plugin
    plugin_schema = view_plugin.info().get('schema', {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    context['resource_view'] = resource_view
    resource = model.Resource.get(resource_view.resource_id)
    if resource is None:
        raise NotFound('Resource was not found.')
    context['resource'] = resource

    _check_access('resource_view_update', context, data_dict)

    if context.get('preview'):
        return data

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get('defer_commit'):
        model.repo.commit()
    return model_dictize.resource_view_dictize(resource_view, context)
def _get_canonical_view(package_id):
    canonical = db.Civicdata_Featured.find(package_id=package_id, canonical=True).first()

    if not canonical:
        return None

    resource_view = md.resource_view_dictize(
        model.ResourceView.get(canonical.resource_view_id), {'model': model}
    )
    resource = md.resource_dictize(
        model.Resource.get(resource_view['resource_id']), {'model': model}
    )

    return {'resource': resource, 'resource_view': resource_view}
Esempio n. 8
0
def resource_view_update(context, data_dict):
    '''Update a resource view.

    To update a resource_view you must be authorized to update the resource
    that the resource_view belongs to.

    For further parameters see ``resource_view_create()``.

    :param id: the id of the resource_view to update
    :type id: string

    :returns: the updated resource_view
    :rtype: string

    '''
    model = context['model']
    id = _get_or_bust(data_dict, "id")
    schema = (context.get('schema') or
              ckan.logic.schema.default_update_resource_view_schema())


    resource_view = model.ResourceView.get(id)
    if not resource_view:
        raise NotFound

    view_plugin = datapreview.get_view_plugin(resource_view.view_type)
    plugin_schema = view_plugin.info().get('schema', {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    context["resource_view"] = resource_view
    context['resource'] = model.Resource.get(resource_view.resource_id)

    _check_access('resource_view_update', context, data_dict)

    if context.get('preview'):
        return data

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get('defer_commit'):
        model.repo.commit()
    return model_dictize.resource_view_dictize(resource_view, context)
Esempio n. 9
0
def _get_canonical_view(package_id):
    canonical = db.Featured.find(package_id=package_id, canonical=True).first()

    if not canonical:
        return None

    resource_view = model.ResourceView.get(canonical.resource_view_id)
    if resource_view is None:
        return None

    resource_view_dictized = md.resource_view_dictize(resource_view,
                                                      {'model': model})

    resource = md.resource_dictize(
        model.Resource.get(resource_view_dictized['resource_id']),
        {'model': model})

    return {'resource': resource, 'resource_view': resource_view_dictized}
Esempio n. 10
0
def resource_view_update(context, data_dict):
    """Update a resource view.

    To update a resource_view you must be authorized to update the resource
    that the resource_view belongs to.

    For further parameters see ``resource_view_create()``.

    :param id: the id of the resource_view to update
    :type id: string

    :returns: the updated resource_view
    :rtype: string

    """
    model = context["model"]
    id = _get_or_bust(data_dict, "id")

    resource_view = model.ResourceView.get(id)
    if not resource_view:
        raise NotFound

    view_plugin = ckan.lib.datapreview.get_view_plugin(resource_view.view_type)
    schema = context.get("schema") or schema_.default_update_resource_view_schema(view_plugin)
    plugin_schema = view_plugin.info().get("schema", {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    context["resource_view"] = resource_view
    context["resource"] = model.Resource.get(resource_view.resource_id)

    _check_access("resource_view_update", context, data_dict)

    if context.get("preview"):
        return data

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get("defer_commit"):
        model.repo.commit()
    return model_dictize.resource_view_dictize(resource_view, context)
Esempio n. 11
0
    def before_view(self, pkg_dict):
        #fetch related items
        related_list = logic.get_action('related_list')({}, pkg_dict)
        pkg_dict['related_list'] = related_list

        res_ids = [res['id'] for res in pkg_dict['resources']]
        context = {'model': model, 'session': model.Session}
        view = model.Session.query(model.ResourceView).filter(
            model.ResourceView.resource_id.in_(res_ids)).filter(
                model.ResourceView.featured == True).first()

        if view:
            pkg_dict['view'] = md.resource_view_dictize(view, context)
            pkg_dict['view_res'] = [
                res for res in pkg_dict['resources']
                if res['id'] == pkg_dict['view']['resource_id']
            ][0]

        return pkg_dict
    def before_view(self, pkg_dict):
        #fetch related items
        related_list = logic.get_action('related_list')({}, pkg_dict)
        pkg_dict['related_list'] = related_list

        res_ids = [res['id'] for res in pkg_dict['resources']]
        context = {'model': model, 'session': model.Session}
        view = model.Session.query(model.ResourceView).filter(
            model.ResourceView.resource_id.in_(res_ids)).filter(
            model.ResourceView.featured == True
        ).first()

        if view:
            pkg_dict['view'] = md.resource_view_dictize(view, context)
            pkg_dict['view_res'] = [res for res in pkg_dict['resources']
                    if res['id'] == pkg_dict['view']['resource_id']][0]


        return pkg_dict
Esempio n. 13
0
def resource_view_update(context, data_dict):
    '''Update a resource view.

    To update a resource_view you must be authorized to update the resource
    that the resource_view belongs to.

    For further parameters see ``resource_view_create()``.

    :param id: the id of the resource_view to update
    :type id: string

    :returns: the updated resource_view
    :rtype: string

    '''
    model = context['model']
    id = _get_or_bust(data_dict, "id")

    resource_view = model.ResourceView.get(id)
    if not resource_view:
        raise NotFound

    view_plugin = ckan.lib.datapreview.get_view_plugin(resource_view.view_type)
    schema = (context.get('schema')
              or schema_.default_update_resource_view_schema(view_plugin))
    plugin_schema = view_plugin.info().get('schema', {})
    schema.update(plugin_schema)

    data, errors = _validate(data_dict, schema, context)
    if errors:
        model.Session.rollback()
        raise ValidationError(errors)

    context['resource_view'] = resource_view
    context['resource'] = model.Resource.get(resource_view.resource_id)

    _check_access('resource_view_update', context, data_dict)

    if context.get('preview'):
        return data

    resource_view = model_save.resource_view_dict_save(data, context)
    if not context.get('defer_commit'):
        model.repo.commit()

    # add activity for resource view update
    try:
        user = context['user']
        user_id = model.User.by_name(user.decode('utf8')).id
    except AttributeError:
        # do not create activity for non-users
        pass
    else:
        activity_dict = {
            'user_id': user_id,
            'object_id': context['resource'].package_id,
            'activity_type': 'changed resource view',
            'data': {
                'id': resource_view.id
            },
        }
        activity_create_context = {
            'model': model,
            'user': user,
            'defer_commit': False,
            'ignore_auth': True,
            'session': context['session'],
        }
        logic.get_action('activity_create')(activity_create_context,
                                            activity_dict)

    return model_dictize.resource_view_dictize(resource_view, context)