def remove_privacy_record(self, buddy, type_, callback=None): """ Remove the specified buddy from your block list. """ me = (yield None) name = _lowerstrip(common.get_bname(buddy)) buds_matching = self.find(name=name, type=type_) errors = [] if buds_matching: with self.ssi_edit(): log.critical("REMOVING PRIVACY RECORD FOR " + name) self._remove_ssi(buds_matching, me()) errors = (yield None) for err, ssi in zip(errors, buds_matching): if not err: del self.ssis[ssi] real_errors = filter(None, errors) if not buds_matching: log.critical("Can't remove privacy record; no ssi in root group for %r (type = %r).", name, type_) if real_errors: callback.error() raise SSIException( "Problem removing privacy ssi for %s." % name + ",".join([ssi_err_types[err] for err in errors]) ) # On success, notify buddy listeners. callback.success() self.o.buddies[name].notify("blocked") self.ssis.root_group.notify()
def remove_privacy_record(self, buddy, type_, callback=None): """ Remove the specified buddy from your block list. """ me = (yield None) name = _lowerstrip(common.get_bname(buddy)) buds_matching = self.find(name=name, type=type_) errors = [] if buds_matching: with self.ssi_edit(): log.critical("REMOVING PRIVACY RECORD FOR " + name) self._remove_ssi(buds_matching, me()) errors = (yield None) for err, ssi in zip(errors, buds_matching): if not err: del self.ssis[ssi] real_errors = filter(None, errors) if not buds_matching: log.critical( "Can't remove privacy record; no ssi in root group for %r (type = %r).", name, type_) if real_errors: callback.error() raise SSIException('Problem removing privacy ssi for %s.' % name + ",".join([ssi_err_types[err] for err in errors])) # On success, notify buddy listeners. callback.success() self.o.buddies[name].notify('blocked') self.ssis.root_group.notify()
def add_privacy_record(self, buddy, type_, callback=None): """ Adds a buddy to your blocklist. buddy can be an OscarBuddy object or a string screenname. """ me = (yield None) name = common.get_bname(buddy) with self.ssi_edit(): if not self.find(lambda s: _lowerstrip(s.name) == _lowerstrip(name), type=type_): log.critical("adding " + name + " to your privacy list") buddy_ssi = item(name, 0, self.new_ssi_item_id(0), type_) buddy_errs = (yield self._add_ssi(buddy_ssi, me())) log.critical("ACK PRIVACY MOD!" + name) if not buddy_errs[0]: self.ssis[buddy_ssi] = buddy_ssi # self.o.buddies[name].setnotify('status', 'offline') else: callback.error() raise SSIException( "Error adding buddy to privacy list. " + ",".join([ssi_err_types[err] for err in buddy_errs]) ) else: callback.error() raise SSIException("Buddy already in that privacy list.") callback.success() self.ssis.root_group.notify()
def add_privacy_record(self, buddy, type_, callback=None): """ Adds a buddy to your blocklist. buddy can be an OscarBuddy object or a string screenname. """ me = (yield None) name = common.get_bname(buddy) with self.ssi_edit(): if not self.find( lambda s: _lowerstrip(s.name) == _lowerstrip(name), type=type_): log.critical("adding " + name + " to your privacy list") buddy_ssi = item(name, 0, self.new_ssi_item_id(0), type_) buddy_errs = (yield self._add_ssi(buddy_ssi, me())) log.critical("ACK PRIVACY MOD!" + name) if not buddy_errs[0]: self.ssis[buddy_ssi] = buddy_ssi #self.o.buddies[name].setnotify('status', 'offline') else: callback.error() raise SSIException( "Error adding buddy to privacy list. " + ",".join([ssi_err_types[err] for err in buddy_errs])) else: callback.error() raise SSIException("Buddy already in that privacy list.") callback.success() self.ssis.root_group.notify()