コード例 #1
0
ファイル: create.py プロジェクト: emphanos/ckan
def rating_create(context, data_dict):

    model = context["model"]
    user = context.get("user")

    package_ref = data_dict.get("package")
    rating = data_dict.get("rating")
    opts_err = None
    if not package_ref:
        opts_err = _('You must supply a package id or name (parameter "package").')
    elif not rating:
        opts_err = _('You must supply a rating (parameter "rating").')
    else:
        try:
            rating_int = int(rating)
        except ValueError:
            opts_err = _("Rating must be an integer value.")
        else:
            package = model.Package.get(package_ref)
            if rating < ratings.MIN_RATING or rating > ratings.MAX_RATING:
                opts_err = _("Rating must be between %i and %i.") % (ratings.MIN_RATING, ratings.MAX_RATING)
            elif not package:
                opts_err = _("Not found") + ": %r" % package_ref
    if opts_err:
        raise ValidationError(opts_err)

    user = model.User.by_name(user)
    ratings.set_rating(user, package, rating_int)

    package = model.Package.get(package_ref)
    ret_dict = {"rating average": package.get_average_rating(), "rating count": len(package.ratings)}
    return ret_dict
コード例 #2
0
ファイル: create.py プロジェクト: ciudadanointeligente/ckan
def rating_create(context, data_dict):

    model = context['model']
    user = context.get("user") 

    package_ref = data_dict.get('package')
    rating = data_dict.get('rating')
    opts_err = None
    if not package_ref:
        opts_err = _('You must supply a package id or name (parameter "package").')
    elif not rating:
        opts_err = _('You must supply a rating (parameter "rating").')
    else:
        try:
            rating_int = int(rating)
        except ValueError:
            opts_err = _('Rating must be an integer value.')
        else:
            package = model.Package.get(package_ref)
            if rating < ratings.MIN_RATING or rating > ratings.MAX_RATING:
                opts_err = _('Rating must be between %i and %i.') % (ratings.MIN_RATING, ratings.MAX_RATING)
            elif not package:
                opts_err = _('Package with name %r does not exist.') % package_ref
    if opts_err:
        raise ValidationError(opts_err)

    user = model.User.by_name(user)
    ratings.set_rating(user, package, rating_int)

    package = model.Package.get(package_ref)
    ret_dict = {'rating average':package.get_average_rating(),
                'rating count': len(package.ratings)}
    return ret_dict
コード例 #3
0
ファイル: create.py プロジェクト: whsheng/ckan
def rating_create(context, data_dict):
    '''Rate a dataset (package).

    You must provide your API key in the Authorization header.

    :param package: the name or id of the dataset to rate
    :type package: string
    :param rating: the rating to give to the dataset, an integer between 1 and
        5
    :type rating: int

    :returns: a dictionary with two keys: ``'rating average'`` (the average
        rating of the dataset you rated) and ``'rating count'`` (the number of
        times the dataset has been rated)
    :rtype: dictionary

    '''
    model = context['model']
    user = context.get("user")

    package_ref = data_dict.get('package')
    rating = data_dict.get('rating')
    opts_err = None
    if not package_ref:
        opts_err = _(
            'You must supply a package id or name (parameter "package").')
    elif not rating:
        opts_err = _('You must supply a rating (parameter "rating").')
    else:
        try:
            rating_int = int(rating)
        except ValueError:
            opts_err = _('Rating must be an integer value.')
        else:
            package = model.Package.get(package_ref)
            if rating < ratings.MIN_RATING or rating > ratings.MAX_RATING:
                opts_err = _('Rating must be between %i and %i.') % (
                    ratings.MIN_RATING, ratings.MAX_RATING)
            elif not package:
                opts_err = _('Not found') + ': %r' % package_ref
    if opts_err:
        raise ValidationError(opts_err)

    user = model.User.by_name(user)
    ratings.set_rating(user, package, rating_int)

    package = model.Package.get(package_ref)
    ret_dict = {
        'rating average': package.get_average_rating(),
        'rating count': len(package.ratings)
    }
    return ret_dict
コード例 #4
0
    def test_top_rated(self):
        # Rate some packages
        set_rating(u'ip1', model.Package.by_name(u'gils'), 2.5)
        set_rating(u'ip2', model.Package.by_name(u'gils'), 1.0)
        set_rating(u'ip3', model.Package.by_name(u'gils'), 1.0)
        set_rating(u'ip1', model.Package.by_name(u'us-gov-images'), 2.0)
        set_rating(u'ip1', model.Package.by_name(u'usa-courts-gov'), 5.0)

        res = Stats().top_rated_packages()
        assert len(res) == 3, res
        assert res[0] == (model.Package.by_name(u'usa-courts-gov'), 5.0, 1), res[0]
        assert res[1] == (model.Package.by_name(u'us-gov-images'), 2.0, 1), res[1]
        assert res[2] == (model.Package.by_name(u'gils'), 1.5, 3), res[2]
