Commit e8c49e4941a100bf05a78927b0980ae2bc9affcf

Authored by selurvedu
1 parent 2f743673

Rewrite get_id_from_object()

This change makes the function more reliable, also,
the error messages are now saner.
... ... @@ -457,10 +457,26 @@ def munch_dict(arg=None, data=False):
457 457
458 458
459 459 def get_id_from_object(obj):
460   - obj_id = re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', obj.get('title', ''))
461   - if not obj_id:
462   - obj_id = re.match(r'(^[filq]-[0-9a-fA-F]{8}): ', obj.get('description', ''))
463   - return obj_id.group(1)
  460 + regex = r'(^[filq]-[0-9a-fA-F]{8}): '
  461 +
  462 + title = obj.get('title', '')
  463 + if title:
  464 + if not isinstance(title, STR_TYPES):
  465 + raise TypeError('title must be one of %s' % str(STR_TYPES))
  466 + obj_id = re.match(regex, title)
  467 + if obj_id and len(obj_id.groups()) >= 1:
  468 + return obj_id.group(1)
  469 +
  470 + description = obj.get('description', '')
  471 + if description:
  472 + if not isinstance(description, STR_TYPES):
  473 + raise TypeError('description must be one of %s' % str(STR_TYPES))
  474 + obj_id = re.match(regex, description)
  475 + if obj_id and len(obj_id.groups()) >= 1:
  476 + return obj_id.group(1)
  477 +
  478 + raise VaueError('could not find object ID in "title": "%s", '
  479 + '"description": "%s"' % (title, description))
464 480
465 481
466 482 def get_id_from_string(string):
... ...
Please register or login to post a comment