コード例 #1
0
ファイル: vote_test.py プロジェクト: mwiencek/critiquebrainz
 def setUp(self):
     super(VoteTestCase, self).setUp()
     author = User(
         db_users.get_or_create('0',
                                new_user_data={
                                    "display_name": "Author",
                                }))
     self.user_1 = User(
         db_users.get_or_create('1',
                                new_user_data={
                                    "display_name": "Tester #1",
                                }))
     self.user_2 = User(
         db_users.get_or_create('2',
                                new_user_data={
                                    "display_name": "Tester #2",
                                }))
     license = License(id='Test', full_name='Test License')
     db.session.add(license)
     db.session.commit()
     self.review = Review.create(
         release_group='e7aad618-fa86-3983-9e77-405e21796eca',
         text="Testing!",
         user_id=author.id,
         is_draft=False,
         license_id=license.id)
コード例 #2
0
    def test_list(self):
        reviews, count = Review.list()
        self.assertEqual(count, 0)
        self.assertEqual(len(reviews), 0)

        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Awesome!",
            is_draft=False,
            license_id=self.license.id)
        reviews, count = Review.list()
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].text, u"Awesome!")

        review.update(text=u"Beautiful!", )
        reviews, count = Review.list()
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].text, u"Beautiful!")

        reviews, count = Review.list(sort='rating')
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)

        reviews, count = Review.list(sort='created')
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
コード例 #3
0
    def test_vote_create(self):
        # Preparing test data
        author = User.get_or_create(u'Author', musicbrainz_id=u'0')
        user_1 = User.get_or_create(u'Tester #1', musicbrainz_id=u'1')
        user_2 = User.get_or_create(u'Tester #2', musicbrainz_id=u'2')
        license = License(id=u'Test', full_name=u'Test License')
        db.session.add(license)
        db.session.commit()
        review = Review.create(
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            user=author,
            is_draft=False,
            license_id=license.id)

        vote_u1_positive = Vote.create(user_1, review, True)

        votes = db.session.query(Vote).all()
        self.assertEqual(len(votes), 1)
        self.assertIn(vote_u1_positive, votes)

        vote_u2_negative = Vote.create(user_2, review, False)

        votes = db.session.query(Vote).all()
        self.assertEqual(len(votes), 2)
        self.assertIn(vote_u1_positive, votes)
        self.assertIn(vote_u2_negative, votes)
コード例 #4
0
 def setUp(self):
     super(UserTestCase, self).setUp()
     self.user1 = User(
         db_users.get_or_create('tester_1',
                                new_user_data={
                                    "display_name": "test",
                                }))
     self.user2 = User(
         db_users.get_or_create("тестер",
                                new_user_data={
                                    "display_name": "test1",
                                }))
     self.author = User(
         db_users.get_or_create("author1",
                                new_user_data={
                                    "display_name": "Author1",
                                }))
     license = License(id='Test', full_name='Test License')
     db.session.add(license)
     db.session.commit()
     self.review = Review.create(
         release_group='e7aad618-fa86-3983-9e77-405e21796eca',
         text="Testing!",
         user_id=self.author.id,
         is_draft=False,
         license_id=license.id,
     )
     vote = db_vote.submit(self.user1.id, self.review.last_revision.id,
                           True)
     self.review_created = self.review.last_revision.timestamp
     self.review_id = self.review.id
     self.revision_id = self.review.last_revision.id
     self.report = SpamReport.create(self.revision_id, self.user1.id,
                                     "Testing Reason Report")
コード例 #5
0
    def test_user_has_voted(self):
        # Review needs user
        user_1 = User(display_name=u'Tester #1')
        db.session.add(user_1)
        db.session.commit()

        # and license
        license = License(id=u"Test", full_name=u'Test License')
        db.session.add(license)
        db.session.commit()

        review = Review.create(user=user_1,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Testing!",
                               is_draft=False,
                               license_id=license.id)
        db.session.add(review)
        db.session.commit()

        user_2 = User(display_name=u'Tester #2')
        db.session.add(user_2)
        db.session.commit()

        self.assertFalse(user_2.has_voted(review))
        Vote.create(user_2, review, True)
        self.assertTrue(user_2.has_voted(review))
