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()
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()
def test_archive_package_count(self): sub2 = Submission('Fedora', '16', 'i586', 'v1') db_session.add(sub2) db_session.flush() subp3 = SubmissionPackage(sub2.sub_id, self.today, 'python', '2.7', '3', '', 'i586', 'http://repo.url', 'voted') subp4 = SubmissionPackage(sub2.sub_id, self.today, 'chrome', '2.7', '3', '', 'i586', 'http://repo.url', 'voted') db_session.add_all([subp3, subp4]) db_session.flush() sub3 = Submission('Fedora', '16', 'i586', 'v1') db_session.add(sub3) db_session.flush() subp5 = SubmissionPackage(sub3.sub_id, self.today, 'python', '2.7', '3', '', 'i586', 'http://repo.url', 'voted') db_session.add(subp5) db_session.flush() update_archives(date.today()) self.assertEqual(len(PackageArchive.query.all()), 4) query = PackageArchive.query.filter_by(pkg_name='python', month=self.today.replace(day=1)) count = self.assertEqual(query.one().count, 2)
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)
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()
def setUp(self): super(TestArchivePackages, self).setUp() self.old_date = date.today() - timedelta(days=400) self.today = date.today() sub1 = Submission('openSUSE', '12.1', 'i586', 'POPCORN v0.0.1', self.old_date) db_session.add(sub1) db_session.flush() subp1 = SubmissionPackage(sub1.sub_id, self.old_date, 'python', '2.7', '3', '', 'i586', 'http://repo.url', 'voted') subp2 = SubmissionPackage(sub1.sub_id, self.old_date, 'chrome', '2.7', '3', '', 'i586', 'http://repo.url', 'voted') db_session.add_all([subp1, subp2]) db_session.flush() update_archives(self.old_date)
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
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
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() self.db_session = db_session