class SidebarsByValEntry(XMLElement):
    _xml_tag = 'entry'
    _xml_namespace = namespace
    _xml_document = ConferenceDocument

    entity = XMLAttribute('entity', type=str, required=True, test_equal=False)
    state = XMLAttribute('state', type=State, required=False, test_equal=False)

    conference_description = XMLElementChild('conference_description', type=ConferenceDescription, required=False, test_equal=True)
    host_info = XMLElementChild('host_info', type=HostInfo, required=False, test_equal=True)
    conference_state = XMLElementChild('conference_state', type=ConferenceState, required=False, test_equal=True)
    users = XMLElementChild('users', type=Users, required=False, test_equal=True)
    sidebars_by_ref = XMLElementChild('sidebars_by_ref', type=SidebarsByRef, required=False, test_equal=True)
    sidebars_by_val = XMLElementChild('sidebars_by_val', type=SidebarsByVal, required=False, test_equal=True)
    
    def __init__(self, entity, state='full', version=None, conference_description=None, host_info=None, conference_state=None, users=None, sidebars_by_ref=None, sidebars_by_val=None):
        XMLElement.__init__(self)
        self.entity = entity
        self.state = state
        self.version = version
        self.conference_description = conference_description
        self.host_info = host_info
        self.conference_state = conference_state
        self.users = users
        self.sidebars_by_ref = sidebars_by_ref
        self.sidebars_by_val = sidebars_by_val
        if self.state == "full" and (self.conference_description is None or self.users is None):
            raise ValidationError("A full conference document must at least include the <conference-description> and <users> child elements.")
Example #2
0
class Replaces(XMLEmptyElement):
    _xml_tag = 'replaces'
    _xml_namespace = namespace
    _xml_document = DialogInfoDocument

    call_id = XMLAttribute('call_id',
                           xmlname='call-id',
                           type=str,
                           required=True,
                           test_equal=True)
    local_tag = XMLAttribute('local_tag',
                             xmlname='local-tag',
                             type=str,
                             required=True,
                             test_equal=True)
    remote_tag = XMLAttribute('remote_tag',
                              xmlname='remote-tag',
                              type=str,
                              required=True,
                              test_equal=True)

    def __init__(self, call_id, local_tag, remote_tag):
        XMLEmptyElement.__init__(self)
        self.call_id = call_id
        self.local_tag = local_tag
        self.remote_tag = remote_tag
class Endpoint(XMLListElement):
    _xml_tag = 'endpoint'
    _xml_namespace = namespace
    _xml_document = ConferenceDocument
    _xml_item_type = Media

    entity = XMLAttribute('entity', type=str, required=True, test_equal=False)
    state = XMLAttribute('state', type=State, required=False, test_equal=False)

    display_text = XMLElementChild('display_text', type=DisplayText, required=False, test_equal=True)
    referred = XMLElementChild('referred', type=Referred, required=False, test_equal=True)
    status = XMLElementChild('status', type=EndpointStatus, required=False, test_equal=True)
    joining_method = XMLElementChild('joining_method', type=JoiningMethod, required=False, test_equal=True)
    joining_info = XMLElementChild('joining_info', type=JoiningInfo, required=False, test_equal=True)
    disconnection_method = XMLElementChild('disconnection_method', type=DisconnectionMethod, required=False, test_equal=True)
    disconnection_info = XMLElementChild('disconnection_info', type=DisconnectionInfo, required=False, test_equal=True)
    call_info = XMLElementChild('call_info', type=CallInfo, required=False, test_equal=True)

    def __init__(self, entity, state='full', display_text=None, referred=None, status=None, joining_method=None, joining_info=None, disconnection_method=None, disconnection_info=None, call_info=None, media=[]):
        XMLListElement.__init__(self)
        self.entity = entity
        self.state = state
        self.display_text = display_text
        self.referred = referred
        self.status = status
        self.joining_method = joining_method
        self.joining_info = joining_info
        self.disconnection_method = disconnection_method
        self.disconnection_info = disconnection_info
        self.call_info = call_info
        self.update(media)

    def __repr__(self):
        args = ('entity', 'state', 'display_text', 'referred', 'status', 'joining_method', 'joining_info', 'disconnection_method', 'disconnection_info', 'call_info')
        return "%s(%s, media=%r)" % (self.__class__.__name__, ', '.join("%s=%r" % (name, getattr(self, name)) for name in args), list(self))
