Source code for mwxml.iteration.revision

import mwtypes

from ..errors import MalformedXML
from .user import User


[docs]class Revision(mwtypes.Revision): """ Revision metadata and text. See :class:`mwtypes.Revision` for a description of fields. """ @classmethod def from_element(cls, element): id = None timestamp = None user = None user_deleted = False minor = False comment = None comment_deleted = False text = None text_deleted = False bytes = None sha1 = None parent_id = None model = None format = None for sub_element in element: tag = sub_element.tag if tag == "id": id = int(sub_element.text) elif tag == "timestamp": timestamp = mwtypes.Timestamp(sub_element.text) elif tag == "contributor": user_deleted = sub_element.attr('deleted') is not None if not user_deleted: user = User.from_element(sub_element) elif tag == "minor": minor = True elif tag == "sha1": sha1 = sub_element.text elif tag == "parentid": parent_id = sub_element.text elif tag == "model": model = sub_element.text elif tag == "format": format = sub_element.text elif tag == "comment": comment_deleted = sub_element.attr('deleted') is not None if not comment_deleted: comment = sub_element.text elif tag == "text": text_deleted = sub_element.attr('deleted') is not None if not text_deleted: text = sub_element.text bytes = sub_element.attr('bytes') else: raise MalformedXML("Unexpected tag found when processing " + "a <revision>: '{0}'".format(tag)) deleted = cls.Deleted(comment=comment_deleted, text=text_deleted, user=user_deleted) return cls( id, timestamp, user=user, minor=minor, bytes=bytes, sha1=sha1, parent_id=parent_id, model=model, format=format, comment=comment, text=text, deleted=deleted )