Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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()
Example #4
0
    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()