コード例 #1
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_set(self, seen=None):
    key = cache_key(MULTI_LEVEL_MEMBERSHIP_KEY, self)
    if redis.exists(key):
        return TgGroup.objects.filter(id__in=redis.smembers(key))

    es = get_enclosure_id_set(self.__class__, self.id)
    add_to_cached_set(key, es)

    return TgGroup.objects.filter(id__in=[x for x in es])
コード例 #2
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_set(self, seen=None):
    key = cache_key(MULTI_LEVEL_MEMBERSHIP_KEY, self)
    if redis.exists(key) :
        return TgGroup.objects.filter(id__in=redis.smembers(key))

    es = get_enclosure_id_set(self.__class__, self.id)
    add_to_cached_set(key, es)

    return TgGroup.objects.filter(id__in=[x for x in es])
コード例 #3
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_ids(cls, id):
    """ Note, these are depth 1 membership ids. And note also that all enclosures, are, by definition TgGroup
    cls is the actual python class (django model class) ... cache_key takes its name
    """
    key = cache_key(ONE_LEVEL_MEMBERSHIP_KEY, cls=cls, id=id)
    if redis.exists(key):
        return redis.smembers(key)

    # if not cached, get the object and get its enclosures
    obj = cls.objects.get(id=id)
    memberships = set([x.id for x in obj.get_enclosures()])

    add_to_cached_set(key, memberships)
    return memberships
コード例 #4
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_ids(cls,id) :
    """ Note, these are depth 1 membership ids. And note also that all enclosures, are, by definition TgGroup
    cls is the actual python class (django model class) ... cache_key takes its name
    """
    key = cache_key(ONE_LEVEL_MEMBERSHIP_KEY, cls=cls, id=id)
    if redis.exists(key) :
        return redis.smembers(key)

    # if not cached, get the object and get its enclosures
    obj = cls.objects.get(id=id)
    memberships = set([x.id for x in obj.get_enclosures()])
    
    add_to_cached_set(key, memberships)
    return memberships
コード例 #5
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_id_set(cls, self_id, seen=None):

    key = cache_key(MULTI_LEVEL_MEMBERSHIP_KEY, cls=cls, id=self_id)
    if redis.exists(key):
        return redis.smembers(key)

    if not seen:
        seen = set([self_id])

    if cls == TgGroup:
        es = set([self_id])
    else:
        es = set([])
    for e_id in get_enclosure_ids(cls, self_id):
        if e_id not in seen:
            seen.add(e_id)
            multi_memberships = get_enclosure_id_set(TgGroup, e_id, seen)
            es = es.union(set(multi_memberships))
            seen = seen.union([m for m in multi_memberships])

    add_to_cached_set(key, es)
    return es
コード例 #6
0
ファイル: models.py プロジェクト: GunioRobot/hubplus
def get_enclosure_id_set(cls, self_id, seen=None) :

    key = cache_key(MULTI_LEVEL_MEMBERSHIP_KEY,cls=cls, id=self_id)
    if redis.exists(key) :
        return redis.smembers(key)

    if not seen :
        seen = set([self_id])

    if cls == TgGroup :
        es = set([self_id])
    else :
        es = set([])
    for e_id in get_enclosure_ids(cls, self_id ) :
        if e_id not in seen :
            seen.add(e_id)
            multi_memberships = get_enclosure_id_set(TgGroup, e_id, seen)
            es = es.union(set(multi_memberships))
            seen = seen.union([m for m in multi_memberships])

    add_to_cached_set(key, es)
    return es