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
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
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
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]
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
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 }
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
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)