Esempio n. 1
0
    def test_item_query(self):
        class Mock(SubjectSweepMonitor):
            SERVICE_NAME = "Mock"

        s1, ignore = Subject.lookup(self._db, Subject.DDC, "100", None)
        s2, ignore = Subject.lookup(self._db, Subject.TAG, None,
                                    "100 Years of Solitude")

        # By default, SubjectSweepMonitor handles every Subject
        # in the database.
        everything = Mock(self._db)
        eq_([s1, s2], everything.item_query().all())

        # But you can tell SubjectSweepMonitor to handle only Subjects
        # of a certain type.
        dewey_monitor = Mock(self._db, subject_type=Subject.DDC)
        eq_([s1], dewey_monitor.item_query().all())

        # You can also SubjectSweepMonitor to handle only Subjects
        # whose names or identifiers match a certain string.
        one_hundred_monitor = Mock(self._db, filter_string="100")
        eq_([s1, s2], one_hundred_monitor.item_query().all())

        specific_tag_monitor = Mock(self._db,
                                    subject_type=Subject.TAG,
                                    filter_string="Years")
        eq_([s2], specific_tag_monitor.item_query().all())
    def test_subject_query(self):
        s1, ignore = Subject.lookup(self._db, Subject.DDC, "100", None)
        s2, ignore = Subject.lookup(self._db, Subject.TAG, None,
                                    "100 Years of Solitude")

        dewey_monitor = SubjectSweepMonitor(self._db, "Test Monitor",
                                            Subject.DDC)
        eq_([s1], dewey_monitor.subject_query().all())

        one_hundred_monitor = SubjectSweepMonitor(self._db, "Test Monitor",
                                                  None, "100")
        eq_([s1, s2], one_hundred_monitor.subject_query().all())

        specific_tag_monitor = SubjectSweepMonitor(self._db, "Test Monitor",
                                                   Subject.TAG, "Years")
        eq_([s2], specific_tag_monitor.subject_query().all())
Esempio n. 3
0
 def __init__(self, _db=None, cmd_args=None):
     _db = _db or self._db
     args = self.parse_command_line(_db, cmd_args=cmd_args)
     self.identifier_type = args.identifier_type
     self.identifiers = args.identifiers
     subject_type = args.subject_type
     subject_identifier = args.subject_identifier
     subject_name = args.subject_name
     if not subject_name and not subject_identifier:
         raise ValueError(
             "Either subject-name or subject-identifier must be provided.")
     self.data_source = DataSource.lookup(_db, args.data_source)
     self.weight = args.weight
     self.subject, ignore = Subject.lookup(_db,
                                           subject_type,
                                           subject_identifier,
                                           subject_name,
                                           autocreate=args.create_subject)