コード例 #6
0
 def test_created_property(self):
     review = Review.create(user=self.user,
                            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                            text=u"Testing!",
                            is_draft=False,
                            license_id=self.license.id)
     self.assertEqual(review.created, review.revisions[0].timestamp)
コード例 #7
0
ファイル: user_test.py プロジェクト: mwiencek/critiquebrainz
    def test_user_has_voted(self):
        # Review needs user
        user_1 = User(display_name=u'Tester #1')
        db.session.add(user_1)
        db.session.commit()

        # and license
        license = License(id=u"Test", full_name=u'Test License')
        db.session.add(license)
        db.session.commit()

        review = Review.create(
            user_id=user_1.id,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=license.id)
        db.session.add(review)
        db.session.commit()

        user_2 = User(display_name=u'Tester #2')
        db.session.add(user_2)
        db.session.commit()

        self.assertFalse(user_2.has_voted(review))
        Vote.create(user_2.id, review, True)
        self.assertTrue(user_2.has_voted(review))
コード例 #8
0
    def test_vote_create(self):
        # Preparing test data
        author = User.get_or_create(u'Author', musicbrainz_id=u'0')
        user_1 = User.get_or_create(u'Tester #1', musicbrainz_id=u'1')
        user_2 = User.get_or_create(u'Tester #2', musicbrainz_id=u'2')
        license = License(id=u'Test', full_name=u'Test License')
        db.session.add(license)
        db.session.commit()
        review = Review.create(release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Testing!",
                               user=author,
                               is_draft=False,
                               license_id=license.id)

        vote_u1_positive = Vote.create(user_1, review, True)

        votes = db.session.query(Vote).all()
        self.assertEqual(len(votes), 1)
        self.assertIn(vote_u1_positive, votes)

        vote_u2_negative = Vote.create(user_2, review, False)

        votes = db.session.query(Vote).all()
        self.assertEqual(len(votes), 2)
        self.assertIn(vote_u1_positive, votes)
        self.assertIn(vote_u2_negative, votes)
コード例 #9
0
    def test_list(self):
        reviews, count = Review.list()
        self.assertEqual(count, 0)
        self.assertEqual(len(reviews), 0)

        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Awesome!",
            is_draft=False,
            license_id=self.license.id
        )
        reviews, count = Review.list()
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].text, u"Awesome!")

        review.update(
            text=u"Beautiful!",
        )
        reviews, count = Review.list()
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].text, u"Beautiful!")

        reviews, count = Review.list(sort='rating')
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)

        reviews, count = Review.list(sort='created')
        self.assertEqual(count, 1)
        self.assertEqual(len(reviews), 1)
コード例 #10
0
    def test_update(self):
        review = Review.create(user=self.user,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Awesome!",
                               is_draft=True,
                               license_id=self.license.id)
        another_license = License(id=u"License-2", full_name=u"Another license")
        db.session.add(another_license)
        db.session.commit()
        review.update(text=u"Bad...", is_draft=False, license_id=another_license.id, language='es')

        # Checking if contents are updated
        retrieved_review = Review.query.all()[0]
        self.assertEqual(retrieved_review.text, u"Bad...")
        self.assertFalse(retrieved_review.is_draft)
        self.assertEqual(retrieved_review.license_id, another_license.id)
        self.assertEqual(retrieved_review.language, 'es')

        # Updating should create a new revision.
        self.assertEqual(len(retrieved_review.revisions), 2)
        self.assertNotEqual(retrieved_review.revisions[0], retrieved_review.last_revision)

        # Let's try doing some things that shouldn't be allowed!

        with self.assertRaises(BadRequest):  # like changing license...
            review.update(text=u"Sucks!", license_id=self.license.id)

        with self.assertRaises(BadRequest):  # or converting review back to draft...
            review.update(text=u"Sucks!", is_draft=True)
