Add Groupable methods has_ancestor, _descendant, _parent.
This commit is contained in:
parent
5712d6dabd
commit
97cc023866
1 changed files with 12 additions and 0 deletions
|
@ -182,6 +182,9 @@ class GroupableMixin(metaclass=abc.ABCMeta):
|
||||||
parents = set(self.group_getter_many(parent_ids))
|
parents = set(self.group_getter_many(parent_ids))
|
||||||
return parents
|
return parents
|
||||||
|
|
||||||
|
def has_ancestor(self, ancestor):
|
||||||
|
return ancestor in self.walk_parents()
|
||||||
|
|
||||||
def has_any_child(self):
|
def has_any_child(self):
|
||||||
query = f'SELECT 1 FROM {self.group_table} WHERE parentid == ? LIMIT 1'
|
query = f'SELECT 1 FROM {self.group_table} WHERE parentid == ? LIMIT 1'
|
||||||
row = self.photodb.sql_select_one(query, [self.id])
|
row = self.photodb.sql_select_one(query, [self.id])
|
||||||
|
@ -198,6 +201,15 @@ class GroupableMixin(metaclass=abc.ABCMeta):
|
||||||
row = self.photodb.sql_select_one(query, [self.id, member.id])
|
row = self.photodb.sql_select_one(query, [self.id, member.id])
|
||||||
return row is not None
|
return row is not None
|
||||||
|
|
||||||
|
def has_descendant(self, descendant):
|
||||||
|
return self in descendant.walk_parents()
|
||||||
|
|
||||||
|
def has_parent(self, parent):
|
||||||
|
self.assert_same_type(parent)
|
||||||
|
query = f'SELECT 1 FROM {self.group_table} WHERE parentid == ? AND memberid == ?'
|
||||||
|
row = self.photodb.sql_select_one(query, [parent.id, self.id])
|
||||||
|
return row is not None
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def remove_child(self, member):
|
def remove_child(self, member):
|
||||||
if not self.has_child(member):
|
if not self.has_child(member):
|
||||||
|
|
Loading…
Reference in a new issue