Ejemplo n.º 1
0
        def iovs(self, **kwargs):
            """
            Returns `amount` IOVs belonging to all Tags held in this Global Tag.
            For large Global Tags (which is most of them), VERY slow.
            Highly recommended to instead used `tags().get_members("tag_name").data()` to get a `list` of tag names,
            and then get IOVs from each Tag name.

            At some point, this method may replace the method currently used.
            """
            # join global_tag_map onto iov (where insertion time <= gt snapshot) by tag_name + return results
            # first get only the IOVs that belong to Tags that are contained by this Global Tag

            # get IOVs belonging to a Tag contained by this Global Tag
            tag_names = self.tags().get_members("tag_name").data()
            iovs_all_tags = self.session.query(IOV).filter(IOV.tag_name.in_(tag_names))
            iovs_all_tags = apply_filters(iovs_all_tags, IOV, **kwargs)
            amount = kwargs["amount"] if "amount" in kwargs.keys() else None
            iovs_all_tags = iovs_all_tags.limit(amount).subquery()

            # now, join Global Tag Map table onto IOVs
            iovs_gt_tags = self.session.query(GlobalTagMap.tag_name, iovs_all_tags.c.since,\
                                                    iovs_all_tags.c.payload_hash, iovs_all_tags.c.insertion_time)\
                                            .filter(GlobalTagMap.global_tag_name == self.name)\
                                            .join(iovs_all_tags, GlobalTagMap.tag_name == iovs_all_tags.c.tag_name)

            iovs_gt_tags = iovs_gt_tags.order_by(iovs_all_tags.c.since).all()

            column_names = ["tag_name", "since", "payload_hash", "insertion_time"]
            all_iovs = map(lambda row : dict(zip(column_names, row)), iovs_gt_tags)
            all_iovs = data_formats._dicts_to_orm_objects(IOV, all_iovs)

            return data_sources.json_data_node.make(all_iovs)
Ejemplo n.º 2
0
        def iovs(self, **kwargs):
            """
            Returns `amount` IOVs belonging to all Tags held in this Global Tag.
            For large Global Tags (which is most of them), VERY slow.
            Highly recommended to instead used `tags().get_members("tag_name").data()` to get a `list` of tag names,
            and then get IOVs from each Tag name.

            At some point, this method may replace the method currently used.
            """
            # join global_tag_map onto iov (where insertion time <= gt snapshot) by tag_name + return results
            # first get only the IOVs that belong to Tags that are contained by this Global Tag

            # get IOVs belonging to a Tag contained by this Global Tag
            tag_names = self.tags().get_members("tag_name").data()
            iovs_all_tags = self.session.query(IOV).filter(IOV.tag_name.in_(tag_names))
            iovs_all_tags = apply_filters(iovs_all_tags, IOV, **kwargs)
            amount = kwargs["amount"] if "amount" in kwargs.keys() else None
            iovs_all_tags = iovs_all_tags.limit(amount).subquery()

            # now, join Global Tag Map table onto IOVs
            iovs_gt_tags = self.session.query(GlobalTagMap.tag_name, iovs_all_tags.c.since,\
                                                    iovs_all_tags.c.payload_hash, iovs_all_tags.c.insertion_time)\
                                            .filter(GlobalTagMap.global_tag_name == self.name)\
                                            .join(iovs_all_tags, GlobalTagMap.tag_name == iovs_all_tags.c.tag_name)

            iovs_gt_tags = iovs_gt_tags.order_by(iovs_all_tags.c.since).all()

            column_names = ["tag_name", "since", "payload_hash", "insertion_time"]
            all_iovs = map(lambda row : dict(zip(column_names, row)), iovs_gt_tags)
            all_iovs = data_formats._dicts_to_orm_objects(IOV, all_iovs)

            return data_sources.json_data_node.make(all_iovs)
Ejemplo n.º 3
0
 def pending_tag_requests(self):
     if self.empty:
         return None
     # get a json_list of all global_tag_map requests associated with this global tag
     gt_map_requests = self.session.query(GlobalTagMapRequest.queue, GlobalTagMapRequest.record, GlobalTagMapRequest.label,\
                                             GlobalTagMapRequest.tag, GlobalTagMapRequest.status)\
                                         .filter(and_(GlobalTagMapRequest.queue == self.name, GlobalTagMapRequest.status.in_(["P", "R"]))).all()
     #column_names = ["queue", "tag", "record", "label", "status", "description", "submitter_id", "time_submitted", "last_edited"]
     column_names = ["queue", "record", "label", "tag", "status"]
     gt_map_requests = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), gt_map_requests)
     gt_map_requests = data_formats._dicts_to_orm_objects(GlobalTagMapRequest, gt_map_requests)
     return data_sources.json_data_node.make(gt_map_requests)
