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_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])
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])
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])
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): 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
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: