def registration(self, user): end_date = timezone.now() + datetime.timedelta( days=3) # embargo days must be 3 days in the future embargo = EmbargoFactory(end_date=end_date) embargo.state = Sanction.APPROVED embargo.save() return embargo.registrations.last()
def embargo(provider=None): if provider is None: return EmbargoFactory() sanction = EmbargoFactory() registration = sanction.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return sanction
def setUp(self): super(TestApproveEmbargoTerminations, self).setUp() self.user = AuthUserFactory() self.node = NodeFactory(creator=self.user) NodeFactory(creator=self.user, parent=NodeFactory(creator=self.user, parent=self.node)) # requesting termination but less than 48 hours old embargo_termination_approval = EmbargoTerminationApprovalFactory() self.registration1 = Registration.objects.get( embargo_termination_approval=embargo_termination_approval) # requesting termination and older than 48 hours old_time = timezone.now() - timedelta(days=5) embargo_termination_approval_2 = EmbargoTerminationApprovalFactory() embargo_termination_approval_2.initiation_date = old_time embargo_termination_approval_2.save() embargo_termination_approval_2.reload() self.registration2 = Registration.objects.get( embargo_termination_approval=embargo_termination_approval_2) # requesting termination and older than 48 hours, but approved embargo_termination_approval_3 = EmbargoTerminationApprovalFactory() embargo_termination_approval_3.initiation_date = old_time embargo_termination_approval_3.state = Sanction.APPROVED embargo_termination_approval_2.save() embargo_termination_approval_2.reload() self.registration3 = Registration.objects.get( embargo_termination_approval=embargo_termination_approval_3) # embargoed but not requesting termination embargo = EmbargoFactory() self.registration4 = RegistrationFactory(embargo=embargo)
def setUp(self): super(RegistrationEmbargoModelsTestCase, self).setUp() self.user = UserFactory() self.project = ProjectFactory(creator=self.user) self.registration = RegistrationFactory(project=self.project) self.embargo = EmbargoFactory(user=self.user) self.valid_embargo_end_date = timezone.now() + datetime.timedelta(days=3)
def embargo(self, provider): sanction = EmbargoFactory() registration = sanction.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return sanction
def embargoed_registration(self, provider): embargo = EmbargoFactory() registration = embargo.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return registration
def embargo_registration(self, provider, reg_creator): one_month_from_now = datetime.datetime.now() + datetime.timedelta(days=30) embargo = EmbargoFactory(end_date=one_month_from_now, user=reg_creator) registration = embargo.target_registration registration.provider = provider registration.update_moderation_state() registration.save() return registration
def setUp(self): super().setUp() self.embargo = EmbargoFactory() self.registration_approval = RegistrationApprovalFactory() self.retraction = RetractionFactory() self.embargo_termination = EmbargoTerminationApprovalFactory() self.provider = RegistrationProviderFactory() for sanction in [self.embargo, self.registration_approval, self.retraction, self.embargo_termination]: registration = sanction.target_registration registration.provider = self.provider registration.save() # EmbargoTerminationFactory actually calls terminate_embargo, # which updates state in the new world self.embargo_termination.target_registration.moderation_state = RegistrationModerationStates.INITIAL.db_name self.embargo_termination.target_registration.save()
def setUp(self): super().setUp() embargo = EmbargoFactory() registration = embargo.target_registration moderator = AuthUserFactory() provider = RegistrationProviderFactory() embargo.to_APPROVED() embargo.save() update_provider_auth_groups() provider.get_group('moderator').user_set.add(moderator) provider.reviews_workflow = Workflows.PRE_MODERATION.value provider.save() registration.provider = provider registration.update_moderation_state() registration.save() self.embargo = embargo self.registration = registration self.user = self.registration.creator self.moderator = moderator self.provider = provider
def pointer_embargo(self, user): return RegistrationFactory(creator=user, embargo=EmbargoFactory(user=user), is_public=False)
def test_state_can_be_set_to_complete(self): embargo = EmbargoFactory() embargo.state = Embargo.COMPLETED embargo.save() # should pass validation assert_equal(embargo.state, Embargo.COMPLETED)
class TestCorrectRegistrationModerationState(OsfTestCase): def setUp(self): super().setUp() self.embargo = EmbargoFactory() self.registration_approval = RegistrationApprovalFactory() self.retraction = RetractionFactory() self.embargo_termination = EmbargoTerminationApprovalFactory() self.provider = RegistrationProviderFactory() for sanction in [self.embargo, self.registration_approval, self.retraction, self.embargo_termination]: registration = sanction.target_registration registration.provider = self.provider registration.save() # EmbargoTerminationFactory actually calls terminate_embargo, # which updates state in the new world self.embargo_termination.target_registration.moderation_state = RegistrationModerationStates.INITIAL.db_name self.embargo_termination.target_registration.save() def test_correct_registration_moderation_states(self): self.embargo.approval_stage = ApprovalStates.MODERATOR_REJECTED self.embargo.save() self.registration_approval.approval_stage = ApprovalStates.APPROVED self.registration_approval.save() self.retraction.approval_stage = ApprovalStates.PENDING_MODERATION self.retraction.save() self.embargo_termination.approval_stage = ApprovalStates.REJECTED self.embargo_termination.save() empty_state_counts = {state.db_name: 0 for state in RegistrationModerationStates} expected_initial_states = dict(empty_state_counts) expected_initial_states.update({'initial': 4}) assert self.provider.get_reviewable_state_counts() == expected_initial_states corrected_count = correct_registration_moderation_states() assert corrected_count == 4 expected_end_states = dict(empty_state_counts) expected_end_states.update( {'accepted': 1, 'rejected': 1, 'pending_withdraw': 1, 'embargo': 1} ) assert self.provider.get_reviewable_state_counts() == expected_end_states def test_correct_registration_moderation_states_only_collects_initial_registrations(self): # Implicitly invoke update_moderation_state. # We should not attempt to update state on these Registrations. # Also should not attempt to update self.registration_approval, which should be in initial self.embargo.to_COMPLETED() self.retraction.to_APPROVED() with mock.patch.object(Registration, 'update_moderation_state') as mock_update: correct_registration_moderation_states() assert mock_update.call_count == 1 def test_correct_registration_moderation_states_ignores_deleted_registrations(self): deleted_registration = self.registration_approval.target_registration deleted_registration.deleted = timezone.now() deleted_registration.save() with mock.patch.object(Registration, 'update_moderation_state') as mock_update: correct_registration_moderation_states() # Shouldn't attempt to update self.registration_approval (deleted) # or self.embargo (correctly in 'initial') assert mock_update.call_count == 2 def test_correct_registration_moderation_states_only_reports_updated_registrations(self): # INITIAL is the correct state for a Registration with an # Embargo or a RegistrationApproval in UNAPPROVED state corrected_count = correct_registration_moderation_states() assert corrected_count == 2
def registration_embargoed(self, user_admin_project_public, project_registration_public): return RegistrationFactory(project=project_registration_public, creator=user_admin_project_public, embargo=EmbargoFactory(user=user_admin_project_public))
def embargo(self): embargo = EmbargoFactory() embargo.accept() return embargo
def embargo(self): return EmbargoFactory()