def test_sanction_embargo_termination_first(self): embargo_termination_approval = factories.EmbargoTerminationApprovalFactory( ) registration = Registration.find_one( Q('embargo_termination_approval', 'eq', embargo_termination_approval)) assert registration.sanction == embargo_termination_approval
def setUp(self): self.maxDiff = None super(TestRegistrationUpdate, self).setUp() self.user = AuthUserFactory() self.user_two = AuthUserFactory() self.user_three = AuthUserFactory() self.registration_approval = RegistrationApprovalFactory(state='unapproved', approve=False, user=self.user) self.unapproved_registration = Registration.find_one(Q('registration_approval', 'eq', self.registration_approval)) self.unapproved_url = '/{}registrations/{}/'.format(API_BASE, self.unapproved_registration._id) self.public_project = ProjectFactory(title="Project One", is_public=True, creator=self.user) self.private_project = ProjectFactory(title="Project Two", is_public=False, creator=self.user) self.public_registration = RegistrationFactory(project=self.public_project, creator=self.user, is_public=True) self.private_registration = RegistrationFactory(project=self.private_project, creator=self.user) self.public_url = '/{}registrations/{}/'.format(API_BASE, self.public_registration._id) self.private_url = '/{}registrations/{}/'.format(API_BASE, self.private_registration._id) self.private_registration.add_contributor(self.user_two, permissions=[permissions.READ]) self.private_registration.add_contributor(self.user_three, permissions=[permissions.WRITE]) self.private_registration.save() self.payload = { "data": { "id": self.private_registration._id, "type": "registrations", "attributes": { "public": True, } } }
def test_sanction_embargo(self): embargo = factories.EmbargoFactory() registration = Registration.find_one(Q('embargo', 'eq', embargo)) assert registration.sanction == embargo
def test_sanction_registration_approval(self): registration_approval = factories.RegistrationApprovalFactory() registration = Registration.find_one( Q('registration_approval', 'eq', registration_approval)) assert registration.sanction == registration_approval
def unapproved_registration(self, registration_approval): return Registration.find_one( Q('registration_approval', 'eq', registration_approval))
def test_sanction_retraction(self): retraction = factories.RetractionFactory() registration = Registration.find_one(Q('retraction', 'eq', retraction)) assert registration.sanction == retraction
def test_embargo_end_date(self): embargo = factories.EmbargoFactory() registration = Registration.find_one(Q('embargo', 'eq', embargo)) assert registration.embargo_end_date == embargo.embargo_end_date
def test_is_embargoed(self): embargo = factories.EmbargoFactory() registration = Registration.find_one(Q('embargo', 'eq', embargo)) registration.embargo.state = Sanction.APPROVED registration.embargo.save() assert registration.is_embargoed
def test_is_pending_retraction(self): retraction = factories.RetractionFactory() registration = Registration.find_one(Q('retraction', 'eq', retraction)) assert retraction.is_pending_approval is True assert registration.is_pending_retraction is True
def test_is_retracted(self): retraction = factories.RetractionFactory(state=Sanction.APPROVED, approve=True) registration = Registration.find_one(Q('retraction', 'eq', retraction)) assert registration.is_retracted
def test_is_registration_approved(self): registration_approval = factories.RegistrationApprovalFactory(state=Sanction.APPROVED, approve=True) registration = Registration.find_one(Q('registration_approval', 'eq', registration_approval)) assert registration.is_registration_approved
def test_is_pending_registration(self): registration_approval = factories.RegistrationApprovalFactory() registration = Registration.find_one(Q('registration_approval', 'eq', registration_approval)) assert registration_approval.is_pending_approval assert registration.is_pending_registration
def test_sanction_registration_approval(self): registration_approval = factories.RegistrationApprovalFactory() registration = Registration.find_one(Q('registration_approval', 'eq', registration_approval)) assert registration.sanction == registration_approval
def test_is_pending_registration(self): registration_approval = factories.RegistrationApprovalFactory() registration = Registration.find_one( Q('registration_approval', 'eq', registration_approval)) assert registration_approval.is_pending_approval assert registration.is_pending_registration
def test_is_registration_approved(self): registration_approval = factories.RegistrationApprovalFactory( state=Sanction.APPROVED, approve=True) registration = Registration.find_one( Q('registration_approval', 'eq', registration_approval)) assert registration.is_registration_approved
def test_is_pending_embargo(self): embargo = factories.EmbargoFactory() registration = Registration.find_one(Q('embargo', 'eq', embargo)) assert embargo.is_pending_approval assert registration.is_pending_embargo
def main(dry_run=True): pending_embargoes = Embargo.find(Q('state', 'eq', Embargo.UNAPPROVED)) for embargo in pending_embargoes: if should_be_embargoed(embargo): if dry_run: logger.warn('Dry run mode') parent_registration = Registration.find_one( Q('embargo', 'eq', embargo)) logger.warn( 'Embargo {0} approved. Activating embargo for registration {1}' .format(embargo._id, parent_registration._id)) if not dry_run: if parent_registration.is_deleted: # Clean up any registration failures during archiving embargo.forcibly_reject() embargo.save() continue with transaction.atomic(): try: embargo.state = Embargo.APPROVED parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_APPROVED, params={ 'node': parent_registration.registered_from._id, 'registration': parent_registration._id, 'embargo_id': embargo._id, }, auth=None, ) embargo.save() except Exception as err: logger.error( 'Unexpected error raised when activating embargo for ' 'registration {}. Continuing...'.format( parent_registration)) logger.exception(err) active_embargoes = Embargo.find(Q('state', 'eq', Embargo.APPROVED)) for embargo in active_embargoes: if embargo.end_date < timezone.now(): if dry_run: logger.warn('Dry run mode') parent_registration = Registration.find_one( Q('embargo', 'eq', embargo)) logger.warn( 'Embargo {0} complete. Making registration {1} public'.format( embargo._id, parent_registration._id)) if not dry_run: if parent_registration.is_deleted: # Clean up any registration failures during archiving embargo.forcibly_reject() embargo.save() continue with transaction.atomic(): try: embargo.state = Embargo.COMPLETED # Need to save here for node.is_embargoed to return the correct # value in Node#set_privacy embargo.save() for node in parent_registration.node_and_primary_descendants( ): node.set_privacy('public', auth=None, save=True) parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_COMPLETED, params={ 'node': parent_registration.registered_from._id, 'registration': parent_registration._id, 'embargo_id': embargo._id, }, auth=None, ) embargo.save() except Exception as err: logger.error( 'Unexpected error raised when completing embargo for ' 'registration {}. Continuing...'.format( parent_registration)) logger.exception(err)
def unapproved_registration(self, registration_approval): return Registration.find_one(Q('registration_approval', 'eq', registration_approval))
def main(dry_run=True): pending_embargoes = Embargo.find(Q('state', 'eq', Embargo.UNAPPROVED)) for embargo in pending_embargoes: if should_be_embargoed(embargo): if dry_run: logger.warn('Dry run mode') parent_registration = Registration.find_one(Q('embargo', 'eq', embargo)) logger.warn( 'Embargo {0} approved. Activating embargo for registration {1}' .format(embargo._id, parent_registration._id) ) if not dry_run: if parent_registration.is_deleted: # Clean up any registration failures during archiving embargo.forcibly_reject() embargo.save() continue with transaction.atomic(): try: embargo.state = Embargo.APPROVED parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_APPROVED, params={ 'node': parent_registration.registered_from._id, 'registration': parent_registration._id, 'embargo_id': embargo._id, }, auth=None, ) embargo.save() except Exception as err: logger.error( 'Unexpected error raised when activating embargo for ' 'registration {}. Continuing...'.format(parent_registration)) logger.exception(err) active_embargoes = Embargo.find(Q('state', 'eq', Embargo.APPROVED)) for embargo in active_embargoes: if embargo.end_date < timezone.now(): if dry_run: logger.warn('Dry run mode') parent_registration = Registration.find_one(Q('embargo', 'eq', embargo)) logger.warn( 'Embargo {0} complete. Making registration {1} public' .format(embargo._id, parent_registration._id) ) if not dry_run: if parent_registration.is_deleted: # Clean up any registration failures during archiving embargo.forcibly_reject() embargo.save() continue with transaction.atomic(): try: embargo.state = Embargo.COMPLETED # Need to save here for node.is_embargoed to return the correct # value in Node#set_privacy embargo.save() for node in parent_registration.node_and_primary_descendants(): node.set_privacy('public', auth=None, save=True) parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_COMPLETED, params={ 'node': parent_registration.registered_from._id, 'registration': parent_registration._id, 'embargo_id': embargo._id, }, auth=None, ) embargo.save() except Exception as err: logger.error( 'Unexpected error raised when completing embargo for ' 'registration {}. Continuing...'.format(parent_registration)) logger.exception(err)
def test_sanction_embargo_termination_first(self): embargo_termination_approval = factories.EmbargoTerminationApprovalFactory() registration = Registration.find_one(Q('embargo_termination_approval', 'eq', embargo_termination_approval)) assert registration.sanction == embargo_termination_approval