Ignore:
Timestamp:
Sep 21, 2009 6:48:12 PM (15 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-2.00, version-3.01, version-3.02
Children:
ae0f69a
Parents:
adcbdaf
Message:

Looks like Dragon is being called correctly. Internals remain a bit messy.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/federation/topdl.py

    radcbdaf r69692a9  
    2222        elif getattr(a, '__iter__', None): return a
    2323        else: return [ a ]
     24
     25    def remove_attribute(self, key):
     26        to_del = None
     27        attrs = getattr(self, 'attribute', [])
     28        for i, a in enumerate(attrs):
     29            if a.attribute == key:
     30                to_del = i
     31                break
     32       
     33        if to_del: del attrs[i]
    2434
    2535    def get_attribute(self, key):
     
    384394            return e
    385395
    386     def __init__(self, substrates=[], elements=[]):
     396    def __init__(self, substrates=[], elements=[], attribute=[]):
    387397        self.substrates = [ self.init_class(Substrate, s) \
    388398                for s in self.make_list(substrates) ]
    389399        self.elements = [ self.init_element(e) \
    390400                for e in self.make_list(elements) ]
     401        self.attribute = [ self.init_class(Attribute, c) \
     402                for c in self.make_list(attribute) ]
    391403        self.incorporate_elements()
    392404
     
    419431    def clone(self):
    420432        return Topology(substrates=[s.clone() for s in self.substrates],
    421                 elements=[e.clone() for e in self.elements])
     433                elements=[e.clone() for e in self.elements],
     434                attribute=[a.clone() for a in self.attribute])
    422435
    423436
     
    432445        if self.elements:
    433446            rv['elements'] = [ s.to_dict() for s in self.elements ]
     447        if self.attribute:
     448            rv['attribute'] = [ s.to_dict() for s in self.attribute]
    434449        return rv
    435450
     
    519534
    520535        for k in e.keys():
    521             if isinstance(e[k], (basestring, int, float, long)):
     536            if isinstance(e[k], basestring):
    522537                rv += "<%s>%s</%s>" % (k, escape(e[k]), k)
     538            elif isinstance(e[k], (int, float, long)):
     539                rv += "<%s>%d</%s>" % (k, e[k], k)
    523540            elif isinstance(e[k], dict):
    524541                rv += "<%s>%s</%s>" % (k, dict_to_xml(e[k]), k)
     
    530547                        rv += "<%s>%s</%s>" % (k, escape(ee), k)
    531548            else:
    532                 raise ConsistencyError("What is this?? %s %s" % (k, e[k]))
     549                try:
     550                    rv += "<%s>%s</%s>" % (k, e[k], k)
     551                except Exception:
     552                    raise ConsistencyError("What is this?? %s %s" % (k, e[k]))
    533553        if top: rv += "</%s>" % top
    534554        return rv
     
    582602    return t
    583603
    584 def generate_portal_command_filter(cmd):
     604def generate_portal_command_filter(cmd, add_filter=None):
    585605    def rv(e):
    586606        s =""
    587607        if isinstance(e, Computer):
    588608            gw = e.get_attribute('portal')
    589             if gw:
     609            if add_filter and callable(add_filter):
     610                add = add_filter(e)
     611            else:
     612                add = True
     613            if gw and add:
    590614                s = "%s $%s\n" % (cmd, to_tcl_name(e.name[0]))
    591615        return s
Note: See TracChangeset for help on using the changeset viewer.