コード例 #11
0
 def test_created_property(self):
     review = Review.create(
         user=self.user,
         release_group='e7aad618-fa86-3983-9e77-405e21796eca',
         text=u"Testing!",
         is_draft=False,
         license_id=self.license.id)
     self.assertEqual(review.created, review.revisions[0].timestamp)
コード例 #12
0
 def create_dummy_review(self, is_draft=False):
     review = Review.create(
         release_group="6b3cd75d-7453-39f3-86c4-1441f360e121",
         user_id=self.user.id,
         text=self.review_text,
         is_draft=is_draft,
         license_id=self.license.id,
     )
     return review
コード例 #13
0
def create():
    for entity_type in ENTITY_TYPES:
        entity_id = request.args.get(entity_type)
        if entity_id:
            break

    if not entity_id:
        flash(gettext("Please choose an entity to review."))
        return redirect(url_for('search.selector', next=url_for('.create')))

    if current_user.is_blocked:
        flash(
            gettext("You are not allowed to write new reviews because your "
                    "account has been blocked by a moderator."), 'error')
        return redirect(url_for('user.reviews', user_id=current_user.id))

    # Checking if the user already wrote a review for this entity
    review = Review.query.filter_by(user=current_user,
                                    entity_id=entity_id).first()
    if review:
        flash(gettext("You have already published a review for this entity!"),
              'error')
        return redirect(url_for('review.entity', id=review.id))

    form = ReviewCreateForm(default_language=get_locale())

    if form.validate_on_submit():
        if current_user.is_review_limit_exceeded:
            flash(gettext("You have exceeded your limit of reviews per day."),
                  'error')
            return redirect(url_for('user.reviews', user_id=current_user.id))

        is_draft = form.state.data == 'draft'
        review = Review.create(user=current_user,
                               entity_id=entity_id,
                               entity_type=entity_type,
                               text=form.text.data,
                               license_id=form.license_choice.data,
                               language=form.language.data,
                               is_draft=is_draft)
        if is_draft:
            flash(gettext("Review has been saved!"), 'success')
        else:
            flash(gettext("Review has been published!"), 'success')
        return redirect(url_for('.entity', id=review.id))

    entity = musicbrainz.get_entity_by_id(entity_id, entity_type)
    if not entity:
        flash(
            gettext(
                "You can only write a review for an entity that exists on MusicBrainz!"
            ), 'error')
        return redirect(url_for('search.selector', next=url_for('.create')))
    return render_template('review/write.html',
                           form=form,
                           entity_type=entity_type,
                           entity=entity)
コード例 #14
0
 def create_dummy_review(self, is_draft=False):
     review = Review.create(
         release_group="6b3cd75d-7453-39f3-86c4-1441f360e121",
         user=self.user,
         text=self.review_text,
         is_draft=is_draft,
         license_id=self.license.id,
     )
     return review
コード例 #15
0
    def test_review_deletion(self):
        review = Review.create(user=self.user,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Testing!",
                               is_draft=False,
                               license_id=self.license.id)
        self.assertEqual(Review.query.count(), 1)

        review.delete()
        self.assertEqual(Review.query.count(), 0)
コード例 #16
0
    def test_review_deletion(self):
        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id)
        self.assertEqual(Review.query.count(), 1)

        review.delete()
        self.assertEqual(Review.query.count(), 0)
コード例 #17
0
    def test_languages(self):
        review_en = Review.create(user=self.user,
                                  release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                                  text=u"Testing!",
                                  is_draft=False,
                                  license_id=self.license.id,
                                  language='en')
        review_de = Review.create(user=self.user,
                                  release_group='e7aad618-fa86-3983-9e77-405e21796ece',
                                  text=u"Testing!",
                                  is_draft=False,
                                  license_id=self.license.id,
                                  language='de')

        reviews, count = Review.list(language='de')
        self.assertEqual(len(reviews), 1)
        self.assertEqual(count, 1)

        reviews, count = Review.list(language='ru')
        self.assertEqual(len(reviews), 0)
        self.assertEqual(count, 0)
