예제 #1
0
    def handle(self, *args, **options):
        log = logging.getLogger("pdb.script.whois")

        # FIXME - ignore multiple args for now
        args = options.get("ref")

        try:
            (ref_tag, pk) = util.split_ref(args)
        except ValueError:
            log.error("Unknown query type '%s'" % (args))
            return
            # TODO
            raise CommandError("unk query")

        model = None

        # TODO needs the client whois typ resolver in a better place for reuse
        #      probably easiest to just map reftag to pk name
        if ref_tag in models.REFTAG_MAP:
            model = models.REFTAG_MAP[ref_tag]
            Serializer = serializers.REFTAG_MAP[ref_tag]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(pk=pk)

        elif ref_tag == "as":
            model = models.REFTAG_MAP["net"]
            Serializer = serializers.REFTAG_MAP["net"]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(asn=pk)

        #            data = cls(obj).data

        # TODO doesn't work on client
        # elif ref_tag == 'ixnets':

        if not model:
            msg = f"Unknown ref tag: {ref_tag}"
            log.error("Unknown ref tag: %s" % ref_tag)
            raise ValueError(msg)

        data = Serializer(obj, context={"user": AnonymousUser()}).data
        applicator = APIPermissionsApplicator(AnonymousUser())
        data = applicator.apply(data)
        fmt = WhoisFormat()
        fmt.print(obj._handleref.tag, data)
예제 #2
0
    def handle(self, *args, **options):
        log = logging.getLogger('pdb.script.whois')

        # FIXME - ignore multiple args for now
        args = options.get("ref")

        try:
            (ref_tag, pk) = util.split_ref(args)
        except ValueError:
            log.error("Unknown query type '%s'" % (args))
            return
            # TODO
            raise CommandError('unk query')

        model = None

        # TODO needs the client whois typ resolver in a better place for reuse
        #      probably easiest to just map reftag to pk name
        if ref_tag in models.REFTAG_MAP:
            model = models.REFTAG_MAP[ref_tag]
            Serializer = serializers.REFTAG_MAP[ref_tag]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(pk=pk)

        elif ref_tag == 'as':
            model = models.REFTAG_MAP['net']
            Serializer = serializers.REFTAG_MAP['net']
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(asn=pk)


#            data = cls(obj).data

# TODO doesn't work on client
# elif ref_tag == 'ixnets':

        if not model:
            msg = "Unknown ref tag: {}".format(ref_tag)
            log.error("Unknown ref tag: %s" % ref_tag)
            raise ValueError(msg)

        data = Serializer(obj, context={"user":AnonymousUser()}).data
        fmt = WhoisFormat()
        fmt. print(obj._handleref.tag, data)
예제 #3
0
    def handle(self, *args, **options):
        log = logging.getLogger('pdb.script.whois')

        # FIXME - ignore multiple args for now
        args = options.get("ref")

        try:
            (ref_tag, pk) = util.split_ref(args)
        except ValueError:
            log.error("Unknown query type '%s'" % (args))
            return
            # TODO
            raise CommandError('unk query')

        model = None

        # TODO needs the client whois typ resolver in a better place for reuse
        #      probably easiest to just map reftag to pk name
        if ref_tag in models.REFTAG_MAP:
            model = models.REFTAG_MAP[ref_tag]
            Serializer = serializers.REFTAG_MAP[ref_tag]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(pk=pk)

        elif ref_tag == 'as':
            model = models.REFTAG_MAP['net']
            Serializer = serializers.REFTAG_MAP['net']
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(asn=pk)

#            data = cls(obj).data

# TODO doesn't work on client
# elif ref_tag == 'ixnets':

        if not model:
            msg = "Unknown ref tag: {}".format(ref_tag)
            log.error("Unknown ref tag: %s" % ref_tag)
            raise ValueError(msg)

        data = Serializer(obj).data
        fmt = WhoisFormat()
        fmt.print(obj._handleref.tag, data)
예제 #4
0
def test_split_ref():
    assert ('asdf', 123) == util.split_ref('asdf123')
    assert ('asdf', 123) == util.split_ref('ASDF123')
    assert ('asdf', 123) == util.split_ref('asdf 123')
    assert ('asdf', 123) == util.split_ref('asdf-123')
예제 #5
0
def test_split_ref_exc():
    with pytest.raises(ValueError):
        util.split_ref('asdf123a')
    with pytest.raises(ValueError):
        util.split_ref('123asdf')
예제 #6
0
def test_split_ref():
    assert ('asdf', 123) == util.split_ref('asdf123')
    assert ('asdf', 123) == util.split_ref('ASDF123')
    assert ('asdf', 123) == util.split_ref('asdf 123')
    assert ('asdf', 123) == util.split_ref('asdf-123')
예제 #7
0
def test_split_ref_exc():
    with pytest.raises(ValueError):
        util.split_ref('asdf123a')
    with pytest.raises(ValueError):
        util.split_ref('123asdf')