X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Frecord.py;h=54c3f9f7ddbbf9023ac63e66184e993d14e141ed;hb=df2a7ea3511c2ae66fcb340d56a90e23ea81b406;hp=6cb9d37d198ba0daded0584d502ea302cbe3c03a;hpb=3109c266ca3a5df2364e52502479adcc2f995d68;p=sfa.git diff --git a/sfa/util/record.py b/sfa/util/record.py index 6cb9d37d..54c3f9f7 100644 --- a/sfa/util/record.py +++ b/sfa/util/record.py @@ -4,17 +4,14 @@ # TODO: Use existing PLC database methods? or keep this separate? ## -### $Id$ -### $URL$ - from types import StringTypes -from sfa.trust.gid import * +from sfa.trust.gid import GID -from sfa.util.rspec import * -from sfa.util.parameter import * -from sfa.util.namespace import get_authority +from sfa.util.parameter import Parameter +from sfa.util.xrn import get_authority from sfa.util.row import Row +from sfa.util.xml import XML class SfaRecord(Row): """ @@ -207,6 +204,22 @@ class SfaRecord(Row): """ return GID(string=self.gid) + ## + # Returns the value of a field + + def get_field(self, fieldname, default=None): + # sometimes records act like classes, and sometimes they act like dicts + try: + return getattr(self, fieldname) + except AttributeError: + try: + return self[fieldname] + except KeyError: + if default != None: + return default + else: + raise + ## # Returns a list of field names in this record. @@ -288,10 +301,9 @@ class SfaRecord(Row): """ recorddict = self.as_dict() filteredDict = dict([(key, val) for (key, val) in recorddict.iteritems() if key in self.fields.keys()]) - record = RecordSpec() - record.parseDict(filteredDict) + record = XML('') + record.parse_dict(filteredDict) str = record.toxml() - #str = xmlrpclib.dumps((dict,), allow_none=True) return str ## @@ -305,11 +317,8 @@ class SfaRecord(Row): """ #dict = xmlrpclib.loads(str)[0][0] - record = RecordSpec() - record.parseString(str) - record_dict = record.toDict() - sfa_dict = record_dict['record'] - self.load_from_dict(sfa_dict) + record = XML(str) + self.load_from_dict(record.todict()) ## # Dump the record to stdout