Author: asterix Date: 2009-02-20 11:15:16 +0100 (Fri, 20 Feb 2009) New Revision: 11125
Modified: trunk/src/common/connection.py trunk/src/common/helpers.py trunk/src/gajim.py trunk/src/roster_window.py trunk/src/tooltips.py Log: ability to block all contacts (from privacy list editor). Fixes #4831
Modified: trunk/src/common/connection.py =================================================================== --- trunk/src/common/connection.py 2009-02-20 01:04:09 UTC (rev 11124) +++ trunk/src/common/connection.py 2009-02-20 10:15:16 UTC (rev 11125) @@ -154,6 +154,7 @@ self.blocked_list = [] self.blocked_contacts = [] self.blocked_groups = [] + self.blocked_all = False self.music_track_info = 0 self.pep_supported = False self.mood = {}
Modified: trunk/src/common/helpers.py =================================================================== --- trunk/src/common/helpers.py 2009-02-20 01:04:09 UTC (rev 11124) +++ trunk/src/common/helpers.py 2009-02-20 10:15:16 UTC (rev 11125) @@ -1287,4 +1287,12 @@ gajim.connections[a].change_status(gajim.SHOW_LIST[connected], gajim.connections[a].status)
+def jid_is_blocked(account, jid): + return ((jid in gajim.connections[account].blocked_contacts) or \ + gajim.connections[account].blocked_all) + +def group_is_blocked(account, group): + return ((group in gajim.connections[account].blocked_groups) or \ + gajim.connections[account].blocked_all) + # vim: se ts=3:
Modified: trunk/src/gajim.py =================================================================== --- trunk/src/gajim.py 2009-02-20 01:04:09 UTC (rev 11124) +++ trunk/src/gajim.py 2009-02-20 10:15:16 UTC (rev 11125) @@ -1948,7 +1948,7 @@ self.instances[account]['privacy_lists'].privacy_lists_received(data)
def handle_event_privacy_list_received(self, account, data): - # ('PRIVACY_LISTS_RECEIVED', account, (name, rules)) + # ('PRIVACY_LIST_RECEIVED', account, (name, rules)) if account not in self.instances: return name = data[0] @@ -1960,10 +1960,13 @@ gajim.connections[account].blocked_contacts = [] gajim.connections[account].blocked_groups = [] gajim.connections[account].blocked_list = [] + gajim.connections[account].blocked_all = False for rule in rules: - if rule['type'] == 'jid' and rule['action'] == 'deny': + if not 'type' in rule: + gajim.connections[account].blocked_all = True + elif rule['type'] == 'jid' and rule['action'] == 'deny': gajim.connections[account].blocked_contacts.append(rule['value']) - if rule['type'] == 'group' and rule['action'] == 'deny': + elif rule['type'] == 'group' and rule['action'] == 'deny': gajim.connections[account].blocked_groups.append(rule['value']) gajim.connections[account].blocked_list.append(rule) #elif rule['type'] == "group" and action == "deny":
Modified: trunk/src/roster_window.py =================================================================== --- trunk/src/roster_window.py 2009-02-20 01:04:09 UTC (rev 11124) +++ trunk/src/roster_window.py 2009-02-20 10:15:16 UTC (rev 11125) @@ -1017,7 +1017,7 @@ else: accounts = [account] text = gobject.markup_escape_text(group) - if group in gajim.connections[account].blocked_groups: + if helpers.group_is_blocked(account, group): text = '<span strikethrough="true">%s</span>' % text if gajim.config.get('show_contacts_number'): nbr_on, nbr_total = gajim.contacts.get_nb_online_total_contacts( @@ -1070,11 +1070,11 @@
# Strike name if blocked strike = False - if jid in gajim.connections[account].blocked_contacts: + if helpers.jid_is_blocked(account, jid): strike = True else: for group in contact.get_shown_groups(): - if group in gajim.connections[account].blocked_groups: + if helpers.group_is_blocked(account, group): strike = True break if strike: @@ -5109,7 +5109,7 @@ send_custom_status_menuitem = gtk.ImageMenuItem( _('Send Cus_tom Status')) # add a special img for this menuitem - if group in gajim.connections[account].blocked_groups: + if helpers.group_is_blocked(account, group): send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon( 'offline')) send_custom_status_menuitem.set_sensitive(False) @@ -5157,10 +5157,10 @@ is_blocked = False if self.regroup: for g_account in gajim.connections: - if group in gajim.connections[g_account].blocked_groups: + if helpers.group_is_blocked(g_account, group): is_blocked = True else: - if group in gajim.connections[account].blocked_groups: + if helpers.group_is_blocked(account, group): is_blocked = True
if is_blocked and gajim.connections[account].privacy_rules_supported: @@ -5366,11 +5366,11 @@
# send custom status icon blocked = False - if jid in gajim.connections[account].blocked_contacts: + if helpers.jid_is_blocked(account, jid): blocked = True else: for group in contact.get_shown_groups(): - if group in gajim.connections[account].blocked_groups: + if helpers.group_is_blocked(account, group): blocked = True break if gajim.get_transport_name_from_jid(jid, use_config_setting=False): @@ -5535,7 +5535,7 @@
if gajim.connections[account] and gajim.connections[account].\ privacy_rules_supported: - if jid in gajim.connections[account].blocked_contacts: + if helpers.jid_is_blocked(account, jid): block_menuitem.set_no_show_all(True) block_menuitem.hide() if gajim.get_transport_name_from_jid(jid, use_config_setting=False): @@ -5589,7 +5589,7 @@ privacy_rules_supported = False contact = gajim.contacts.get_contact_with_highest_priority(account, jid) - if jid not in gajim.connections[account].blocked_contacts: + if helpers.jid_is_blocked(account, jid): is_blocked = False list_.append((contact, account))
@@ -5691,7 +5691,7 @@ menu.append(item)
blocked = False - if jid in gajim.connections[account].blocked_contacts: + if helpers.jid_is_blocked(account, jid): blocked = True
# Send Custom Status
Modified: trunk/src/tooltips.py =================================================================== --- trunk/src/tooltips.py 2009-02-20 01:04:09 UTC (rev 11124) +++ trunk/src/tooltips.py 2009-02-20 10:15:16 UTC (rev 11125) @@ -427,8 +427,8 @@ name_markup = u'<span weight="bold">' + \ gobject.markup_escape_text(prim_contact.get_shown_name())\ + '</span>' - if self.account and prim_contact.jid in gajim.connections[ - self.account].blocked_contacts: + if self.account and helpers.jid_is_blocked(self.account, + prim_contact.jid): name_markup += _(' [blocked]') if self.account and \ self.account in gajim.interface.minimized_controls and \