Esempio n. 1
0
    def test_delete_project_with_coloredtags(self):
        """ Test the model when we delete a project with Colored tags. """

        # Create a project
        item = model.Project(
            user_id=1,  # pingou
            name='test',
            description='test project #1',
            hook_token='aaabbbiii',
        )
        self.session.add(item)
        self.session.commit()

        # Create two ColoredTags
        tagobj = model.TagColored(tag='Tag#1', project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        tagobj = model.TagColored(tag='Tag#2', project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        self.assertEqual(self.session.query(model.Project).count(), 1)
        self.assertEqual(self.session.query(model.TagColored).count(), 2)

        project = self.session.query(
            model.Project).filter(model.Project.id == 1).one()
        self.session.delete(project)
        self.session.commit()

        self.assertEqual(self.session.query(model.Project).count(), 0)
        self.assertEqual(self.session.query(model.TagColored).count(), 0)
Esempio n. 2
0
    def test_delete_project_with_coloredtags_and_issues(self):
        """ Test the model when we delete a project with Colored tags and
        issues. """

        # Create a project
        item = model.Project(
            user_id=1,  # pingou
            name='test',
            description='test project #1',
            hook_token='aaabbbiii',
        )
        self.session.add(item)
        self.session.commit()

        # Create two ColoredTags
        tagobj = model.TagColored(tag='Tag#1', project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        tagobj = model.TagColored(tag='Tag#2', project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        # Create issues
        issue = model.Issue(
            id=pagure.lib.query.get_next_id(self.session, 1),
            project_id=1,
            title='Issue #1',
            content='Description #1',
            user_id=1,
            uid=uuid.uuid4().hex,
            private=False,
        )
        self.session.add(issue)
        self.session.commit()

        issue = model.Issue(
            id=pagure.lib.query.get_next_id(self.session, 1),
            project_id=1,
            title='Issue #2',
            content='Description #2',
            user_id=1,
            uid=uuid.uuid4().hex,
            private=False,
        )
        self.session.add(issue)
        self.session.commit()

        self.assertEqual(self.session.query(model.Project).count(), 1)
        self.assertEqual(self.session.query(model.TagColored).count(), 2)
        self.assertEqual(self.session.query(model.Issue).count(), 2)

        project = self.session.query(
            model.Project).filter(model.Project.id == 1).one()
        self.session.delete(project)
        self.session.commit()

        self.assertEqual(self.session.query(model.Project).count(), 0)
        self.assertEqual(self.session.query(model.TagColored).count(), 0)
        self.assertEqual(self.session.query(model.Issue).count(), 0)
def upgrade():
    """ Alter the DB schema for the changes related to colored tags. """
    engine = op.get_bind()
    Session = sa.orm.scoped_session(sa.orm.sessionmaker())
    Session.configure(bind=engine)
    session = Session()

    projects = collections.defaultdict(list)
    for issue in session.query(model.Issue).all():
        for issuetag in issue.old_tags:
            tag = issuetag.tag
            # Add the tag to the project if it isn't already there
            if tag not in projects[issue.project.id]:
                tagobj = model.TagColored(
                    tag=tag,
                    project_id=issue.project.id)
                session.add(tagobj)
                session.flush()
                projects[issue.project.id].append(tag)
            else:
                tagobj = session.query(
                    model.TagColored
                ).filter(
                    model.TagColored.tag == tag
                ).filter(
                    model.TagColored.project_id == issue.project.id
                ).first()

            # Link the tag to the ticket as it was
            tagissueobj = model.TagIssueColored(
                tag_id=tagobj.id,
                issue_uid=issue.uid,
                date_created=tagobj.date_created,
            )
            session.add(tagissueobj)
            session.flush()
    session.commit()
Esempio n. 4
0
    def test_delete_project_with_coloredtags_and_tagged_issues(self):
        """ Test the model when we delete a project with Colored tags and
        tagged issues. """

        # Create a project
        item = model.Project(
            user_id=1,  # pingou
            name="test",
            description="test project #1",
            hook_token="aaabbbiii",
        )
        self.session.add(item)
        self.session.commit()

        # Create two ColoredTags
        tagobj = model.TagColored(tag="Tag#1", project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        tagobj = model.TagColored(tag="Tag#2", project_id=1)
        self.session.add(tagobj)
        self.session.flush()

        # Create issues
        issue = model.Issue(
            id=pagure.lib.query.get_next_id(self.session, 1),
            project_id=1,
            title="Issue #1",
            content="Description #1",
            user_id=1,
            uid="Issue#1",
            private=False,
        )
        self.session.add(issue)
        self.session.commit()

        issue = model.Issue(
            id=pagure.lib.query.get_next_id(self.session, 1),
            project_id=1,
            title="Issue #2",
            content="Description #2",
            user_id=1,
            uid="Issue#2",
            private=False,
        )
        self.session.add(issue)
        self.session.commit()

        # Tag the issue
        tagissue = model.TagIssueColored(issue_uid="Issue#1", tag_id=1)
        self.session.add(tagissue)
        self.session.commit()

        tagissue = model.TagIssueColored(issue_uid="Issue#2", tag_id=2)
        self.session.add(tagissue)
        self.session.commit()

        self.assertEqual(self.session.query(model.Project).count(), 1)
        self.assertEqual(self.session.query(model.TagColored).count(), 2)
        self.assertEqual(self.session.query(model.Issue).count(), 2)

        project = (self.session.query(
            model.Project).filter(model.Project.id == 1).one())
        self.session.delete(project)
        self.session.commit()

        self.assertEqual(self.session.query(model.Project).count(), 0)
        self.assertEqual(self.session.query(model.TagColored).count(), 0)
        self.assertEqual(self.session.query(model.Issue).count(), 0)