Ejemplo n.º 4
0
 def tags(self, **kwargs):
     """
     Returns `amount` *Global Tag Maps* belonging to this Global Tag.
     """
     kwargs["global_tag_name"] = self.name
     all_tags = self.session.query(GlobalTagMap.global_tag_name, GlobalTagMap.record, GlobalTagMap.label, GlobalTagMap.tag_name)
     all_tags = apply_filters(all_tags, GlobalTagMap, **kwargs)
     amount = kwargs["amount"] if "amount" in kwargs.keys() else None
     all_tags = all_tags.order_by(GlobalTagMap.tag_name).limit(amount).all()
     column_names = ["global_tag_name", "record", "label", "tag_name"]
     all_tags = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), all_tags)
     all_tags = data_formats._dicts_to_orm_objects(GlobalTagMap, all_tags)
     return data_sources.json_data_node.make(all_tags)
Ejemplo n.º 5
0
 def tags(self, **kwargs):
     """
     Returns `amount` *Global Tag Maps* belonging to this Global Tag.
     """
     kwargs["global_tag_name"] = self.name
     all_tags = self.session.query(GlobalTagMap.global_tag_name, GlobalTagMap.record, GlobalTagMap.label, GlobalTagMap.tag_name)
     all_tags = apply_filters(all_tags, GlobalTagMap, **kwargs)
     amount = kwargs["amount"] if "amount" in kwargs.keys() else None
     all_tags = all_tags.order_by(GlobalTagMap.tag_name).limit(amount).all()
     column_names = ["global_tag_name", "record", "label", "tag_name"]
     all_tags = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), all_tags)
     all_tags = data_formats._dicts_to_orm_objects(GlobalTagMap, all_tags)
     return data_sources.json_data_node.make(all_tags)
Ejemplo n.º 6
0
 def iovs(self, amount=10, valid=False):
     # join global_tag_map onto iov (where insertion time <= gt snapshot) by tag_name + return results
     valid_iovs_all_tags = self.session.query(IOV)
     if valid:
         valid_iovs_all_tags = valid_iovs_all_tags.filter(IOV.insertion_time < self.snapshot_time)
     valid_iovs_all_tags = valid_iovs_all_tags.subquery()
     valid_iovs_gt_tags = self.session.query(GlobalTagMap.tag_name, valid_iovs_all_tags.c.since,\
                                             valid_iovs_all_tags.c.payload_hash, valid_iovs_all_tags.c.insertion_time)\
                                     .join(valid_iovs_all_tags, GlobalTagMap.tag_name == valid_iovs_all_tags.c.tag_name)\
                                     .filter(GlobalTagMap.global_tag_name == self.name)\
                                     .order_by(valid_iovs_all_tags.c.insertion_time).limit(amount).all()
     column_names = ["tag_name", "since", "payload_hash", "insertion_time"]
     all_iovs = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), valid_iovs_gt_tags)
     all_iovs = data_formats._dicts_to_orm_objects(IOV, all_iovs)
     return data_sources.json_data_node.make(all_iovs)
Ejemplo n.º 7
0
 def tags(self, amount=10):
     """gt_maps = self.session.query(GlobalTagMap).filter(GlobalTagMap.global_tag_name == self.name).limit(amount).subquery()
     all_tags = self.session.query(gt_maps.c.record, gt_maps.c.label,\
                                   Tag.name, Tag.time_type, Tag.object_type,\
                                   Tag.synchronization, Tag.end_of_validity, Tag.description,\
                                   Tag.last_validated_time, Tag.insertion_time,\
                                   Tag.modification_time)\
                             .join(gt_maps, Tag.name == gt_maps.c.tag_name).order_by(Tag.name.asc()).limit(amount).all()"""
     all_tags = self.session.query(GlobalTagMap.global_tag_name, GlobalTagMap.record, GlobalTagMap.label, GlobalTagMap.tag_name)\
                             .filter(GlobalTagMap.global_tag_name == self.name)\
                             .order_by(GlobalTagMap.tag_name).limit(amount).all()
     column_names = ["global_tag_name", "record", "label", "tag_name"]
     all_tags = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), all_tags)
     all_tags = data_formats._dicts_to_orm_objects(GlobalTagMap, all_tags)
     return data_sources.json_data_node.make(all_tags)
Ejemplo n.º 8
0
 def tags_full(self, amount=10):
     tags = self.session.query(Tag).order_by(Tag.name).subquery()
     all_tags = self.session.query(GlobalTagMap.global_tag_name,\
                                   GlobalTagMap.record,\
                                   GlobalTagMap.label,\
                                   tags.c.name, tags.c.time_type, tags.c.object_type,\
                                   tags.c.synchronization, tags.c.end_of_validity, tags.c.description,\
                                   tags.c.last_validated_time, tags.c.insertion_time,\
                                   tags.c.modification_time)\
                             .join(tags, GlobalTagMap.tag_name == tags.c.name).filter(GlobalTagMap.global_tag_name == self.name)
     if amount != None:
         all_tags = all_tags.limit(amount)
     all_tags = all_tags.all()
     column_names = ["global_tag_name", "record", "label", "name", "time_type", "object_type", "synchronization",\
                     "end_of_validity", "description", "last_validated_time", "insertion_time", "modification_time"]
     all_tags = map(lambda row : dict(zip(column_names, map(to_timestamp, row))), all_tags)
     all_tags = data_formats._dicts_to_orm_objects(Tag, all_tags)
     return data_sources.json_data_node.make(all_tags)