|
|
@ -135,10 +135,8 @@ class Group(BaseModel):
|
|
|
|
label=label,
|
|
|
|
label=label,
|
|
|
|
sources=[],
|
|
|
|
sources=[],
|
|
|
|
)
|
|
|
|
)
|
|
|
|
for source_label in source_labels:
|
|
|
|
|
|
|
|
# continue:
|
|
|
|
GroupSource.create_group_sources(group, source_labels)
|
|
|
|
src = Source.get(label=source_label)
|
|
|
|
|
|
|
|
group_src, _ = GroupSource.get_or_create(group=group, source=src)
|
|
|
|
|
|
|
|
group.save()
|
|
|
|
group.save()
|
|
|
|
return group
|
|
|
|
return group
|
|
|
|
|
|
|
|
|
|
|
@ -158,6 +156,21 @@ class GroupSource(BaseModel):
|
|
|
|
group = ForeignKeyField(Group, backref='sources')
|
|
|
|
group = ForeignKeyField(Group, backref='sources')
|
|
|
|
source = ForeignKeyField(Source)
|
|
|
|
source = ForeignKeyField(Source)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
|
|
def create_group_source(group:Group, source_label:str) -> bool:
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Return group-source created status
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
src = Source.get(label=source_label)
|
|
|
|
|
|
|
|
group_src, created = GroupSource.get_or_create(group=group, source=src)
|
|
|
|
|
|
|
|
group_src.save()
|
|
|
|
|
|
|
|
return created
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
|
|
|
def create_group_sources(group:Group, source_labels:list[str]):
|
|
|
|
|
|
|
|
for source_label in source_labels:
|
|
|
|
|
|
|
|
GroupSource.create_group_source(group, source_label)
|
|
|
|
|
|
|
|
|
|
|
|
def create_tables():
|
|
|
|
def create_tables():
|
|
|
|
with db:
|
|
|
|
with db:
|
|
|
|
tables = [
|
|
|
|
tables = [
|
|
|
@ -179,6 +192,10 @@ def all_labels():
|
|
|
|
return Source.select(Source.label)
|
|
|
|
return Source.select(Source.label)
|
|
|
|
|
|
|
|
|
|
|
|
def all_labels_except(labels):
|
|
|
|
def all_labels_except(labels):
|
|
|
|
|
|
|
|
if labels == None:
|
|
|
|
|
|
|
|
return all_labels()
|
|
|
|
|
|
|
|
if len(labels) == 0:
|
|
|
|
|
|
|
|
return all_labels()
|
|
|
|
with db:
|
|
|
|
with db:
|
|
|
|
return Source.select(Source.label).where(Source.label.not_in(labels))
|
|
|
|
return Source.select(Source.label).where(Source.label.not_in(labels))
|
|
|
|
|
|
|
|
|
|
|
|