コード例 #18
0
    def test_get_popular(self):
        reviews = Review.get_popular()
        self.assertEqual(len(reviews), 0)

        new_review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id)

        reviews = Review.get_popular()
        self.assertEqual(len(reviews), 1)
コード例 #19
0
    def test_revisions(self):
        review = Review.create(user=self.user,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Awesome!",
                               is_draft=False,
                               license_id=self.license.id)
        self.assertEqual(len(review.revisions), 1)
        self.assertEqual(review.revisions[0], review.last_revision)

        # Updating should create a new revision.
        review.update(text=u"The worst!")
        self.assertEqual(len(review.revisions), 2)
        self.assertNotEqual(review.revisions[0], review.last_revision)
コード例 #20
0
    def test_review_creation(self):
        self.assertEqual(Review.query.count(), 0)

        review = Review.create(user=self.user,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Testing!",
                               is_draft=False,
                               license_id=self.license.id)

        reviews = Review.query.all()
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].id, review.id)
        self.assertEqual(reviews[0].entity_id, review.entity_id)
        self.assertEqual(reviews[0].license_id, review.license_id)
コード例 #21
0
    def test_get_popular(self):
        reviews = Review.get_popular()
        self.assertEqual(len(reviews), 0)

        new_review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id
        )

        reviews = Review.get_popular()
        self.assertEqual(len(reviews), 1)
コード例 #22
0
 def setUp(self):
     super(VoteTestCase, self).setUp()
     author = User.get_or_create('Author', musicbrainz_id='0')
     self.user_1 = User.get_or_create('Tester #1', musicbrainz_id='1')
     self.user_2 = User.get_or_create('Tester #2', musicbrainz_id='2')
     license = License(id='Test', full_name='Test License')
     db.session.add(license)
     db.session.commit()
     self.review = Review.create(
         release_group='e7aad618-fa86-3983-9e77-405e21796eca',
         text="Testing!",
         user=author,
         is_draft=False,
         license_id=license.id)
コード例 #23
0
def review_post_handler(user):
    """Publish a review.

    **OAuth scope:** review

    :reqheader Content-Type: *application/json*

    :json uuid entity_id: UUID of the release group that is being reviewed
    :json string entity_type: One of the supported reviewable entities. 'release_group' or 'event' etc.
    :json string text: review contents, min length is 25, max is 5000
    :json string license_choice: license ID
    :json string lang: language code (ISO 639-1), default is ``en`` **(optional)**
    :json boolean is_draft: whether the review should be saved as a draft or not, default is ``False`` **(optional)**

    :resheader Content-Type: *application/json*
    """
    def fetch_params():
        is_draft = Parser.bool('json', 'is_draft', optional=True) or False
        if is_draft:
            REVIEW_MIN_LENGTH = None
        entity_id = Parser.uuid('json', 'entity_id')
        entity_type = Parser.string('json',
                                    'entity_type',
                                    valid_values=ENTITY_TYPES)
        text = Parser.string('json',
                             'text',
                             min=REVIEW_MIN_LENGTH,
                             max=REVIEW_MAX_LENGTH)
        license_choice = Parser.string('json', 'license_choice')
        language = Parser.string(
            'json', 'language', min=2, max=3, optional=True) or 'en'
        if language and language not in supported_languages:
            raise InvalidRequest(desc='Unsupported language')
        if Review.query.filter_by(user=user, entity_id=entity_id).count():
            raise InvalidRequest(
                desc='You have already published a review for this album')
        return entity_id, entity_type, text, license_choice, language, is_draft

    if user.is_review_limit_exceeded:
        raise LimitExceeded('You have exceeded your limit of reviews per day.')
    entity_id, entity_type, text, license_choice, language, is_draft = fetch_params(
    )
    review = Review.create(user=user,
                           entity_id=entity_id,
                           entity_type=entity_type,
                           text=text,
                           license_id=license_choice,
                           language=language,
                           is_draft=is_draft)
    return jsonify(message='Request processed successfully', id=review.id)