Example #4
0
class Mood(XMLStringListElement, PersonExtension):
    _xml_tag = 'mood'
    _xml_namespace = namespace
    _xml_document = PIDFDocument
    _xml_extension_type = MoodElement
    _xml_children_order = {RPIDNote.qname: 0}
    _xml_item_registry = MoodRegistry
    _xml_item_other_type = RPIDOther
    _xml_item_extension_type = MoodElement

    id = XMLAttribute('id', type=str, required=False, test_equal=True)
    since = XMLAttribute('since', xmlname='from', type=DateTime, required=False, test_equal=True)
    until = XMLAttribute('until', type=DateTime, required=False, test_equal=True)

    _note_map = NoteMap()

    def __init__(self, id=None, since=None, until=None, moods=[], notes=[]):
        XMLElement.__init__(self)
        self.id = id
        self.since = since
        self.until = until
        self.update(moods)
        self.notes.update(notes)

    @property
    def notes(self):
        return NoteList(self, RPIDNote)

    def __eq__(self, other):
        if isinstance(other, Mood):
            return super(Mood, self).__eq__(other) and self.notes == other.notes
        else:
            return NotImplemented

    def __repr__(self):
        return '%s(%r, %r, %r, %r, %r)' % (self.__class__.__name__, self.id, self.since, self.until, list(self), list(self.notes))

    def _parse_element(self, element):
        super(Mood, self)._parse_element(element)
        self.notes._parse_element(element)

    def _build_element(self):
        super(Mood, self)._build_element()
        self.notes._build_element()

    def add(self, mood):
        if isinstance(mood, basestring):
            if mood in self._xml_item_registry.names:
                mood = self._xml_item_registry.class_map[mood]()
            else:
                mood = self._xml_item_other_type.from_string(mood)
        unknown_mood = self._xml_item_registry.class_map['unknown']()
        if mood == unknown_mood or unknown_mood in self._element_map.itervalues():
            self.clear()
        super(Mood, self).add(mood)

    def check_validity(self):
        if not self:
            raise ValidationError("Mood element must have at least one value")
        super(Mood, self).check_validity()
Example #5
0
class Document(XMLElement):
    _xml_tag = 'document'
    _xml_namespace = namespace
    _xml_document = XCAPDiffDocument

    selector = XMLElementID('selector', xmlname='sel', type=XCAPURI, required=True, test_equal=True)
    new_etag = XMLAttribute('new_etag', xmlname='new-etag', type=str, required=False, test_equal=True)
    previous_etag = XMLAttribute('previous_etag', xmlname='previous-etag', type=str, required=False, test_equal=True)
    body_not_changed = XMLElementChild('body_not_changed', type=BodyNotChanged, required=False, test_equal=True)

    def __init__(self, selector, new_etag=None, previous_etag=None):
        XMLElement.__init__(self)
        self.selector = selector
        self.new_etag = new_etag
        self.previous_etag = previous_etag

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__, self.selector, self.new_etag, self.previous_etag)

    @property
    def empty_body(self):
        return self.body_not_changed is not None

    @empty_body.setter
    def empty_body(self, body_not_changed):
        if body_not_changed:
            self.body_not_changed = BodyNotChanged()
        else:
            self.body_not_changed = None
class User(XMLListElement):
    _xml_tag = 'user'
    _xml_namespace = namespace
    _xml_document = ConferenceDocument
    _xml_item_type = Endpoint
    _xml_extension_type = UserExtension

    entity = XMLAttribute('entity', type=str, required=True, test_equal=False)
    state = XMLAttribute('state', type=State, required=False, test_equal=False)

    display_text = XMLElementChild('display_text', type=DisplayText, required=False, test_equal=True)
    associated_aors = XMLElementChild('associated_aors', type=AssociatedAors, required=False, test_equal=True)
    roles = XMLElementChild('roles', type=Roles, required=False, test_equal=True)
    languages = XMLElementChild('languages', type=Languages, required=False, test_equal=True)
    cascaded_focus = XMLElementChild('cascaded_focus', type=CascadedFocus, required=False, test_equal=True)

    def __init__(self, entity, state='full', display_text=None, associated_aors=None, roles=None, languages=None, cascaded_focus=None, endpoints=[]):
        XMLListElement.__init__(self)
        self.entity = entity
        self.state = state
        self.display_text = display_text
        self.associated_aors = associated_aors
        self.roles = roles
        self.languages = languages
        self.cascaded_focus = cascaded_focus
        self.update(endpoints)

    def __repr__(self):
        args = ('entity', 'state', 'display_text', 'associated_aors', 'roles', 'languages', 'cascaded_focus')
        return "%s(%s, endpoints=%r)" % (self.__class__.__name__, ', '.join("%s=%r" % (name, getattr(self, name)) for name in args), list(self))
