def test_is_registration_approved(self): registration_approval = factories.RegistrationApprovalFactory() registration = Node.find_one( Q('registration_approval', 'eq', registration_approval)) with mock.patch('website.project.sanctions.Sanction.is_approved', mock.Mock(return_value=True)): assert_true(registration.is_registration_approved)
def _on_complete(self, user): from website.project.model import Node, NodeLog parent_registration = Node.find_one(Q('retraction', 'eq', self)) parent_registration.registered_from.add_log( action=NodeLog.RETRACTION_APPROVED, params={ 'node': parent_registration._id, 'retraction_id': self._id, }, auth=Auth(self.initiated_by), ) # Remove any embargoes associated with the registration if parent_registration.embargo_end_date or parent_registration.is_pending_embargo: parent_registration.embargo.state = self.REJECTED parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_CANCELLED, params={ 'node': parent_registration._id, 'embargo_id': parent_registration.embargo._id, }, auth=Auth(self.initiated_by), ) parent_registration.embargo.save() # Ensure retracted registration is public # Pass auth=None because the registration initiator may not be # an admin on components (component admins had the opportunity # to disapprove the retraction by this point) for node in parent_registration.node_and_primary_descendants(): node.set_privacy('public', auth=None, save=True, log=False) node.update_search()
def _on_complete(self, user): from website.project.model import Node, NodeLog parent_registration = Node.find_one(Q('retraction', 'eq', self)) parent_registration.registered_from.add_log( action=NodeLog.RETRACTION_APPROVED, params={ 'node': parent_registration.registered_from_id, 'retraction_id': self._id, 'registration': parent_registration._id }, auth=Auth(self.initiated_by), ) # Remove any embargoes associated with the registration if parent_registration.embargo_end_date or parent_registration.is_pending_embargo: parent_registration.embargo.state = self.REJECTED parent_registration.registered_from.add_log( action=NodeLog.EMBARGO_CANCELLED, params={ 'node': parent_registration.registered_from_id, 'registration': parent_registration._id, 'embargo_id': parent_registration.embargo._id, }, auth=Auth(self.initiated_by), ) parent_registration.embargo.save() # Ensure retracted registration is public # Pass auth=None because the registration initiator may not be # an admin on components (component admins had the opportunity # to disapprove the retraction by this point) for node in parent_registration.node_and_primary_descendants(): node.set_privacy('public', auth=None, save=True, log=False) node.update_search()
def _view_url_context(self, user_id, node): from website.project.model import Node registration = Node.find_one(Q('retraction', 'eq', self)) return { 'node_id': registration._id }
def _email_template_context(self, user, node, is_authorizer=False, urls=None): urls = urls or self.stashed_urls.get(user._id, {}) registration_link = urls.get('view', self._view_url(user._id, node)) if is_authorizer: from website.project.model import Node approval_link = urls.get('approve', '') disapproval_link = urls.get('reject', '') approval_time_span = settings.RETRACTION_PENDING_TIME.days * 24 registration = Node.find_one(Q('retraction', 'eq', self)) return { 'is_initiator': self.initiated_by == user, 'initiated_by': self.initiated_by.fullname, 'project_name': registration.title, 'registration_link': registration_link, 'approval_link': approval_link, 'disapproval_link': disapproval_link, 'approval_time_span': approval_time_span, } else: return { 'initiated_by': self.initiated_by.fullname, 'registration_link': registration_link, }
def test_sanction_embargo_termination_first(self): embargo_termination_approval = factories.EmbargoTerminationApprovalFactory( ) registration = Node.find_one( Q('embargo_termination_approval', 'eq', embargo_termination_approval)) assert_equal(registration.sanction, embargo_termination_approval)
def _approval_url_context(self, user_id): user_approval_state = self.approval_state.get(user_id, {}) approval_token = user_approval_state.get("approval_token") if approval_token: from website.project.model import Node root_registration = Node.find_one(Q("retraction", "eq", self)) node_id = user_approval_state.get("node_id", root_registration._id) return {"node_id": node_id, "token": approval_token}
def _on_reject(self, user): from website.project.model import Node, NodeLog parent_registration = Node.find_one(Q("retraction", "eq", self)) parent_registration.registered_from.add_log( action=NodeLog.RETRACTION_CANCELLED, params={"node": parent_registration._id, "retraction_id": self._id}, auth=Auth(user), save=True, )
def __repr__(self): from website.project.model import Node parent_registration = None try: parent_registration = Node.find_one(Q('retraction', 'eq', self)) except NoResultsFound: pass return ('<Retraction(parent_registration={0}, initiated_by={1}) ' 'with _id {2}>').format(parent_registration, self.initiated_by, self._id)
def __repr__(self): from website.project.model import Node parent_registration = None try: parent_registration = Node.find_one(Q("retraction", "eq", self)) except NoResultsFound: pass return ("<Retraction(parent_registration={0}, initiated_by={1}) " "with _id {2}>").format( parent_registration, self.initiated_by, self._id )
def __repr__(self): from website.project.model import Node parent_registration = None try: parent_registration = Node.find_one(Q("embargo", "eq", self)) except NoResultsFound: pass return ("<Embargo(parent_registration={0}, initiated_by={1}, " "end_date={2}) with _id {3}>").format( parent_registration, self.initiated_by, self.end_date, self._id )
def _approval_url_context(self, user_id): user_approval_state = self.approval_state.get(user_id, {}) approval_token = user_approval_state.get('approval_token') if approval_token: from website.project.model import Node root_registration = Node.find_one(Q('retraction', 'eq', self)) node_id = user_approval_state.get('node_id', root_registration._id) return { 'node_id': node_id, 'token': approval_token, }
def __repr__(self): from website.project.model import Node parent_registration = None try: parent_registration = Node.find_one(Q('embargo', 'eq', self)) except NoResultsFound: pass return ('<Embargo(parent_registration={0}, initiated_by={1}, ' 'end_date={2}) with _id {3}>').format(parent_registration, self.initiated_by, self.end_date, self._id)
def _on_reject(self, user): from website.project.model import Node, NodeLog parent_registration = Node.find_one(Q('retraction', 'eq', self)) parent_registration.registered_from.add_log( action=NodeLog.RETRACTION_CANCELLED, params={ 'node': parent_registration._id, 'retraction_id': self._id, }, auth=Auth(user), save=True, )
def _on_reject(self, user): from website.project.model import Node, NodeLog parent_registration = Node.find_one(Q('retraction', 'eq', self)) parent_registration.registered_from.add_log( action=NodeLog.RETRACTION_CANCELLED, params={ 'node': parent_registration.registered_from_id, 'registration': parent_registration._id, 'retraction_id': self._id, }, auth=Auth(user), save=True, )
def _email_template_context(self, user, node, is_authorizer=False, urls=None): urls = urls or self.stashed_urls.get(user._id, {}) registration_link = urls.get("view", self._view_url(user._id, node)) if is_authorizer: from website.project.model import Node approval_link = urls.get("approve", "") disapproval_link = urls.get("reject", "") approval_time_span = settings.RETRACTION_PENDING_TIME.days * 24 registration = Node.find_one(Q("retraction", "eq", self)) return { "is_initiator": self.initiated_by == user, "initiated_by": self.initiated_by.fullname, "project_name": registration.title, "registration_link": registration_link, "approval_link": approval_link, "disapproval_link": disapproval_link, "approval_time_span": approval_time_span, } else: return {"initiated_by": self.initiated_by.fullname, "registration_link": registration_link}
def _get_registration(self): from website.project.model import Node return Node.find_one(Q('registration_approval', 'eq', self))
def test_sanction_embargo(self): embargo = factories.EmbargoFactory() registration = Node.find_one(Q('embargo', 'eq', embargo)) assert_equal(registration.sanction, embargo)
def test_sanction_registration_approval(self): registration_approval = factories.RegistrationApprovalFactory() registration = Node.find_one(Q('registration_approval', 'eq', registration_approval)) assert_equal(registration.sanction, registration_approval)
def test_sanction_retraction(self): retraction = factories.RetractionFactory() registration = Node.find_one(Q('retraction', 'eq', retraction)) assert_equal(registration.sanction, retraction)
def _view_url_context(self, user_id, node): from website.project.model import Node registration = Node.find_one(Q("retraction", "eq", self)) return {"node_id": registration._id}
def _view_url_context(self, user_id, node): from website.project.model import Node registration = Node.find_one(Q('retraction', 'eq', self)) return {'node_id': registration._id}
def test_is_pending_embargo(self): embargo = factories.EmbargoFactory() registration = Node.find_one(Q('embargo', 'eq', embargo)) assert_true(embargo.is_pending_approval) assert_true(registration.is_pending_embargo)
def test_embargo_end_date(self): embargo = factories.EmbargoFactory() registration = Node.find_one(Q('embargo', 'eq', embargo)) assert_equal(registration.embargo_end_date, embargo.end_date)
def test_is_pending_retraction(self): retraction = factories.RetractionFactory() registration = Node.find_one(Q('retraction', 'eq', retraction)) assert_true(retraction.is_pending_approval) assert_true(registration.is_pending_retraction)
def _get_registration(self): from website.project.model import Node return Node.find_one(Q("embargo", "eq", self))
def test_sanction_embargo_termination_first(self): embargo_termination_approval = factories.EmbargoTerminationApprovalFactory() registration = Node.find_one(Q('embargo_termination_approval', 'eq', embargo_termination_approval)) assert_equal(registration.sanction, embargo_termination_approval)
def test_is_embargoed(self): embargo = factories.EmbargoFactory() registration = Node.find_one(Q('embargo', 'eq', embargo)) with mock.patch('website.project.sanctions.Sanction.is_approved', mock.Mock(return_value=True)): assert_true(registration.is_embargoed)
def test_is_retracted(self): retraction = factories.RetractionFactory() registration = Node.find_one(Q('retraction', 'eq', retraction)) with mock.patch('website.project.sanctions.Sanction.is_approved', mock.Mock(return_value=True)): assert_true(registration.is_retracted)
def test_sanction_registration_approval(self): registration_approval = factories.RegistrationApprovalFactory() registration = Node.find_one( Q('registration_approval', 'eq', registration_approval)) assert_equal(registration.sanction, registration_approval)