コード例 #24
0
    def test_languages(self):
        review_en = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id,
            language='en')
        review_de = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796ece',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id,
            language='de')

        reviews, count = Review.list(language='de')
        self.assertEqual(len(reviews), 1)
        self.assertEqual(count, 1)

        reviews, count = Review.list(language='ru')
        self.assertEqual(len(reviews), 0)
        self.assertEqual(count, 0)
コード例 #25
0
    def test_revisions(self):
        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Awesome!",
            is_draft=False,
            license_id=self.license.id)
        self.assertEqual(len(review.revisions), 1)
        self.assertEqual(review.revisions[0], review.last_revision)

        # Updating should create a new revision.
        review.update(text=u"The worst!")
        self.assertEqual(len(review.revisions), 2)
        self.assertNotEqual(review.revisions[0], review.last_revision)
コード例 #26
0
    def setUp(self):
        super(RevisionTestCase, self).setUp()
        self.author = User.get_or_create('Author', musicbrainz_id='0')
        self.user_1 = User.get_or_create('Tester #1', musicbrainz_id='1')
        self.user_2 = User.get_or_create('Tester #2', musicbrainz_id='2')
        self.license = License(id=u'TEST', full_name=u"Test License")
        db.session.add(self.license)
        db.session.commit()

        self.review = Review.create(
            user_id=self.author.id,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id)
コード例 #27
0
    def test_review_creation(self):
        self.assertEqual(Review.query.count(), 0)

        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=self.license.id)

        reviews = Review.query.all()
        self.assertEqual(len(reviews), 1)
        self.assertEqual(reviews[0].id, review.id)
        self.assertEqual(reviews[0].entity_id, review.entity_id)
        self.assertEqual(reviews[0].license_id, review.license_id)
コード例 #28
0
    def setUp(self):
        super(RevisionTestCase, self).setUp()

        self.user = User(display_name=u'Tester')
        db.session.add(self.user)
        db.session.commit()

        self.license = License(id=u'TEST', full_name=u"Test License")
        db.session.add(self.license)
        db.session.commit()

        self.review = Review.create(user=self.user,
                                    release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                                    text=u"Testing!",
                                    is_draft=False,
                                    license_id=self.license.id)
コード例 #29
0
ファイル: review.py プロジェクト: dpmittal/critiquebrainz
def create():
    for entity_type in ENTITY_TYPES:
        entity_id = request.args.get(entity_type)
        if entity_id:
            break

    if not entity_id:
        flash(gettext("Please choose an entity to review."))
        return redirect(url_for('search.selector', next=url_for('.create')))

    if current_user.is_blocked:
        flash(gettext("You are not allowed to write new reviews because your "
                      "account has been blocked by a moderator."), 'error')
        return redirect(url_for('user.reviews', user_id=current_user.id))

    # Checking if the user already wrote a review for this entity
    review = Review.query.filter_by(user=current_user, entity_id=entity_id).first()
    if review:
        flash(gettext("You have already published a review for this entity!"), 'error')
        return redirect(url_for('review.entity', id=review.id))

    form = ReviewCreateForm(default_language=get_locale())

    if form.validate_on_submit():
        if current_user.is_review_limit_exceeded:
            flash(gettext("You have exceeded your limit of reviews per day."), 'error')
            return redirect(url_for('user.reviews', user_id=current_user.id))

        is_draft = form.state.data == 'draft'
        review = Review.create(user=current_user, entity_id=entity_id, entity_type=entity_type,
                               text=form.text.data, license_id=form.license_choice.data,
                               language=form.language.data, is_draft=is_draft)
        if is_draft:
            flash(gettext("Review has been saved!"), 'success')
        else:
            flash(gettext("Review has been published!"), 'success')
        return redirect(url_for('.entity', id=review.id))

    entity = musicbrainz.get_entity_by_id(entity_id, entity_type)
    if not entity:
        flash(gettext("You can only write a review for an entity that exists on MusicBrainz!"), 'error')
        return redirect(url_for('search.selector', next=url_for('.create')))

    if entity_type == 'release_group':
        spotify_mappings = mbspotify.mappings(entity_id)
        return render_template('review/modify/write.html', form=form, entity_type=entity_type, entity=entity, spotify_mappings = spotify_mappings)
    return render_template('review/modify/write.html', form=form, entity_type=entity_type, entity=entity)