Example #7
0
class Sphere(XMLElement, PersonExtension):
    _xml_tag = 'sphere'
    _xml_namespace = namespace
    _xml_document = PIDFDocument

    id = XMLAttribute('id', type=ID, required=False, test_equal=True)
    since = XMLAttribute('since',
                         xmlname='from',
                         type=DateTime,
                         required=False,
                         test_equal=True)
    until = XMLAttribute('until',
                         type=DateTime,
                         required=False,
                         test_equal=True)
    value = XMLStringChoiceChild('value',
                                 registry=SphereRegistry,
                                 extension_type=SphereElement)

    def __init__(self, value=None, id=None, since=None, until=None):
        XMLElement.__init__(self)
        self.id = id
        self.since = since
        self.until = until
        self.value = value

    def __repr__(self):
        return '%s(%r, %r, %r, %r)' % (self.__class__.__name__, self.value,
                                       self.id, self.since, self.until)
Example #8
0
class List(XMLListRootElement):
    _xml_tag = 'list'
    _xml_namespace = namespace
    _xml_document = RLMIDocument
    _xml_item_type = (Name, Resource)

    uri = XMLElementID('uri', type=AnyURI, required=True, test_equal=True)
    version = XMLAttribute('version',
                           type=UnsignedInt,
                           required=True,
                           test_equal=True)
    full_state = XMLAttribute('full_state',
                              xmlname='fullState',
                              type=Boolean,
                              required=True,
                              test_equal=True)
    cid = XMLAttribute('cid', type=str, required=False, test_equal=True)

    def __init__(self, uri, version, full_state, cid=None, items=[]):
        XMLListElement.__init__(self)
        self.uri = uri
        self.version = version
        self.full_state = full_state
        self.cid = cid
        self.update(items)

    def __repr__(self):
        return '%s(%r, version=%r, full_state=%r, cid=%r, items=%r)' % (
            self.__class__.__name__, self.uri, self.version, self.full_state,
            self.cid, list(self))
Example #9
0
class UserInput(XMLStringElement, ServiceExtension, PersonExtension,
                DeviceExtension):
    _xml_tag = 'user-input'
    _xml_namespace = rpid_namespace
    _xml_application = PIDFApplication
    _xml_lang = False
    _xml_value_type = UserInputValue

    id = XMLAttribute('id', type=str, required=False, test_equal=True)
    last_input = XMLAttribute('last_input',
                              xmlname='last-input',
                              type=Timestamp,
                              required=False,
                              test_equal=True)
    idle_threshold = XMLAttribute('idle_threshold',
                                  xmlname='idle-threshold',
                                  type=UnsignedLong,
                                  required=False,
                                  test_equal=True)

    def __init__(self,
                 value='active',
                 id=None,
                 last_input=None,
                 idle_threshold=None):
        XMLStringElement.__init__(self, value)
        self.id = id
        self.last_input = last_input
        self.idle_threshold = idle_threshold
