コード例 #1
0
ファイル: query.py プロジェクト: priestc/LibraryDSS
    def execute_query(library):
        """
        Run this query against the given library and return all the matching items.
        """
        from models import MetaData, Item

        for polarity, subclause in self.as_list:
            for key, operator, value in subclause:
                if is_date_key(key):
                    value = fuzzy_to_datetime(value)

                db_clause = MetaData.key == key
                if operator == 'exact':
                    db_clause = MetaData.value == value and db_clause
                elif operator in ['after', 'greaterthan']:
                    db_clause = MetaData.value > value and db_clause
                elif operator in ['before', 'lessthan']:
                    db_clause = MetaData.value < value and db_clause
                else:
                    raise NotImplementedError("no other operators implemented yet")

                if polarity == 'including':
                    items = items.filter(db_clause)
                elif polarity == 'excluding':
                    items = items.filter(not_(db_clause))

        return items
コード例 #2
0
ファイル: library.py プロジェクト: priestc/LibraryDSS
 def get_value(self):
     if is_date_key(self.key):
         return self.date_value
     return self.value
コード例 #3
0
ファイル: library.py プロジェクト: priestc/LibraryDSS
 def __init__(self, **kwargs):
     if is_date_key(kwargs['key']):
         kwargs['date_value'] = fuzzy_to_datetime(kwargs['value'])
     return super(MetaData, self).__init__(**kwargs)