Exemplo n.º 1
0
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])
    ]
Exemplo n.º 2
0
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))
    ]
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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])
    ]
Exemplo n.º 5
0
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
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
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])]
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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))]