コード例 #30
0
    def setUp(self):
        super(SpamReportTestCase, self).setUp()

        # We need review and a couple of users to work with.

        self.reporter = User(display_name=u'Reporter')
        db.session.add(self.reporter)

        self.author = User(display_name=u'Author')
        db.session.add(self.author)
        self.license = License(id=u'Test', full_name=u'Test License')
        db.session.add(self.license)
        db.session.flush()

        self.review = Review.create(user=self.author, release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                                    text=u"It's... beautiful!", is_draft=False, license_id=self.license.id,
                                    language='en')
コード例 #31
0
    def setUp(self):
        super(ModerationLogCase, self).setUp()

        self.admin = User(display_name=u'Admin')
        db.session.add(self.admin)

        self.user = User(display_name=u'User')
        db.session.add(self.user)

        self.reason = "Testing Reason"

        self.license = License(id=u'Test', full_name=u'Test License')
        db.session.add(self.license)
        db.session.flush()

        self.review = Review.create(user_id=self.user.id, release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                                    text=u"It's... beautiful!", is_draft=False, license_id=self.license.id,
                                    language='en')
コード例 #32
0
    def setUp(self):
        super(ModerationLogCase, self).setUp()

        self.admin = User(display_name=u'Admin')
        db.session.add(self.admin)

        self.user = User(display_name=u'User')
        db.session.add(self.user)

        self.reason = "Testing Reason"

        self.license = License(id=u'Test', full_name=u'Test License')
        db.session.add(self.license)
        db.session.flush()

        self.review = Review.create(user=self.user, release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                                    text=u"It's... beautiful!", is_draft=False, license_id=self.license.id,
                                    language='en')
コード例 #33
0
    def test_reviews_property(self):
        user = User(display_name=u'Tester')
        db.session.add(user)
        db.session.commit()

        self.assertEqual(len(user.reviews), 0)

        license = License(id=u"Test", full_name=u'Test License')
        db.session.add(license)
        db.session.flush()
        review = Review.create(user=user,
                               release_group='e7aad618-fa86-3983-9e77-405e21796eca',
                               text=u"Testing!",
                               is_draft=False,
                               license_id=license.id)
        db.session.add(review)
        db.session.commit()
        self.assertEqual(len(user.reviews), 1)

        review.delete()
        self.assertEqual(len(user.reviews), 0)
コード例 #34
0
ファイル: user_test.py プロジェクト: mwiencek/critiquebrainz
    def test_reviews_property(self):
        user = User(display_name=u'Tester')
        db.session.add(user)
        db.session.commit()

        self.assertEqual(len(user.reviews), 0)

        license = License(id=u"Test", full_name=u'Test License')
        db.session.add(license)
        db.session.flush()
        review = Review.create(
            user_id=user.id,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Testing!",
            is_draft=False,
            license_id=license.id)
        db.session.add(review)
        db.session.commit()
        self.assertEqual(len(user.reviews), 1)

        review.delete()
        self.assertEqual(len(user.reviews), 0)