class Dialog(XMLElement):
    _xml_tag = 'dialog'
    _xml_namespace = namespace
    _xml_document = DialogInfoDocument

    id = XMLElementID('id', type=str, required=True, test_equal=True)

    call_id = XMLAttribute('call_id', xmlname='call-id', type=str, required=False, test_equal=True)
    local_tag = XMLAttribute('local_tag', xmlname='local-tag', type=str, required=False, test_equal=True)
    remote_tag = XMLAttribute('remote_tag', xmlname='remote-tag', type=str, required=False, test_equal=True)
    direction = XMLAttribute('direction', type=DirectionValue, required=False, test_equal=True)

    state = XMLElementChild('state', type=DialogState, required=True, test_equal=True)
    duration = XMLElementChild('duration', type=Duration, required=False, test_equal=True)
    replaces = XMLElementChild('replaces', type=Replaces, required=False, test_equal=True)
    referred_by = XMLElementChild('referred_by', type=ReferredBy, required=False, test_equal=True)
    local = XMLElementChild('local', type=Local, required=False, test_equal=True)
    remote = XMLElementChild('remote', type=Remote, required=False, test_equal=True)

    def __init__(self, id, state, call_id=None, local_tag=None, remote_tag=None, direction=None, duration=None, replaces=None, referred_by=None, local=None, remote=None):
        XMLElement.__init__(self)
        self.id = id
        self.state = state
        self.call_id = call_id
        self.local_tag = local_tag
        self.remote_tag = remote_tag
        self.direction = direction
        self.duration = duration
        self.replaces = replaces
        self.referred_by = referred_by
        self.local = local
        self.remote = remote
Example #11
0
class Element(XMLElement):
    _xml_tag = 'element'
    _xml_namespace = namespace
    _xml_application = XCAPDiffApplication

    selector = XMLAttribute('selector',
                            xmlname='sel',
                            type=XCAPURI,
                            required=True,
                            test_equal=True)
    exists = XMLAttribute('exists',
                          type=Boolean,
                          required=False,
                          test_equal=True)
    _xml_id = selector

    def __init__(self, selector, exists=None):
        XMLElement.__init__(self)
        self.selector = selector
        self.exists = exists

    def _parse_element(self, element, *args, **kwargs):
        pass

    def _build_element(self, *args, **kwargs):
        pass

    def __repr__(self):
        return '%s(%r, %r)' % (self.__class__.__name__, self.selector,
                               self.exists)

    __str__ = __repr__
class DialogState(XMLStringElement):
    _xml_tag = 'state'
    _xml_namespace = namespace
    _xml_document = DialogInfoDocument
    _xml_value_type = DialogStateValue

    code = XMLAttribute('code', type=int, required=False, test_equal=True)
    event = XMLAttribute('event', type=DialogEventValue, required=False, test_equal=True)
Example #13
0
class Privacy(XMLElement, PersonExtension):
    __metaclass__ = PrivacyType

    _xml_tag = 'privacy'
    _xml_namespace = namespace
    _xml_document = PIDFDocument
    _xml_children_order = {RPIDNote.qname: 0,
                           AudioPrivacy.qname: 1,
                           TextPrivacy.qname: 2,
                           VideoPrivacy.qname: 3}

    id = XMLAttribute('id', type=str, required=False, test_equal=True)
    since = XMLAttribute('since', xmlname='from', type=DateTime, required=False, test_equal=True)
    until = XMLAttribute('until', type=DateTime, required=False, test_equal=True)

    audio = XMLElementChild('audio', type=AudioPrivacy, required=False, test_equal=True)
    text = XMLElementChild('text', type=TextPrivacy, required=False, test_equal=True)
    video = XMLElementChild('video', type=VideoPrivacy, required=False, test_equal=True)
    unknown = property(lambda self: all(getattr(self, name) is None for name in self._privacy_attributes))

    _note_map = NoteMap()

    def __init__(self, id=None, since=None, until=None, notes=[], audio=False, text=False, video=False):
        super(Privacy, self).__init__()
        self.id = id
        self.since = since
        self.until = until
        self.audio = audio
        self.text = text
        self.video = video
        self.notes.update(notes)

    @property
    def notes(self):
        return NoteList(self, RPIDNote)

    def __eq__(self, other):
        if isinstance(other, Privacy):
            return super(Privacy, self).__eq__(other) and self.notes == other.notes
        else:
            return NotImplemented

    def __repr__(self):
        return '%s(%r, %r, %r, %r, %r, %r, %r)' % (self.__class__.__name__, self.id, self.since, self.until, list(self.notes), self.audio, self.text, self.video)

    def _parse_element(self, element):
        self.notes._parse_element(element)

    def _build_element(self):
        if self.unknown:
            if self.element.find('{%s}unknown' % self._xml_namespace) is None:
                etree.SubElement(self.element, '{%s}unknown' % self._xml_namespace, nsmap=self._xml_document.nsmap)
        else:
            unknown_element = self.element.find('{%s}unknown' % self._xml_namespace)
            if unknown_element is not None:
                self.element.remove(unknown_element)
        self.notes._build_element()
Example #14
0
class PlaceType(XMLElement, PersonExtension):
    _xml_tag = 'place-type'
    _xml_namespace = namespace
    _xml_document = PIDFDocument
    _xml_children_order = {RPIDNote.qname: 0}

    id = XMLAttribute('id', type=str, required=False, test_equal=True)
    since = XMLAttribute('since',
                         xmlname='from',
                         type=DateTime,
                         required=False,
                         test_equal=True)
    until = XMLAttribute('until',
                         type=DateTime,
                         required=False,
                         test_equal=True)
    value = XMLStringChoiceChild('value',
                                 other_type=RPIDOther,
                                 extension_type=PlaceTypeElement)

    _note_map = NoteMap()

    def __init__(self,
                 id=None,
                 since=None,
                 until=None,
                 placetype=None,
                 notes=[]):
        super(PlaceType, self).__init__()
        self.id = id
        self.since = since
        self.until = until
        self.value = placetype
        self.notes.update(notes)

    @property
    def notes(self):
        return NoteList(self, RPIDNote)

    def __eq__(self, other):
        if isinstance(other, PlaceType):
            return super(PlaceType,
                         self).__eq__(other) and self.notes == other.notes
        else:
            return NotImplemented

    def __repr__(self):
        return '%s(%r, %r, %r, %r, %r)' % (self.__class__.__name__, self.id,
                                           self.since, self.until, self.value,
                                           list(self.notes))

    def _parse_element(self, element):
        self.notes._parse_element(element)

    def _build_element(self):
        self.notes._build_element()
Example #15
0
class Document(XMLElement):
    _xml_tag = 'document'
    _xml_namespace = namespace
    _xml_application = XCAPDiffApplication

    selector = XMLAttribute('selector',
                            xmlname='sel',
                            type=XCAPURI,
                            required=True,
                            test_equal=True)
    new_etag = XMLAttribute('new_etag',
                            xmlname='new-etag',
                            type=str,
                            required=False,
                            test_equal=True)
    previous_etag = XMLAttribute('previous_etag',
                                 xmlname='previous-etag',
                                 type=str,
                                 required=False,
                                 test_equal=True)
    body_not_changed = XMLElementChild('body_not_changed',
                                       type=BodyNotChanged,
                                       required=False,
                                       test_equal=True)
    _xml_id = selector

    def __init__(self, selector, new_etag=None, previous_etag=None):
        XMLElement.__init__(self)
        self.selector = selector
        self.new_etag = new_etag
        self.previous_etag = previous_etag

    def _parse_element(self, element, *args, **kwargs):
        pass

    def _build_element(self, *args, **kwargs):
        pass

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__, self.selector,
                                   self.new_etag, self.previous_etag)

    __str__ = __repr__

    def _get_empty_body(self):
        return self.body_not_changed is not None

    def _set_empty_body(self, body_not_changed):
        if body_not_changed:
            self.body_not_changed = BodyNotChanged()
        else:
            self.body_not_changed = None

    empty_body = property(_get_empty_body, _set_empty_body)
    del _get_empty_body, _set_empty_body
Example #16
0
class Param(XMLEmptyElement):
    _xml_tag = 'param'
    _xml_namespace = namespace
    _xml_document = DialogInfoDocument

    pname = XMLAttribute('pname', type=str, required=True, test_equal=True)
    pval = XMLAttribute('pval', type=str, required=True, test_equal=True)

    def __init__(self, pname, pval):
        XMLEmptyElement.__init__(self)
        self.pname = pname
        self.pval = pval
Example #17
0
class DialogInfo(XMLListRootElement):
    content_type = "application/dialog-info+xml"

    _xml_tag = 'dialog-info'
    _xml_namespace = namespace
    _xml_application = DialogInfoApplication
    _xml_schema_file = 'dialog-info.xsd'
    _xml_children_order = {Dialog.qname: 0, None: 1}

    version = XMLAttribute('version',
                           type=VersionValue,
                           required=True,
                           test_equal=True)
    state = XMLAttribute('state',
                         type=StateValue,
                         required=True,
                         test_equal=True)
    entity = XMLAttribute('entity', type=str, required=True, test_equal=True)

    def __init__(self, version, state, entity, dialogs=[]):
        XMLListRootElement.__init__(self)
        self.version = version
        self.state = state
        self.entity = entity
        self[0:0] = dialogs

    def _build_element(self, *args, **kwargs):
        for child in self:
            child.to_element(*args, **kwargs)

    def _del_item(self, value):
        self.element.remove(value.element)

    def _parse_element(self, element, *args, **kwargs):
        for child in element:
            child_cls = self._xml_application.get_element(child.tag)
            if child_cls is not None and (
                    True if child_cls is [c for c in [Dialog]] else False):
                try:
                    list.append(self,
                                child_cls.from_element(child, *args, **kwargs))
                except ValidationError:
                    pass

    def _add_item(self, value):
        if not isinstance(value, (Dialog)):
            raise TypeError("dialog-info element can't contain %s element" %
                            value.__class__.__name__)
        self._insert_element(value.element)
        return value
Example #18
0
class StatusIcon(XMLStringElement, ServiceExtension, PersonExtension):
    _xml_tag = 'status-icon'
    _xml_namespace = namespace
    _xml_document = PIDFDocument

    id = XMLAttribute('id', type=str, required=False, test_equal=True)
    since = XMLAttribute('since', xmlname='from', type=DateTime, required=False, test_equal=True)
    until = XMLAttribute('until', type=DateTime, required=False, test_equal=True)

    def __init__(self, value=None, id=None, since=None, until=None):
        XMLStringElement.__init__(self, value)
        self.id = id
        self.since = since
        self.until = until
class Note(XMLStringElement):
    _xml_tag = 'note'
    _xml_namespace = pidf_namespace
    _xml_application = PIDFApplication
    _xml_lang = True

    since = XMLAttribute('since',
                         xmlname='from',
                         type=util.Timestamp,
                         required=False,
                         test_equal=True)
    until = XMLAttribute('until',
                         type=util.Timestamp,
                         required=False,
                         test_equal=True)
Example #20
0
class IdentityMany(XMLListElement):
    _xml_tag = 'many'
    _xml_namespace = namespace
    _xml_document = CommonPolicyDocument
    _xml_children_order = {IdentityExcept.qname: 0}
    _xml_item_type = IdentityExcept

    domain = XMLAttribute('domain', type=str, required=False, test_equal=True)

    def __init__(self, domain=None, exceptions=[]):
        XMLListElement.__init__(self)
        self.domain = domain
        self.update(exceptions)

    def __repr__(self):
        return '%s(%r, %s)' % (self.__class__.__name__, self.domain, list(self))

    def matches(self, uri):
        if self.domain is not None:
            if self.domain != uri.partition('@')[2]:
                return False
        for child in self:
            if not child.matches(uri):
                return False
        return True
Example #21
0
class Target(XMLListElement):
    _xml_tag = 'target'
    _xml_namespace = namespace
    _xml_application = DialogInfoApplication

    uri = XMLAttribute('uri', type=str, required=True, test_equal=True)

    def __init__(self, uri, params=[]):
        self.uri = uri
        self[0:0] = params

    def _build_element(self, *args, **kwargs):
        for child in self:
            child.to_element(*args, **kwargs)

    def _del_item(self, value):
        self.element.remove(value.element)

    def _parse_element(self, element, *args, **kwargs):
        for child in element:
            child_cls = self._xml_application.get_element(child.tag)
            if child_cls is not None and (
                    True if child_cls is [c for c in [Param]] else False):
                try:
                    list.append(self,
                                child_cls.from_element(child, *args, **kwargs))
                except ValidationError:
                    pass

    def _add_item(self, value):
        if not isinstance(value, (Param)):
            raise TypeError("Target element can't contain %s element" %
                            value.__class__.__name__)
        self._insert_element(value.element)
        return value
Example #22
0
class AvailableMediaEntry(XMLElement):
    _xml_tag = 'entry'
    _xml_namespace = namespace
    _xml_document = ConferenceDocument
    _xml_children_order = {
        DisplayText.qname: 0,
        MediaType.qname: 1,
        MediaTypeStatus.qname: 2,
        None: 3
    }

    label = XMLAttribute('label', type=str, required=True, test_equal=False)

    media_type = XMLElementChild('media_type',
                                 type=MediaType,
                                 required=True,
                                 test_equal=True)
    display_text = XMLElementChild('display_text',
                                   type=DisplayText,
                                   required=False,
                                   test_equal=True)
    status = XMLElementChild('status',
                             type=MediaTypeStatus,
                             required=False,
                             test_equal=True)

    def __init__(self, label, media_type, display_text=None, status=None):
        XMLElement.__init__(self)
        self.label = label
        self.media_type = media_type
        self.display_text = display_text
        self.status = status
Example #23
0
class Entry(XMLStringElement):
    _xml_tag = 'entry'
    _xml_namespace = namespace
    _xml_application = XCAPDirectoryApplication

    uri = XMLAttribute('uri', type=str, required=True, test_equal=True)
    etag = XMLAttribute('etag', type=str, required=True, test_equal=True)
    last_modified = XMLAttribute('last_modified',
                                 xmlname='last-modified',
                                 type=Timestamp,
                                 required=False,
                                 test_equal=True)
    size = XMLAttribute('size',
                        type=SizeValue,
                        required=False,
                        test_equal=True)
Example #24
0
class UrisTypeEntry(XMLElement):
    _xml_tag = 'entry'
    _xml_namespace = namespace
    _xml_document = ConferenceDocument

    state = XMLAttribute('state', type=State, required=False, test_equal=False)

    uri = XMLElementChild('uri', type=URI, required=True, test_equal=True)
    display_text = XMLElementChild('display_text',
                                   type=DisplayText,
                                   required=False,
                                   test_equal=True)
    purpose = XMLElementChild('purpose',
                              type=UrisTypePurpose,
                              required=False,
                              test_equal=True)
    modified = XMLElementChild('modified',
                               type=UrisTypeModified,
                               required=False,
                               test_equal=True)

    def __init__(self,
                 uri,
                 state=None,
                 display_text=None,
                 purpose=None,
                 modified=None):
        XMLElement.__init__(self)
        self.uri = uri
        self.state = state
        self.display_text = display_text
        self.purpose = purpose
        self.modified = modified
class Policy(XMLElement, ListElement):
    _xml_tag = 'policy-element'
    _xml_namespace = namespace
    _xml_extension_type = ElementExtension
    _xml_document = ResourceListsDocument

    id = XMLElementID('id', type=ID, required=True, test_equal=True)
    uri = XMLAttribute('uri', type=AnyURI, required=True, test_equal=True)

    name = XMLElementChild('name', type=Name, required=True, test_equal=True)
    dialog = XMLElementChild('dialog', type=DialogHandling, required=True, test_equal=True)
    presence = XMLElementChild('presence', type=PresenceHandling, required=True, test_equal=True)

    def __init__(self, id, uri, name='', presence_handling=None, dialog_handling=None):
        XMLElement.__init__(self)
        self.id = id
        self.uri = uri
        self.name = name
        self.dialog = dialog_handling or DialogHandling('default', False)
        self.presence = presence_handling or PresenceHandling('default', False)

    def __unicode__(self):
        return str(self.uri)

    def __repr__(self):
        return '%s(%r, %r, %r, %r, %r)' % (self.__class__.__name__, self.id, self.uri, self.name, self.presence, self.dialog)
Example #26
0
class ContactURIList(XMLListElement):
    _xml_tag = 'uris'
    _xml_namespace = namespace
    _xml_document = ResourceListsDocument
    _xml_item_type = ContactURI

    default = XMLAttribute('default',
                           type=str,
                           required=False,
                           test_equal=True)

    def __init__(self, uris=[], default=None):
        XMLListElement.__init__(self)
        self.update(uris)
        self.default = default

    def __getitem__(self, key):
        if key is IterateIDs:
            return iter(self._xmlid_map[ContactURI].keys())
        elif key is IterateItems:
            return iter(self._xmlid_map[ContactURI].values())
        else:
            return self._xmlid_map[ContactURI][key]

    def __delitem__(self, key):
        if key is All:
            for item in list(self._xmlid_map[ContactURI].values()):
                self.remove(item)
        else:
            self.remove(self._xmlid_map[ContactURI][key])

    def get(self, key, default=None):
        return self._xmlid_map[ContactURI].get(key, default)
Example #27
0
class External(XMLElement, ListElement):
    _xml_tag = 'external'
    _xml_namespace = namespace
    _xml_application = ResourceListsApplication
    _xml_children_order = {DisplayName.qname: 0}

    anchor = XMLAttribute('anchor',
                          type=unicode,
                          required=True,
                          test_equal=True,
                          builder=uri_attribute_builder,
                          parser=uri_attribute_parser)
    display_name = XMLElementChild('display_name',
                                   type=DisplayName,
                                   required=False,
                                   test_equal=False)
    _xml_id = anchor

    def __init__(self, anchor, display_name=None):
        XMLElement.__init__(self)
        self.anchor = anchor
        self.display_name = display_name

    def __unicode__(self):
        return self.display_name and '"%s" <%s>' % (self.display_name,
                                                    self.anchor) or self.anchor

    def __repr__(self):
        return '%s(%r, %r)' % (self.__class__.__name__, self.anchor,
                               self.display_name)
Example #28
0
class Entry(XMLElement, ListElement):
    _xml_tag = 'entry'
    _xml_namespace = namespace
    _xml_extension_type = EntryExtension
    _xml_application = ResourceListsApplication
    _xml_children_order = {DisplayName.qname: 0}

    uri = XMLAttribute('uri',
                       type=unicode,
                       required=True,
                       test_equal=True,
                       builder=uri_attribute_builder,
                       parser=uri_attribute_parser)
    display_name = XMLElementChild('display_name',
                                   type=DisplayName,
                                   required=False,
                                   test_equal=False)
    _xml_id = uri

    def __init__(self, uri, display_name=None):
        XMLElement.__init__(self)
        self.uri = uri
        self.display_name = display_name

    def __unicode__(self):
        return self.display_name and u'"%s" <%s>' % (self.display_name,
                                                     self.uri) or self.uri

    def __repr__(self):
        return '%s(%r, %r)' % (self.__class__.__name__, self.uri,
                               self.display_name)
class WatcherList(XMLListElement):
    """
    Definition for a list of watchers in a watcherinfo document
    
    It behaves like a list in that it can be indexed by a number, can be
    iterated and counted.

    It also provides the properties pending, active and terminated which are
    generators returning Watcher objects with the corresponding status.
    """

    _xml_tag = 'watcher-list'
    _xml_namespace = namespace
    _xml_document = WatcherInfoDocument
    _xml_children_order = {Watcher.qname: 0}
    _xml_item_type = Watcher

    resource = XMLElementID('resource',
                            type=SIPURI,
                            required=True,
                            test_equal=True)
    package = XMLAttribute('package', type=str, required=True, test_equal=True)

    def __init__(self, resource, package, watchers=[]):
        XMLListElement.__init__(self)
        self.resource = resource
        self.package = package
        self.update(watchers)

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__, self.resource,
                                   self.package, list(self))

    def __getitem__(self, key):
        if key is IterateIDs:
            return self._xmlid_map[Watcher].iterkeys()
        elif key is IterateItems:
            return self._xmlid_map[Watcher].itervalues()
        else:
            return self._xmlid_map[Watcher][key]

    def __delitem__(self, key):
        if key is All:
            for item in self._xmlid_map[Watcher].values():
                self.remove(item)
        else:
            self.remove(self._xmlid_map[Watcher][key])

    def get(self, key, default=None):
        return self._xmlid_map[Watcher].get(key, default)

    pending = property(lambda self: (watcher for watcher in self
                                     if watcher.status == 'pending'))
    waiting = property(lambda self: (watcher for watcher in self
                                     if watcher.status == 'waiting'))
    active = property(lambda self: (watcher for watcher in self
                                    if watcher.status == 'active'))
    terminated = property(lambda self: (watcher for watcher in self
                                        if watcher.status == 'terminated'))
Example #30
0
class ProvideUnknownAttribute(XMLBooleanElement,
                              commonpolicy.TransformationElement):
    _xml_tag = 'provide-unknown-attribute'
    _xml_namespace = namespace
    _xml_document = PresRulesDocument

    name = XMLAttribute('name', type=str, required=True, test_equal=True)
    ns = XMLAttribute('ns', type=str, required=True, test_equal=True)

    def __init__(self, ns, name, value):
        XMLBooleanElement.__init__(self, value)
        self.ns = ns
        self.name = name

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__, self.ns, self.name,
                                   self.value)