Skip to content

Commit

Permalink
prevent exception on dimensions validation with undefined typed
Browse files Browse the repository at this point in the history
dim element (found by EIOPA test suite)
  • Loading branch information
Herm Fischer authored and Herm Fischer committed Jun 15, 2015
1 parent 8d31353 commit bf523bd
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions arelle/ValidateXbrlDimensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,18 +275,6 @@ def logDimAndFacts(modelDimValue):
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.prefixedName, value=modelDimValue.dimensionQname,
messageCodes=("xbrldie:TypedMemberNotTypedDimensionError", "xbrldie:ExplicitMemberNotExplicitDimensionError"))
if modelDimValue.isExplicit: # this test is required even when ExplicitMemberNotExplicitDimensionError is raised
memberConcept = modelDimValue.member
if memberConcept is None or not memberConcept.isGlobalDeclaration:
val.modelXbrl.error("xbrldie:ExplicitMemberUndefinedQNameError",
_("Context %(contextID)s explicit dimension %(dimension)s member %(value)s is not a global member item"),
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.dimensionQname, value=modelDimValue.memberQname)
elif val.modelXbrl.dimensionDefaultConcepts.get(dimensionConcept) == memberConcept:
val.modelXbrl.error("xbrldie:DefaultValueUsedInInstanceError",
_("Context %(contextID)s explicit dimension %(dimension)s member %(value)s is a default member item"),
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.dimensionQname, value=modelDimValue.memberQname)
elif modelDimValue.isTyped:
typedDomainConcept = dimensionConcept.typedDomainElement
problem = _("missing content")
Expand All @@ -306,6 +294,18 @@ def logDimAndFacts(modelDimValue):
_("Context %(contextID)s typed dimension %(dimension)s has %(error)s"),
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.dimensionQname, error=problem)
if modelDimValue.isExplicit: # this test is required even when ExplicitMemberNotExplicitDimensionError is raised
memberConcept = modelDimValue.member
if memberConcept is None or not memberConcept.isGlobalDeclaration:
val.modelXbrl.error("xbrldie:ExplicitMemberUndefinedQNameError",
_("Context %(contextID)s explicit dimension %(dimension)s member %(value)s is not a global member item"),
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.dimensionQname, value=modelDimValue.memberQname)
elif val.modelXbrl.dimensionDefaultConcepts.get(dimensionConcept) == memberConcept:
val.modelXbrl.error("xbrldie:DefaultValueUsedInInstanceError",
_("Context %(contextID)s explicit dimension %(dimension)s member %(value)s is a default member item"),
modelObject=logDimAndFacts(modelDimValue), contextID=cntx.id,
dimension=modelDimValue.dimensionQname, value=modelDimValue.memberQname)

for modelDimValue in cntx.errorDimValues:
dimensionConcept = modelDimValue.dimension
Expand Down

0 comments on commit bf523bd

Please sign in to comment.