def purge_datasets(self): for dataset in Dataset.objects(deleted__ne=None): log.info(f'Purging dataset {dataset}') # Remove followers Follow.objects(following=dataset).delete() # Remove issues Issue.objects(subject=dataset).delete() # Remove discussions Discussion.objects(subject=dataset).delete() # Remove activity Activity.objects(related_to=dataset).delete() # Remove topics' related dataset for topic in Topic.objects(datasets=dataset): datasets = topic.datasets datasets.remove(dataset) topic.update(datasets=datasets) # Remove HarvestItem references HarvestJob.objects(items__dataset=dataset).update( set__items__S__dataset=None) # Remove each dataset's resource's file storage = storages.resources for resource in dataset.resources: if resource.fs_filename is not None: storage.delete(resource.fs_filename) # Remove each dataset related community resource and it's file community_resources = CommunityResource.objects(dataset=dataset) for community_resource in community_resources: if community_resource.fs_filename is not None: storage.delete(community_resource.fs_filename) community_resource.delete() # Remove dataset dataset.delete()
def test_purge_datasets(): datasets = [ Dataset.objects.create(title='delete me', deleted='2016-01-01'), Dataset.objects.create(title='keep me'), ] topic = Topic.objects.create(name='test topic', datasets=datasets) tasks.purge_datasets() topic = Topic.objects(name='test topic').first() assert topic.datasets[0] == datasets[1]
def test_purge_datasets(self): datasets = [ Dataset.objects.create(title='delete me', deleted='2016-01-01'), Dataset.objects.create(title='keep me'), ] topic = Topic.objects.create(name='test topic', datasets=datasets) tasks.purge_datasets() topic = Topic.objects(name='test topic').first() self.assertListEqual(topic.datasets, [datasets[1]])
def purge_datasets(self): for dataset in Dataset.objects(deleted__ne=None): log.info('Purging dataset "{0}"'.format(dataset)) # Remove followers FollowDataset.objects(following=dataset).delete() # Remove issues DatasetIssue.objects(subject=dataset).delete() # Remove discussions DatasetDiscussion.objects(subject=dataset).delete() # Remove activity Activity.objects(related_to=dataset).delete() # Remove metrics Metrics.objects(object_id=dataset.id).delete() # Remove topics' related dataset for topic in Topic.objects(datasets=dataset): datasets = topic.datasets datasets.remove(dataset) topic.update(datasets=datasets) # Remove dataset.delete()
def purge_datasets(self): for dataset in Dataset.objects(deleted__ne=None): log.info('Purging dataset "{0}"'.format(dataset)) # Remove followers Follow.objects(following=dataset).delete() # Remove issues Issue.objects(subject=dataset).delete() # Remove discussions Discussion.objects(subject=dataset).delete() # Remove activity Activity.objects(related_to=dataset).delete() # Remove topics' related dataset for topic in Topic.objects(datasets=dataset): datasets = topic.datasets datasets.remove(dataset) topic.update(datasets=datasets) # Remove HarvestItem references HarvestJob.objects(items__dataset=dataset).update( set__items__S__dataset=None) # Remove dataset.delete()
def test_purge_datasets(): datasets = [ Dataset.objects.create(title='delete me', deleted='2016-01-01'), Dataset.objects.create(title='keep me'), ] topic = Topic.objects.create(name='test topic', datasets=datasets) user = UserFactory() transfer = Transfer.objects.create( owner=user, recipient=user, subject=datasets[0], comment='comment', ) tasks.purge_datasets() assert Transfer.objects.filter(id=transfer.id).count() == 0 topic = Topic.objects(name='test topic').first() assert topic.datasets[0] == datasets[1]
def purge_datasets(self): for dataset in Dataset.objects(deleted__ne=None): log.info(f'Purging dataset {dataset}') # Remove followers Follow.objects(following=dataset).delete() # Remove discussions Discussion.objects(subject=dataset).delete() # Remove activity Activity.objects(related_to=dataset).delete() # Remove topics' related dataset for topic in Topic.objects(datasets=dataset): datasets = topic.datasets datasets.remove(dataset) topic.update(datasets=datasets) # Remove HarvestItem references HarvestJob.objects(items__dataset=dataset).update( set__items__S__dataset=None) # Remove associated Transfers Transfer.objects(subject=dataset).delete() # Remove each dataset's resource's file storage = storages.resources for resource in dataset.resources: if resource.fs_filename is not None: storage.delete(resource.fs_filename) # Not removing the resource from dataset.resources # with `dataset.remove_resource` as removing elements # from a list while iterating causes random effects. Dataset.on_resource_removed.send(Dataset, document=dataset, resource_id=resource.id) # Remove each dataset related community resource and it's file community_resources = CommunityResource.objects(dataset=dataset) for community_resource in community_resources: if community_resource.fs_filename is not None: storage.delete(community_resource.fs_filename) community_resource.delete() # Remove dataset dataset.delete()
def store_featured_topics(): g.featured_topics = sorted(Topic.objects(featured=True), key=lambda t: t.slug)