def test_walker_create_downloadtime_inverted(session): tag = tables.Tag('foo') tag.id = 1 fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 download_time = ~DownloadTime(datetime(2005, 6, 15, 7), datetime(2005, 6, 15, 9)) entries = walker.create(download_time, session) assert len(entries) == 7 assert entries == [ tables.DatabaseEntry(id=1, download_time=datetime(2005, 6, 15, 1)), tables.DatabaseEntry(id=2, starred=True, download_time=datetime(2005, 6, 15, 2)), tables.DatabaseEntry(id=3, path='/tmp', download_time=datetime(2005, 6, 15, 3)), tables.DatabaseEntry(id=4, starred=True, download_time=datetime(2005, 6, 15, 4)), tables.DatabaseEntry(id=5, tags=[tag], download_time=datetime(2005, 6, 15, 5)), tables.DatabaseEntry(id=6, starred=True, path='/tmp', download_time=datetime(2005, 6, 15, 6)), tables.DatabaseEntry(id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry]) ]
def test_walker_create_fitsheader_inverted(session): tag = tables.Tag('foo') tag.id = 1 entries = walker.create(~FitsHeaderEntry('INSTRUME', 'EIT'), session) assert len(entries) == 9 assert entries == [ tables.DatabaseEntry(id=1, download_time=datetime(2005, 6, 15, 1)), tables.DatabaseEntry(id=2, starred=True, download_time=datetime(2005, 6, 15, 2)), tables.DatabaseEntry(id=3, path='/tmp', download_time=datetime(2005, 6, 15, 3)), tables.DatabaseEntry(id=4, starred=True, download_time=datetime(2005, 6, 15, 4)), tables.DatabaseEntry(id=5, tags=[tag], download_time=datetime(2005, 6, 15, 5)), tables.DatabaseEntry(id=6, starred=True, path='/tmp', download_time=datetime(2005, 6, 15, 6)), tables.DatabaseEntry(id=7, download_time=datetime(2005, 6, 15, 7)), tables.DatabaseEntry(id=8, starred=True, download_time=datetime(2005, 6, 15, 8)), tables.DatabaseEntry(id=9, path='/tmp', download_time=datetime(2005, 6, 15, 9)) ]
def test_walker_create_complex_query(session): query = Tag('foo') & Starred() | ~Tag('foo') & ~Starred() entries = walker.create(query, session) assert len(entries) == 5 tag = tables.Tag('foo') tag.id = 1 fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 assert tables.DatabaseEntry(id=1, download_time=datetime(2005, 6, 15, 1)) in entries assert tables.DatabaseEntry(id=3, path='/tmp', download_time=datetime(2005, 6, 15, 3)) in entries assert tables.DatabaseEntry(id=7, download_time=datetime(2005, 6, 15, 7)) in entries assert tables.DatabaseEntry(id=9, path='/tmp', download_time=datetime(2005, 6, 15, 9)) in entries assert tables.DatabaseEntry(id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry ]) in entries
def test_walker_create_path_inverted(session): tag = tables.Tag('foo') tag.id = 1 fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 entries = walker.create(~Path('/tmp'), session) assert len(entries) == 7 assert entries == [ tables.DatabaseEntry(id=1, download_time=datetime(2005, 6, 15, 1)), tables.DatabaseEntry(id=2, starred=True, download_time=datetime(2005, 6, 15, 2)), tables.DatabaseEntry(id=4, starred=True, download_time=datetime(2005, 6, 15, 4)), tables.DatabaseEntry(id=5, tags=[tag], download_time=datetime(2005, 6, 15, 5)), tables.DatabaseEntry(id=7, download_time=datetime(2005, 6, 15, 7)), tables.DatabaseEntry(id=8, starred=True, download_time=datetime(2005, 6, 15, 8)), tables.DatabaseEntry(id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry]) ]
def test_walker_create_ored_query(session): entries = walker.create(Tag('foo') | Starred(), session) assert len(entries) == 6 tag = tables.Tag('foo') tag.id = 1 fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 assert tables.DatabaseEntry(id=2, starred=True, download_time=datetime(2005, 6, 15, 2)) in entries assert tables.DatabaseEntry(id=4, starred=True, download_time=datetime(2005, 6, 15, 4)) in entries assert tables.DatabaseEntry(id=5, tags=[tag], download_time=datetime(2005, 6, 15, 5)) in entries assert tables.DatabaseEntry(id=6, path='/tmp', starred=True, download_time=datetime(2005, 6, 15, 6)) in entries assert tables.DatabaseEntry(id=8, starred=True, download_time=datetime(2005, 6, 15, 8)) in entries assert tables.DatabaseEntry(id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry ]) in entries
def tag(self, database_entry, *tags): """Assign the given database entry the given tags. Raises ------ TypeError If no tags are given. sunpy.database.TagAlreadyAssignedError If at least one of the given tags is already assigned to the given database entry. """ if not tags: raise TypeError('at least one tag must be given') # avoid duplicates tag_names = set(tags) cmds = CompositeOperation() for tag_name in tag_names: try: tag = self.get_tag(tag_name) if tag in database_entry.tags: raise TagAlreadyAssignedError(database_entry, tag_names) except NoSuchTagError: # tag does not exist yet -> create it tag = tables.Tag(tag_name) cmd = commands.AddTag(self.session, database_entry, tag) if self._enable_history: cmds.add(cmd) else: cmd() if cmds: self._command_manager.do(cmds)
def test_walker_create_fitsheader(session): tag = tables.Tag('foo') tag.id = 1 entries = walker.create(FitsHeaderEntry('INSTRUME', 'EIT'), session) fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 assert len(entries) == 1 assert entries == [tables.DatabaseEntry( id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry])]
def test_walker_create_anded_query(session): entries = walker.create(Tag('foo') & Starred(), session) assert len(entries) == 1 tag = tables.Tag('foo') tag.id = 1 fits_header_entry = tables.FitsHeaderEntry('INSTRUME', 'EIT') fits_header_entry.id = 1 assert tables.DatabaseEntry( id=10, starred=True, tags=[tag], download_time=datetime(2005, 6, 15, 10), fits_header_entries=[fits_header_entry]) in entries
def test_walker_create_starred_false(session): entries = walker.create(~Starred(), session) tag = tables.Tag('foo') tag.id = 1 assert len(entries) == 5 assert entries == [ tables.DatabaseEntry(id=1, download_time=datetime(2005, 6, 15, 1)), tables.DatabaseEntry( id=3, path='/tmp', download_time=datetime(2005, 6, 15, 3)), tables.DatabaseEntry( id=5, tags=[tag], download_time=datetime(2005, 6, 15, 5)), tables.DatabaseEntry( id=7, download_time=datetime(2005, 6, 15, 7)), tables.DatabaseEntry( id=9, path='/tmp', download_time=datetime(2005, 6, 15, 9))]