Commit b99632ab authored by Philipp Hörist's avatar Philipp Hörist

Fix pylint errors

parent 691678b0
......@@ -404,7 +404,7 @@ def stage3_next_form(self, command):
self.commandnode = command.getAttr('node')
if command.getTag('x'):
self.dataform = dataforms.ExtendForm(node=command.getTag('x'))
self.dataform = dataforms.extend_form(node=command.getTag('x'))
self.data_form_widget.set_sensitive(True)
try:
......
......@@ -588,7 +588,7 @@ def on_avatar_eventbox_button_press_event(self, widget, event):
def on_location_eventbox_button_release_event(self, widget, event):
if 'geoloc' in self.contact.pep:
location = self.contact.pep['geoloc']._pep_specific_data
location = self.contact.pep['geoloc'].data
if ('lat' in location) and ('lon' in location):
uri = 'https://www.openstreetmap.org/?' + \
'mlat=%(lat)s&mlon=%(lon)s&zoom=16' % {'lat': location['lat'],
......
......@@ -448,7 +448,7 @@ def append(self, stanza):
elif child.getName() == 'x':
if child.getNamespace() == nbxmpp.NS_DATA:
from gajim.common.modules import dataforms
data.append(dataforms.ExtendForm(node=child))
data.append(dataforms.extend_form(node=child))
if nbxmpp.NS_MUC not in features:
# Not a MUC, don't cache info
......
......@@ -382,14 +382,14 @@ def unsubscribe_agent(self, agent):
def update_contact(self, jid, name, groups):
if self.connection:
self.getRoster().setItem(jid=jid, name=name, groups=groups)
self.getRoster().set_item(jid=jid, name=name, groups=groups)
def update_contacts(self, contacts):
"""
Update multiple roster items
"""
if self.connection:
self.getRoster().setItemMulti(contacts)
self.getRoster().set_item_multi(contacts)
def new_account(self, name, config, sync=False):
"""
......@@ -1578,7 +1578,7 @@ def unsubscribe_agent(self, agent):
iq.setID(id_)
self.awaiting_answers[id_] = (AGENT_REMOVED, agent)
self.connection.send(iq)
self.getRoster().delItem(agent)
self.getRoster().del_item(agent)
def send_new_account_infos(self, form, is_form):
if is_form:
......
......@@ -926,7 +926,7 @@ def generate(self):
form_tag = feature_tag.getTag('x', namespace=nbxmpp.NS_DATA)
if not form_tag:
return
self.dataform = dataforms.ExtendForm(node=form_tag)
self.dataform = dataforms.extend_form(node=form_tag)
for f in self.dataform.iter_fields():
if f.var == 'stream-method' and f.type_ == 'list-single':
values = [o[1] for o in f.options]
......
......@@ -39,7 +39,7 @@ class AdHocCommand:
commandfeatures = (nbxmpp.NS_DATA,)
@staticmethod
def isVisibleFor(samejid):
def is_visible_for(_samejid):
"""
This returns True if that command should be visible and invokable for
others
......@@ -54,8 +54,8 @@ def __init__(self, conn, jid, sessionid):
self.jid = jid
self.sessionid = sessionid
def buildResponse(self, request, status='executing', defaultaction=None,
actions=None):
def build_response(self, request, status='executing', defaultaction=None,
actions=None):
assert status in ('executing', 'completed', 'canceled')
response = request.buildReply('result')
......@@ -74,12 +74,12 @@ def buildResponse(self, request, status='executing', defaultaction=None,
cmd.addChild('actions', attrs, actions)
return response, cmd
def badRequest(self, stanza):
def bad_request(self, stanza):
self.connection.connection.send(
nbxmpp.Error(stanza, nbxmpp.NS_STANZAS + ' bad-request'))
def cancel(self, request):
response = self.buildResponse(request, status='canceled')[0]
response = self.build_response(request, status='canceled')[0]
self.connection.connection.send(response)
return False # finish the session
......@@ -90,30 +90,30 @@ class ChangeStatusCommand(AdHocCommand):
def __init__(self, conn, jid, sessionid):
AdHocCommand.__init__(self, conn, jid, sessionid)
self.cb = self.first_step
self._callback = self.first_step
@staticmethod
def isVisibleFor(samejid):
def is_visible_for(samejid):
"""
Change status is visible only if the entity has the same bare jid
"""
return samejid
def execute(self, request):
return self.cb(request)
return self._callback(request)
def first_step(self, request):
# first query...
response, cmd = self.buildResponse(request,
defaultaction='execute',
actions=['execute'])
response, cmd = self.build_response(request,
defaultaction='execute',
actions=['execute'])
cmd.addChild(
node=dataforms.SimpleDataForm(
title=_('Change status'),
instructions=_('Set the presence type and description'),
fields=[
dataforms.Field(
dataforms.create_field(
'list-single',
var='presence-type',
label='Type of presence:',
......@@ -126,7 +126,7 @@ def first_step(self, request):
('offline', _('Offline - disconnect'))],
value='online',
required=True),
dataforms.Field(
dataforms.create_field(
'text-multi',
var='presence-desc',
label=_('Presence description:'))
......@@ -137,7 +137,7 @@ def first_step(self, request):
self.connection.connection.send(response)
# for next invocation
self.cb = self.second_step
self._callback = self.second_step
return True # keep the session
......@@ -147,19 +147,19 @@ def second_step(self, request):
form = dataforms.SimpleDataForm(
extend=request.getTag('command').getTag('x'))
except Exception:
self.badRequest(request)
self.bad_request(request)
return False
try:
presencetype = form['presence-type'].value
if presencetype not in ('chat', 'online', 'away',
'xa', 'dnd', 'offline'):
self.badRequest(request)
self.bad_request(request)
return False
except Exception:
# KeyError if there's no presence-type field in form or
# AttributeError if that field is of wrong type
self.badRequest(request)
self.bad_request(request)
return False
try:
......@@ -167,7 +167,7 @@ def second_step(self, request):
except Exception: # same exceptions as in last comment
presencedesc = ''
response, cmd = self.buildResponse(request, status='completed')
response, cmd = self.build_response(request, status='completed')
cmd.addChild('note', {}, _('The status has been changed.'))
# if going offline, we need to push response so it won't go into
......@@ -206,23 +206,23 @@ class LeaveGroupchatsCommand(AdHocCommand):
def __init__(self, conn, jid, sessionid):
AdHocCommand.__init__(self, conn, jid, sessionid)
self.cb = self.first_step
self._callback = self.first_step
@staticmethod
def isVisibleFor(samejid):
def is_visible_for(samejid):
"""
Leave groupchats is visible only if the entity has the same bare jid
"""
return samejid
def execute(self, request):
return self.cb(request)
return self._callback(request)
def first_step(self, request):
# first query...
response, cmd = self.buildResponse(request,
defaultaction='execute',
actions=['execute'])
response, cmd = self.build_response(request,
defaultaction='execute',
actions=['execute'])
options = []
account = self.connection.name
for gc in find_current_groupchats(account):
......@@ -230,8 +230,8 @@ def first_step(self, request):
('%s' % gc[0],
_('%(nickname)s on %(room_jid)s') % {'nickname': gc[1],
'room_jid': gc[0]}))
if not len(options):
response, cmd = self.buildResponse(request, status='completed')
if not options:
response, cmd = self.build_response(request, status='completed')
cmd.addChild('note', {}, _('You have not joined a groupchat.'))
self.connection.connection.send(response)
......@@ -242,7 +242,7 @@ def first_step(self, request):
title=_('Leave Groupchats'),
instructions=_('Choose the groupchats you want to leave'),
fields=[
dataforms.Field(
dataforms.create_field(
'list-multi',
var='groupchats',
label=_('Groupchats'),
......@@ -255,7 +255,7 @@ def first_step(self, request):
self.connection.connection.send(response)
# for next invocation
self.cb = self.second_step
self._callback = self.second_step
return True # keep the session
......@@ -265,13 +265,13 @@ def second_step(self, request):
form = dataforms.SimpleDataForm(
extend=request.getTag('command').getTag('x'))
except Exception:
self.badRequest(request)
self.bad_request(request)
return False
try:
gc = form['groupchats'].values
except Exception: # KeyError if there's no groupchats in form
self.badRequest(request)
self.bad_request(request)
return False
account = self.connection.name
try:
......@@ -279,15 +279,16 @@ def second_step(self, request):
gc_control = app.interface.msg_win_mgr.get_gc_control(
room_jid, account)
if not gc_control:
gc_control = app.interface.minimized_controls[account][room_jid]
minimized_controls = app.interface.minimized_controls
gc_control = minimized_controls[account][room_jid]
gc_control.shutdown()
app.interface.roster.remove_groupchat(room_jid, account)
continue
gc_control.parent_win.remove_tab(gc_control, None, force=True)
except Exception: # KeyError if there's no such room opened
self.badRequest(request)
self.bad_request(request)
return False
response, cmd = self.buildResponse(request, status='completed')
response, cmd = self.build_response(request, status='completed')
note = _('You left the following groupchats:')
for room_jid in gc:
note += '\n\t' + room_jid
......@@ -327,13 +328,13 @@ def is_same_jid(self, jid):
def command_list_query(self, stanza):
iq = stanza.buildReply('result')
jid = helpers.get_full_jid_from_iq(stanza)
q = iq.getTag('query')
query = iq.getTag('query')
# buildReply don't copy the node attribute. Re-add it
q.setAttr('node', nbxmpp.NS_COMMANDS)
query.setAttr('node', nbxmpp.NS_COMMANDS)
for node, cmd in self._commands.items():
if cmd.isVisibleFor(self.is_same_jid(jid)):
q.addChild('item', {
if cmd.is_visible_for(self.is_same_jid(jid)):
query.addChild('item', {
# TODO: find the jid
'jid': str(self._con.get_own_jid()),
'node': node,
......@@ -349,7 +350,7 @@ def command_info_query(self, stanza):
try:
jid = helpers.get_full_jid_from_iq(stanza)
except helpers.InvalidFormat:
log.warning('Invalid JID: %s, ignoring it' % stanza.getFrom())
log.warning('Invalid JID: %s, ignoring it', stanza.getFrom())
return
node = stanza.getTagAttr('query', 'node')
......@@ -357,16 +358,16 @@ def command_info_query(self, stanza):
return False
cmd = self._commands[node]
if cmd.isVisibleFor(self.is_same_jid(jid)):
if cmd.is_visible_for(self.is_same_jid(jid)):
iq = stanza.buildReply('result')
q = iq.getTag('query')
q.addChild('identity',
attrs={'type': 'command-node',
'category': 'automation',
'name': cmd.commandname})
q.addChild('feature', attrs={'var': nbxmpp.NS_COMMANDS})
query = iq.getTag('query')
query.addChild('identity',
attrs={'type': 'command-node',
'category': 'automation',
'name': cmd.commandname})
query.addChild('feature', attrs={'var': nbxmpp.NS_COMMANDS})
for feature in cmd.commandfeatures:
q.addChild('feature', attrs={'var': feature})
query.addChild('feature', attrs={'var': feature})
self._con.connection.send(iq)
return True
......@@ -385,14 +386,14 @@ def command_items_query(self, stanza):
return False
cmd = self._commands[node]
if cmd.isVisibleFor(self.is_same_jid(jid)):
if cmd.is_visible_for(self.is_same_jid(jid)):
iq = stanza.buildReply('result')
self._con.connection.send(iq)
return True
return False
def _execute_command_received(self, con, stanza):
def _execute_command_received(self, _con, stanza):
jid = helpers.get_full_jid_from_iq(stanza)
cmd = stanza.getTag('command')
......@@ -417,7 +418,7 @@ def _execute_command_received(self, con, stanza):
raise nbxmpp.NodeProcessed
newcmd = self._commands[node]
if not newcmd.isVisibleFor(self.is_same_jid(jid)):
if not newcmd.is_visible_for(self.is_same_jid(jid)):
log.warning('Command not visible for jid: %s', jid)
raise nbxmpp.NodeProcessed
......@@ -492,7 +493,9 @@ def _command_list_received(self, stanza):
items = stanza.getQueryPayload()
commandlist = []
if items:
commandlist = [(t.getAttr('node'), t.getAttr('name')) for t in items]
commandlist = [
(t.getAttr('node'), t.getAttr('name')) for t in items
]
log.info('Received: %s', commandlist)
app.nec.push_incoming_event(
......@@ -550,7 +553,8 @@ def send_cancel(self, jid, node, session_id):
self._con.connection.SendAndCallForResponse(
stanza, self._cancel_result_received)
def _cancel_result_received(self, stanza):
@staticmethod
def _cancel_result_received(stanza):
if not nbxmpp.isResultNode(stanza):
log.warning('Error: %s', stanza.getError())
else:
......
......@@ -44,10 +44,10 @@ class AtomData(AbstractPEPData):
type_ = PEPEventType.ATOM
def __init__(self, atom):
self._pep_specific_data = atom
self.data = atom
def get_entry(self):
return self._pep_specific_data
return self.data
class Atom(AbstractPEPModule):
......
......@@ -39,22 +39,22 @@ class WrongFieldValue(Error):
# helper class to change class of already existing object
class ExtendedNode(nbxmpp.Node, object):
class ExtendedNode(nbxmpp.Node):
@classmethod
def __new__(cls, *a, **b):
if 'extend' not in b.keys() or not b['extend']:
def __new__(cls, *args, **kwargs):
if 'extend' not in kwargs.keys() or not kwargs['extend']:
return object.__new__(cls)
extend = b['extend']
extend = kwargs['extend']
assert issubclass(cls, extend.__class__)
extend.__class__ = cls
return extend
# helper to create fields from scratch
def Field(typ, **attrs):
def create_field(typ, **attrs):
''' Helper function to create a field of given type. '''
f = {
field = {
'boolean': BooleanField,
'fixed': StringField,
'hidden': StringField,
......@@ -66,18 +66,18 @@ def Field(typ, **attrs):
'list-single': ListSingleField,
'text-multi': TextMultiField,
}[typ](typ=typ, **attrs)
return f
return field
def ExtendField(node):
def extend_field(node):
"""
Helper function to extend a node to field of appropriate type
"""
# when validation (XEP-122) will go in, we could have another classes
# like DateTimeField - so that dicts in Field() and ExtendField() will
# be different...
# like DateTimeField - so that dicts in create_field() and
# extend_field() will be different...
typ = node.getAttr('type')
f = {
field = {
'boolean': BooleanField,
'fixed': StringField,
'hidden': StringField,
......@@ -89,25 +89,24 @@ def ExtendField(node):
'list-single': ListSingleField,
'text-multi': TextMultiField,
}
if typ not in f:
if typ not in field:
typ = 'text-single'
return f[typ](extend=node)
return field[typ](extend=node)
def ExtendForm(node):
def extend_form(node):
"""
Helper function to extend a node to form of appropriate type
"""
if node.getTag('reported') is not None:
return MultipleDataForm(extend=node)
else:
return SimpleDataForm(extend=node)
return SimpleDataForm(extend=node)
class DataField(ExtendedNode):
"""
Keeps data about one field - var, field type, labels, instructions... Base
class for different kinds of fields. Use Field() function to construct one
class for different kinds of fields. Use create_field() function to construct one
of these
"""
......@@ -136,10 +135,10 @@ def type_(self):
'text-private', 'text-single'. If you set this to something different,
DataField will store given name, but treat all data as text-single
"""
t = self.getAttr('type')
if t is None:
type_ = self.getAttr('type')
if type_ is None:
return 'text-single'
return t
return type_
@type_.setter
def type_(self, value):
......@@ -199,9 +198,9 @@ def description(self, value):
@description.deleter
def description(self):
t = self.getTag('desc')
if t is not None:
self.delChild(t)
desc = self.getTag('desc')
if desc is not None:
self.delChild(desc)
@property
def required(self):
......@@ -212,10 +211,10 @@ def required(self):
@required.setter
def required(self, value):
t = self.getTag('required')
if t and not value:
self.delChild(t)
elif not t and value:
required = self.getTag('required')
if required and not value:
self.delChild(required)
elif not required and value:
self.addChild('required')
@property
......@@ -234,11 +233,12 @@ def media(self, value):
@media.deleter
def media(self):
t = self.getTag('media')
if t is not None:
self.delChild(t)
media = self.getTag('media')
if media is not None:
self.delChild(media)
def is_valid(self):
@staticmethod
def is_valid():
return True
......@@ -306,12 +306,12 @@ def value(self):
"""
Value of field. May contain True, False or None
"""
v = self.getTagData('value')
if v in ('0', 'false'):
value = self.getTagData('value')
if value in ('0', 'false'):
return False
if v in ('1', 'true'):
if value in ('1', 'true'):
return True
if v is None:
if value is None:
return False # default value is False
raise WrongFieldValue
......@@ -321,9 +321,9 @@ def value(self, value):
@value.deleter
def value(self):
t = self.getTag('value')
if t is not None:
self.delChild(t)
value = self.getTag('value')
if value is not None:
self.delChild(value)
class StringField(DataField):
......@@ -366,13 +366,13 @@ def options(self):
"""
options = []
for element in self.getTags('option'):
v = element.getTagData('value')
if v is None:
value = element.getTagData('value')
if value is None:
raise WrongFieldValue
label = element.getAttr('label')
if not label:
label = v
options.append((label, v))
label = value
options.append((label, value))
return options
@options.setter
......@@ -389,13 +389,13 @@ def options(self):
def iter_options(self):
for element in self.iterTags('option'):
v = element.getTagData('value')
if v is None:
value = element.getTagData('value')
if value is None:
raise WrongFieldValue
label = element.getAttr('label')
if not label:
label = v
yield (v, label)
label = value
yield (value, label)
class ListSingleField(ListField, StringField):
......@@ -469,7 +469,7 @@ class JidMultiField(ListMultiField):
Covers jid-multi fields
"""
def is_valid(self):
if len(self.values):
if self.values:
for value in self.values:
try:
helpers.parse_jid(value)
......@@ -526,7 +526,7 @@ def __init__(self, fields=None, associated=None, extend=None):
if fields is None:
for field in self.iterTags('field'):
if not isinstance(field, DataField):
ExtendField(field)
extend_field(field)
self.vars[field.var] = field
else:
for field in self.getTags('field'):
......@@ -545,7 +545,7 @@ def fields(self, fields):
del self.fields
for field in fields:
if not isinstance(field, DataField):
ExtendField(field)
extend_field(field)
self.addChild(node=field)
@fields.deleter
......@@ -572,8 +572,8 @@ def __getitem__(self, item):
return self.vars[item]
def is_valid(self):
for f in self.iter_fields():
if not f.is_valid():
for field in self.iter_fields():
if not field.is_valid():
return False
return True
......@@ -660,27 +660,29 @@ def __init__(self, type_=None, title=None, instructions=None, fields=None,