Skip to content

Commit

Permalink
SQ -> Fix delete of ResourceGroup to update do-not-download badges in…
Browse files Browse the repository at this point in the history
… EntityTree properly
  • Loading branch information
davidfstr committed Jan 22, 2024
1 parent 8427160 commit 5f36468
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
14 changes: 8 additions & 6 deletions src/crystal/browser/entitytree.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,29 +175,31 @@ def resource_revision_did_instantiate(self, revision: ResourceRevision) -> None:
def root_resource_did_instantiate(self, root_resource: RootResource) -> None:
self.update()

@fg_affinity
def root_resource_did_forget(self, root_resource: RootResource) -> None:
self.update()

# === Events: Resource Group Lifecycle ===

# TODO: Can this be marked with @fg_affinity? Then remove interior fg_call_later().
def resource_group_did_instantiate(self, group: ResourceGroup) -> None:
self.update()

# If new group has do_not_download=False, then some badges related
# to that status may need to be updated
# Some badges related to the ResourceGroup.do_not_download status
# may need to be updated
fg_call_later(lambda:
self.root.update_icon_set_of_descendants_in_group(group))

@fg_affinity
def resource_group_did_change_do_not_download(self, group: ResourceGroup) -> None:
self.root.update_icon_set_of_descendants_in_group(group)

@fg_affinity
def resource_group_will_forget(self, group: ResourceGroup) -> None:
pass

@fg_affinity
def resource_group_did_forget(self, group: ResourceGroup) -> None:
self.update()

# Some badges related to the ResourceGroup.do_not_download status
# may need to be updated
self.root.update_icon_set_of_descendants_in_group(group)

# === Event: Min Fetch Date Did Change ===
Expand Down
16 changes: 8 additions & 8 deletions src/crystal/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -1376,6 +1376,12 @@ def _root_resource_did_instantiate(self, root_resource: RootResource) -> None:
if hasattr(lis, 'root_resource_did_instantiate'):
lis.root_resource_did_instantiate(root_resource) # type: ignore[attr-defined]

def _root_resource_did_forget(self, root_resource: RootResource) -> None:
# Notify normal listeners
for lis in self.listeners:
if hasattr(lis, 'root_resource_did_forget'):
lis.root_resource_did_forget(root_resource) # type: ignore[attr-defined]

# === Events: Resource Group Lifecycle ===

# Called when a new ResourceGroup is created after the project has loaded
Expand All @@ -1391,12 +1397,6 @@ def _resource_group_did_change_do_not_download(self, group: ResourceGroup) -> No
if hasattr(lis, 'resource_group_did_change_do_not_download'):
lis.resource_group_did_change_do_not_download(group) # type: ignore[attr-defined]

def _resource_group_will_forget(self, group: ResourceGroup) -> None:
# Notify normal listeners
for lis in self.listeners:
if hasattr(lis, 'resource_group_will_forget'):
lis.resource_group_will_forget(group) # type: ignore[attr-defined]

def _resource_group_did_forget(self, group: ResourceGroup) -> None:
# Notify normal listeners
for lis in self.listeners:
Expand Down Expand Up @@ -2193,6 +2193,8 @@ def delete(self) -> None:
self._id = None # type: ignore[assignment] # intentionally leave exploding None

del self.project._root_resources[self.resource]

self.project._root_resource_did_forget(self)

# === Properties ===

Expand Down Expand Up @@ -3229,8 +3231,6 @@ def delete(self) -> None:
Deletes this resource group.
If it is referenced as a source, it will be replaced with None.
"""
self.project._resource_group_will_forget(self)

for rg in self.project.resource_groups:
if rg.source == self:
rg.source = None
Expand Down

0 comments on commit 5f36468

Please sign in to comment.