コード例 #5
0
ファイル: create.py プロジェクト: afoone/ckan
def rating_create(context, data_dict):
    '''Rate a dataset (package).

    You must provide your API key in the Authorization header.

    :param package: the name or id of the dataset to rate
    :type package: string
    :param rating: the rating to give to the dataset, an integer between 1 and
        5
    :type rating: int

    :returns: a dictionary with two keys: ``'rating average'`` (the average
        rating of the dataset you rated) and ``'rating count'`` (the number of
        times the dataset has been rated)
    :rtype: dictionary

    '''
    model = context['model']
    user = context.get("user")

    package_ref = data_dict.get('package')
    rating = data_dict.get('rating')
    opts_err = None
    if not package_ref:
        opts_err = _('You must supply a package id or name '
                     '(parameter "package").')
    elif not rating:
        opts_err = _('You must supply a rating (parameter "rating").')
    else:
        try:
            rating_int = int(rating)
        except ValueError:
            opts_err = _('Rating must be an integer value.')
        else:
            package = model.Package.get(package_ref)
            if rating < ratings.MIN_RATING or rating > ratings.MAX_RATING:
                opts_err = _('Rating must be between %i and %i.') \
                    % (ratings.MIN_RATING, ratings.MAX_RATING)
            elif not package:
                opts_err = _('Not found') + ': %r' % package_ref
    if opts_err:
        raise ValidationError(opts_err)

    user = model.User.by_name(user)
    ratings.set_rating(user, package, rating_int)

    package = model.Package.get(package_ref)
    ret_dict = {'rating average': package.get_average_rating(),
                'rating count': len(package.ratings)}
    return ret_dict
コード例 #6
0
ファイル: home.py プロジェクト: okfn/ckanext-ngds
    def rating_submit(self):
        """
        Rates a dataset. Probably should be in its own py file or something... 
        """
        data = clean_dict(unflatten(tuplize_dict(parse_params(request.params))))
        rpackageId = data['rpackageId']
        ratingValue = data['ratingValue']
        log.debug("in set rating review %s %s %s", rpackageId, ratingValue, c.user)
        package = model.Package.get(rpackageId)
        rating.set_rating(c.user, package, ratingValue)

        return {
            'success': True
        }
コード例 #7
0
    def test_top_rated(self):
        # Rate some packages
        set_rating(u'ip1', model.Package.by_name(u'gils'), 2.5)
        set_rating(u'ip2', model.Package.by_name(u'gils'), 1.0)
        set_rating(u'ip3', model.Package.by_name(u'gils'), 1.0)
        set_rating(u'ip1', model.Package.by_name(u'us-gov-images'), 2.0)
        set_rating(u'ip1', model.Package.by_name(u'usa-courts-gov'), 5.0)

        res = Stats().top_rated_packages()
        assert len(res) == 3, res
        assert res[0] == (model.Package.by_name(u'usa-courts-gov'), 5.0,
                          1), res[0]
        assert res[1] == (model.Package.by_name(u'us-gov-images'), 2.0,
                          1), res[1]
        assert res[2] == (model.Package.by_name(u'gils'), 1.5, 3), res[2]
コード例 #8
0
def rating_create(context, data_dict):

    model = context['model']
    user = context.get("user")

    package_ref = data_dict.get('package')
    rating = data_dict.get('rating')
    opts_err = None
    if not package_ref:
        opts_err = _(
            'You must supply a package id or name (parameter "package").')
    elif not rating:
        opts_err = _('You must supply a rating (parameter "rating").')
    else:
        try:
            rating_int = int(rating)
        except ValueError:
            opts_err = _('Rating must be an integer value.')
        else:
            package = model.Package.get(package_ref)
            if rating < ratings.MIN_RATING or rating > ratings.MAX_RATING:
                opts_err = _('Rating must be between %i and %i.') % (
                    ratings.MIN_RATING, ratings.MAX_RATING)
            elif not package:
                opts_err = _(
                    'Package with name %r does not exist.') % package_ref
    if opts_err:
        raise ValidationError(opts_err)

    user = model.User.by_name(user)
    ratings.set_rating(user, package, rating_int)

    package = model.Package.get(package_ref)
    ret_dict = {
        'rating average': package.get_average_rating(),
        'rating count': len(package.ratings)
    }
    return ret_dict
コード例 #9
0
ファイル: home.py プロジェクト: okfn/ckanext-ngds
 def rate(self, pkg_id, rating_value):
     package = model.Package.get(pkg_id)
     if float(rating_value) not in [1.0, 2.0, 3.0, 4.0, 5.0]:
         return redirect("/dataset/" + pkg_id)
     rating.set_rating(c.user, package, rating_value)
     return redirect("/dataset/" + pkg_id)