コード例 #1
0
 def purge_temp_accounts(self, gid):
     # remove all accounts
     links_t = self.rc.smembers(S1.links_temp_key(gid))
     links = links_t.difference(self.rc.smembers(S1.links_key(gid)))
     for link in links:
         # second check for usage in another account
         if self.rc.hexists(S1.destination_key_fmt('parents:dst'), link):
             continue
         self.rc.hdel(link, S1.ACCOUNT_KEY)
     self.rc.delete(S1.links_temp_key(gid))
コード例 #2
0
    def forget_source(self, master_gid, gid):
        """
        Removes source gid, unlinks all bindings associated with the source
        @param master_gid: master gid
        @param gid: source gid
        @return:
        """
        self.logger.info('Removing source [{0}:{1}]...'.format(
            master_gid, gid))
        destinations = self.get_destinations(gid)
        for destination in destinations:
            users = self.get_destination_users(gid, destination)
            for user in users:
                # source gid can be bound to destination that does not belong to this master gid
                # forget_destination will only remove bindings that belong to this master gid
                DataApi.forget_destination(self, self.logger, gid, destination,
                                           user)

        # remove the gid from the list of child accounts
        self.remove_linked_account(master_gid, gid)

        # clear gid data if no destinations left
        destinations = self.get_destinations(gid)
        if not destinations:
            self.logger.info(
                'Source [{0}:{1}] is orphaned, cleaning...'.format(
                    master_gid, gid))
            # remove user keys
            self.rc.delete(S1.gid_key(gid))
            self.rc.delete(S1.gid_log_key(gid))
            self.rc.delete(S1.links_key(gid))
            self.rc.delete(S1.cache_key(gid))
            self.del_destination_param(gid, 'cache', '',
                                       S1.cache_shorten_urls())
            # clear chache and remove gid from poller list
            self.remove_from_poller(gid)
            # remove tnc
            self.rc.hdel(S1.TERMS_OK_KEY, gid)
コード例 #3
0
 def is_linked_account(self, gid, provider, user):
     return self.rc.sismember(S1.links_key(gid),
                              S1.provider_root_key(provider, user))
コード例 #4
0
 def get_linked_accounts(self, gid, temp=False):
     links = self.rc.smembers(
         S1.links_key(gid) if not temp else S1.links_temp_key(gid))
     result = {link: self.rc.hget(link, S1.ACCOUNT_KEY) for link in links}
     return result
コード例 #5
0
 def link_provider_account(self, gid, provider, user, data=None):
     self.rc.sadd(S1.links_key(gid), S1.provider_root_key(provider, user))
     if data:
         self.rc.hset(S1.provider_root_key(provider, user), S1.ACCOUNT_KEY,
                      data)
コード例 #6
0
 def unlink_provider_account(self, gid, provider, user):
     self.rc.srem(S1.links_key(gid), S1.provider_root_key(provider, user))
コード例 #7
0
 def purge_linked_provider_accounts(self, gid, provider):
     keys = self.rc.smembers(S1.links_key(gid))
     to_purge = [k for k in keys if k.split(':')[0] == provider]
     if to_purge:
         self.rc.srem(S1.links_key(gid), *to_purge)