Exemplo n.º 1
0
def update_archives(arc_month=LAST_MONTH):
    """Archives packages of a month, by default: last month"""
    query = db_session.query(SubPac.pkg_name, SubPac.pkg_version,
                             SubPac.pkg_release, SubPac.pkg_arch,
                             SubPac.vendor_name, SubPac.pkg_status,
                             Sub.distro_name, Sub.distro_version,
                             func.min(SubPac.sub_date),
                             func.count('*').label('count')
                             ).join(Sub)

    arcs = query.filter(extract('month', SubPac.sub_date) == arc_month.month,
                        extract('year', SubPac.sub_date) == arc_month.year
                        ).group_by(extract('month', SubPac.sub_date),
                                   extract('year', SubPac.sub_date),
                                   SubPac.pkg_name, SubPac.pkg_version,
                                   SubPac.pkg_release, SubPac.pkg_arch,
                                   SubPac.vendor_name,
                                   SubPac.pkg_status, Sub.distro_name,
                                   Sub.distro_version).all()
    pkg_archives = []
    for pkg in arcs:
        pkg_archive = PackageArchive(*pkg)
        pkg_archive.month = pkg_archive.month.replace(day=1)
        pkg_archives.append(pkg_archive)

    db_session.add_all(pkg_archives)
    db_session.commit()
Exemplo n.º 2
0
 def init_db(self):
     db_session.add_all([Arch('noarch'), Arch('i586'), Arch('i686'),
                         Arch('i486'), Arch('i386'), Arch('x86_64'),
                         Arch('ppc'), Arch('ppc64'), Arch('s390'),
                         PackageStatus('voted'), PackageStatus('nofiles'),
                         PackageStatus('recent'), PackageStatus('old')])
     db_session.commit()
Exemplo n.º 3
0
    def test_submission_creation(self):
        self.assertEqual(Submission.query.all(), [])

        sub = Submission('openSUSE', '12.1', 'i586', 'POPCORN v0.0.1')
        db_session.add(sub)
        db_session.commit()

        self.assertEqual(Submission.query.all(), [sub])
Exemplo n.º 4
0
    def test_system_creation(self):
        self.assertEqual(System.query.all(), [])

        sys = System('hwuuid')
        db_session.add(sys)
        db_session.commit()

        self.assertEqual(System.query.all(), [sys])
Exemplo n.º 5
0
    def test_submission_creation(self):
        self.assertEqual(Submission.query.all(), [])

        sub = Submission('openSUSE', '12.1', 'i586', 'POPCORN v0.0.1')
        db_session.add(sub)
        db_session.commit()

        self.assertEqual(Submission.query.all(), [sub])
Exemplo n.º 6
0
    def test_system_creation(self):
        self.assertEqual(System.query.all(), [])

        sys = System('hwuuid')
        db_session.add(sys)
        db_session.commit()

        self.assertEqual(System.query.all(), [sys])
Exemplo n.º 7
0
    def test_submission_creation(self):
        sub = Submission("hw_uuid1", "POPCORN v0.0.1")

        s1 = System.query.first()
        self.assertEqual(s1.submissions, [])

        db_session.add(sub)
        db_session.commit()

        self.assertEqual(Submission.query.all(), [sub])
        self.assertEqual(s1.submissions, [sub])
Exemplo n.º 8
0
    def test_system_last_submission(self):
        sub1 = Submission("hw_uuid1", "P1", date.today())
        sub2 = Submission("hw_uuid2", "P1", date.today() - timedelta(days=31 * 2))
        sub3 = Submission("hw_uuid1", "P1", date.today() - timedelta(days=31 * 3))

        s1 = System.query.first()
        self.assertIsNone(s1.last_submission)

        db_session.add_all([sub1, sub2, sub3])
        db_session.commit()

        self.assertEqual([sub1, sub3], s1.submissions)
        self.assertEqual(sub1, s1.last_submission)
Exemplo n.º 9
0
 def init_db(self):
     db_session.add_all(
         [
             Arch("noarch"),
             Arch("i586"),
             Arch("i686"),
             Arch("i486"),
             Arch("i386"),
             Arch("x86_64"),
             Arch("ppc"),
             Arch("ppc64"),
             Arch("s390"),
             PackageStatus("voted"),
             PackageStatus("nofiles"),
             PackageStatus("recent"),
             PackageStatus("old"),
         ]
     )
     db_session.commit()
Exemplo n.º 10
0
    def setUp(self):
        engine = create_engine("sqlite:///:memory:")
        # engine = create_engine('sqlite:///test.db')

        event.listen(engine, "connect", _fk_pragma_on_connect)
        db_session.configure(bind=engine)

        Base.metadata.create_all(bind=engine)

        db_session.add_all([Arch("i586"), Arch("x86_64"), Arch("noarch")])
        db_session.add_all([Distro("Fedora", "16"), Distro("openSUSE", "12.1")])
        db_session.add_all(
            [PackageStatus("voted"), PackageStatus("recent"), PackageStatus("no-files"), PackageStatus("old")]
        )
        db_session.add(Vendor("http://repo.url"))
        db_session.flush()

        # system is dependent on both arches and distros already being in the db
        db_session.add_all([System("hw_uuid1", "i586", "Fedora", "16"), System("hw_uuid2", "i586", "openSUSE", "12.1")])
        db_session.commit()

        self.db_session = db_session
Exemplo n.º 11
0
    def setUp(self):
        engine = create_engine('sqlite:///:memory:')
        # engine = create_engine('sqlite:///test.db')

        event.listen(engine, 'connect', _fk_pragma_on_connect)
        db_session.configure(bind=engine)

        Base.metadata.create_all(bind=engine)

        db_session.add_all([Arch('i586'), Arch('x86_64'), Arch('noarch')])
        db_session.add_all([Distro('Fedora', '16'),
                           Distro('openSUSE', '12.1')])
        db_session.add_all([PackageStatus('voted'), PackageStatus('recent'),
                            PackageStatus('no-files'), PackageStatus('old')])
        db_session.add(Vendor('http://repo.url'))
        db_session.flush()

        # system is dependent on both arches and distros already being
        # in the db
        db_session.add_all([System('hw_uuid1', 'i586', 'Fedora', '16'),
                            System('hw_uuid2', 'i586', 'openSUSE', '12.1')])
        db_session.commit()

        self.db_session = db_session
Exemplo n.º 12
0
            vendor = Vendor(vendor)
            db_session.add(vendor)
            try:
                db_session.flush()
            except DataError:  # TODO mail this to the admins
                raise
            except IntegrityError, e:
                print str(e)

        sp = SubmissionPackage(submission.sub_id, date.today(), name, version,
                               release, epoch, arch, vendor.vendor_name,
                               status)
        db_session.add(sp)

    try:
        db_session.commit()
    except DataError:  # TODO mail this to the admins
        raise


def _can_submit(system):
    """Checks the Submission interval for this System

    :system: a System object

    If the interval has elapsed or there are no previous submissions, it
    will return True, otherwise returns False.

    """
    delta = date.today() - system.last_sub_date
    if SUBMISSION_INTERVAL < delta.days: