import os
from sleekxmpp.plugins.xep_0048 import *
from core import JID
from config import config
preferred = config.get('use_bookmarks_method', 'pep').lower()
if preferred not in ('pep', 'privatexml'):
preferred = 'pep'
not_preferred = 'pep' if preferred is 'privatexml' else 'privatexml'
methods = ('local', preferred, not_preferred)
class Bookmark(object):
possible_methods = methods
def __init__(self, jid, name=None, autojoin=False, nick=None, password=None, method=None):
self.jid = jid
self.name = name or jid
self.autojoin = autojoin
if not nick:
default = os.environ.get('USER') if os.environ.get('USER') else 'poezio'
nick = config.get('default_nick', '') or default
self.nick = nick
self.password = password
self._method = method
@property
def method(self):
return self._method
@method.setter
def method(self, value):
if value not in self.possible_methods:
return
self._method = value
def __repr__(self):
return '<%s>' % self.jid
def stanza(self):
"""
Generate a stanza from the instance
"""
el = Conference()
el['name'] = self.name
el['jid'] = self.jid
el['autojoin'] = 'true' if self.autojoin else 'false'
if self.nick:
n = Nick().xml
n.text = self.nick
el.append(n)
if self.password:
p = Password().xml
p.text = self.password
el.append(p)
return el
def parse_from_element(el, method=None):
"""
Generate a Bookmark object from a element
"""
jid = el.get('jid')
name = el.get('name')
autojoin = True if el.get('autojoin', False) == 'true' else False
nick = None
for n in el.iter('nick'):
nick = nick.text
password = None
for p in el.iter('password'):
password = p.text
return Bookmark(jid, name, autojoin, nick, password, method)