コード例 #35
0
def review_post_handler(user):
    """Publish a review.

    **OAuth scope:** review

    :reqheader Content-Type: *application/json*

    :json uuid entity_id: UUID of the release group that is being reviewed
    :json string entity_type: One of the supported reviewable entities. 'release_group' or 'event' etc.
    :json string text: review contents, min length is 25, max is 5000
    :json string license_choice: license ID
    :json string lang: language code (ISO 639-1), default is ``en`` **(optional)**
    :json boolean is_draft: whether the review should be saved as a draft or not, default is ``False`` **(optional)**

    :resheader Content-Type: *application/json*
    """

    def fetch_params():
        is_draft = Parser.bool('json', 'is_draft', optional=True) or False
        if is_draft:
            REVIEW_MIN_LENGTH = None
        entity_id = Parser.uuid('json', 'entity_id')
        entity_type = Parser.string('json', 'entity_type', valid_values=ENTITY_TYPES)
        text = Parser.string('json', 'text', min=REVIEW_MIN_LENGTH, max=REVIEW_MAX_LENGTH)
        license_choice = Parser.string('json', 'license_choice')
        language = Parser.string('json', 'language', min=2, max=3, optional=True) or 'en'
        if language and language not in supported_languages:
            raise InvalidRequest(desc='Unsupported language')
        if Review.query.filter_by(user=user, entity_id=entity_id).count():
            raise InvalidRequest(desc='You have already published a review for this album')
        return entity_id, entity_type, text, license_choice, language, is_draft

    if user.is_review_limit_exceeded:
        raise LimitExceeded('You have exceeded your limit of reviews per day.')
    entity_id, entity_type, text, license_choice, language, is_draft = fetch_params()
    review = Review.create(user=user, entity_id=entity_id, entity_type=entity_type, text=text,
                           license_id=license_choice, language=language, is_draft=is_draft)
    return jsonify(message='Request processed successfully', id=review.id)
コード例 #36
0
    def test_update(self):
        review = Review.create(
            user=self.user,
            release_group='e7aad618-fa86-3983-9e77-405e21796eca',
            text=u"Awesome!",
            is_draft=True,
            license_id=self.license.id)
        another_license = License(id=u"License-2",
                                  full_name=u"Another license")
        db.session.add(another_license)
        db.session.commit()
        review.update(text=u"Bad...",
                      is_draft=False,
                      license_id=another_license.id,
                      language='es')

        # Checking if contents are updated
        retrieved_review = Review.query.all()[0]
        self.assertEqual(retrieved_review.text, u"Bad...")
        self.assertFalse(retrieved_review.is_draft)
        self.assertEqual(retrieved_review.license_id, another_license.id)
        self.assertEqual(retrieved_review.language, 'es')

        # Updating should create a new revision.
        self.assertEqual(len(retrieved_review.revisions), 2)
        self.assertNotEqual(retrieved_review.revisions[0],
                            retrieved_review.last_revision)

        # Let's try doing some things that shouldn't be allowed!

        with self.assertRaises(BadRequest):  # like changing license...
            review.update(text=u"Sucks!", license_id=self.license.id)

        with self.assertRaises(
                BadRequest):  # or converting review back to draft...
            review.update(text=u"Sucks!", is_draft=True)
コード例 #37
0
 def setUp(self):
     super(SpamReportTestCase, self).setUp()
     author = User(db_users.get_or_create('0', new_user_data={
         "display_name": "Author",
     }))
     self.user1 = User(db_users.get_or_create('1', new_user_data={
         "display_name": "Tester #1",
     }))
     self.user2 = User(db_users.get_or_create('2', new_user_data={
         "display_name": "Tester #2",
     }))
     license = License(id='Test', full_name='Test License')
     db.session.add(license)
     db.session.commit()
     self.review = Review.create(
             release_group='e7aad618-fa86-3983-9e77-405e21796eca',
             text="Testing!",
             user_id=author.id,
             is_draft=False,
             license_id=license.id,
     )
     self.revision_id = self.review.last_revision.id
     self.report = db_spam_report.create(self.revision_id, self.user1.id, "To test is this report")
     self.report_time = self.report["reported_at"]
コード例 #38
0
 def create_dummy_review(self):
     return Review.create(**self.review)
コード例 #39
0
 def create_dummy_review(self):
     return Review.create(**self.review)