def test_create_trs_with_unreviewed_revisions(self): """Revisions must have been reviewed to be transmittable.""" revisions = self.create_docs(transmittable=False) with self.assertRaises(errors.InvalidRevisionsError): create_transmittal( self.category, self.dst_category, revisions, 'FAC10005', self.entity)
def test_create_trs_with_invalid_revisions(self): """We must check that the given revisions are valid.""" with self.assertRaises(errors.InvalidRevisionsError): revisions = ['toto', 'tata', 'tutu'] create_transmittal( self.category, self.dst_category, revisions, self.linked_contract.number, self.entity)
def test_create_trs_with_invalid_dest_category(self): """Destination category must contain outgoing transmittals.""" invalid_cat = CategoryFactory() revisions = self.create_docs() with self.assertRaises(errors.InvalidCategoryError): create_transmittal(self.category, invalid_cat, revisions, self.linked_contract.number, self.entity)
def test_create_trs_with_invalid_from_category(self): """Source category must contain transmittable documents.""" invalid_cat = CategoryFactory() revisions = self.create_docs() with self.assertRaises(errors.InvalidCategoryError): create_transmittal(invalid_cat, self.dst_category, revisions, self.linked_contract.number, self.entity)
def test_create_trs_with_invalid_dest_category(self): """Destination category must contain outgoing transmittals.""" invalid_cat = CategoryFactory() revisions = self.create_docs() with self.assertRaises(errors.InvalidCategoryError): create_transmittal( self.category, invalid_cat, revisions, self.linked_contract.number, self.entity)
def test_create_trs_with_invalid_from_category(self): """Source category must contain transmittable documents.""" invalid_cat = CategoryFactory() revisions = self.create_docs() with self.assertRaises(errors.InvalidCategoryError): create_transmittal( invalid_cat, self.dst_category, revisions, self.linked_contract.number, self.entity)
def test_create_transmittal_with_unlinked_contract(self): """"Contract must be linked to doc category.""" revisions = self.create_docs() unlinked_contract = ContractFactory() # Non linked to the category junk_number = "XYZ" # This one does not exist in db for contract_number in unlinked_contract.number, junk_number: # Both must fail with self.assertRaises(errors.InvalidContractNumberError): create_transmittal(self.category, self.dst_category, revisions, contract_number, self.entity)
def test_create_transmittal_with_unlinked_contract(self): """"Contract must be linked to doc category.""" revisions = self.create_docs() unlinked_contract = ContractFactory() # Non linked to the category junk_number = "XYZ" # This one does not exist in db for contract_number in unlinked_contract.number, junk_number: # Both must fail with self.assertRaises(errors.InvalidContractNumberError): create_transmittal( self.category, self.dst_category, revisions, contract_number, self.entity)
def test_create_trs_with_unreviewed_revisions(self): """Revisions must have been reviewed to be transmittable.""" revisions = self.create_docs(transmittable=False) doc, trs, trs_rev = create_transmittal( self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs)
def test_create_trs_with_unreviewed_revisions(self): """Revisions must have been reviewed to be transmittable.""" revisions = self.create_docs(transmittable=False) doc, trs, trs_rev = create_transmittal(self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs)
def test_create_transmittal(self): revisions = self.create_docs() revision = revisions[0] self.assertFalse(revision.already_transmitted) doc, trs, trs_rev = create_transmittal( self.category, self.dst_category, revisions, 'FAC10005', self.entity) self.assertIsNotNone(trs) self.assertTrue(isinstance(trs, OutgoingTransmittal)) revision.refresh_from_db() self.assertTrue(revision.already_transmitted)
def test_create_transmittal(self): revisions = self.create_docs() revision = revisions[0] self.assertEqual(revision.transmittals.all().count(), 0) doc, trs, trs_rev = create_transmittal( self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs) self.assertTrue(isinstance(trs, OutgoingTransmittal)) self.assertEqual(trs.revisions_category, self.category) revision.refresh_from_db() self.assertEqual(revision.transmittals.all().count(), 1)
def test_create_transmittal_for_review(self): doc_kwargs = { 'revision': { 'reviewers': [self.user1], 'leader': self.user2, 'approver': self.user3, 'received_date': datetime.datetime.today()}} revisions = self.create_docs(default_kwargs=doc_kwargs) doc, trs, trs_rev = create_transmittal( self.category, self.dst_category, revisions, self.linked_contract.number, self.entity, purpose_of_issue='FR') self.assertIsNotNone(trs) self.assertIsNotNone(trs.external_review_due_date)
def test_create_transmittal(self): revisions = self.create_docs() revision = revisions[0] self.assertIsNone(revision.transmittal) doc, trs, trs_rev = create_transmittal(self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs) self.assertTrue(isinstance(trs, OutgoingTransmittal)) self.assertEqual(trs.revisions_category, self.category) revision.refresh_from_db() self.assertIsNotNone(revision.transmittal)
def do_create_transmittal( user_id, from_category_id, to_category_id, document_ids, contract_number, purpose_of_issue, recipients_ids): # Display a small amount of progression # so the user won't get impatient current_task.update_state( state='PROGRESS', meta={'progress': 10}) from_category = Category.objects.get(pk=from_category_id) to_category = Category.objects.get(pk=to_category_id) recipients = Entity.objects.filter(pk__in=recipients_ids) documents = Document.objects \ .select_related() \ .filter(id__in=document_ids) revisions = [] for doc in documents: revisions.append(doc.get_latest_revision()) try: for recipient in recipients: doc, _, _ = create_transmittal( from_category, to_category, revisions, contract_number, recipient, purpose_of_issue=purpose_of_issue) msg = '''You successfully created transmittal <a href="{}">{}</a>'''.format(doc.get_absolute_url(), doc) notify(user_id, msg) user = User.objects.get(pk=user_id) activity_log.send(verb=Activity.VERB_CREATED, action_object=doc, sender=None, actor=user) except TransmittalError as e: msg = '''We failed to create a transmittal for the following reason: "{}".'''.format(e) notify(user_id, msg) return 'done'
def test_create_transmittal_for_review(self): doc_kwargs = { 'revision': { 'reviewers': [self.user1], 'leader': self.user2, 'approver': self.user3, 'trs_return_code': '1', 'purpose_of_issue': 'FR', 'received_date': datetime.datetime.today()}} revisions = self.create_docs(default_kwargs=doc_kwargs) revision = revisions[0] self.assertIsNone(revision.external_review_due_date) doc, trs, trs_rev = create_transmittal( self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs) revision.refresh_from_db() self.assertIsNotNone(revision.external_review_due_date)
def test_create_transmittal_for_review(self): doc_kwargs = { 'revision': { 'reviewers': [self.user1], 'leader': self.user2, 'approver': self.user3, 'received_date': datetime.datetime.today() } } revisions = self.create_docs(default_kwargs=doc_kwargs) doc, trs, trs_rev = create_transmittal(self.category, self.dst_category, revisions, self.linked_contract.number, self.entity, purpose_of_issue='FR') self.assertIsNotNone(trs) self.assertIsNotNone(trs.external_review_due_date)
def do_create_transmittal( user_id, from_category_id, to_category_id, document_ids, contract_number, recipients_ids): # Display a small amount of progression # so the user won't get impatient current_task.update_state( state='PROGRESS', meta={'progress': 10}) from_category = Category.objects.get(pk=from_category_id) to_category = Category.objects.get(pk=to_category_id) recipients = Entity.objects.filter(pk__in=recipients_ids) documents = Document.objects \ .select_related() \ .filter(id__in=document_ids) revisions = [] for doc in documents: revisions.append(doc.get_latest_revision()) try: for recipient in recipients: doc, _, _ = create_transmittal( from_category, to_category, revisions, contract_number, recipient) msg = '''You successfully created transmittal <a href="{}">{}</a>'''.format(doc.get_absolute_url(), doc) notify(user_id, msg) user = User.objects.get(pk=user_id.pk) activity_log.send(verb=Activity.VERB_CREATED, action_object=doc, sender=None, actor=user) except TransmittalError as e: msg = '''We failed to create a transmittal for the following reason: "{}".'''.format(e) notify(user_id, msg) return 'done'
def test_create_transmittal_for_review(self): doc_kwargs = { 'revision': { 'reviewers': [self.user1], 'leader': self.user2, 'approver': self.user3, 'trs_return_code': '1', 'purpose_of_issue': 'FR', 'received_date': datetime.datetime.today() } } revisions = self.create_docs(default_kwargs=doc_kwargs) revision = revisions[0] self.assertIsNone(revision.external_review_due_date) doc, trs, trs_rev = create_transmittal(self.category, self.dst_category, revisions, self.linked_contract.number, self.entity) self.assertIsNotNone(trs) revision.refresh_from_db() self.assertIsNotNone(revision.external_review_due_date)
def test_create_trs_with_invalid_revisions(self): """We must check that the given revisions are valid.""" with self.assertRaises(errors.InvalidRevisionsError): revisions = ['toto', 'tata', 'tutu'] create_transmittal(self.category, self.dst_category, revisions, self.linked_contract.number, self.entity)
def test_create_empty_transmittal(self): """A trs cannot be created without revisions.""" with self.assertRaises(errors.MissingRevisionsError): create_transmittal(self.category, self.dst_category, [], self.linked_contract.number, self.entity)
def test_create_empty_transmittal(self): """A trs cannot be created without revisions.""" with self.assertRaises(errors.MissingRevisionsError): create_transmittal( self.category, self.dst_category, [], self.linked_contract.number, self.entity)
def test_create_empty_transmittal(self): """A trs cannot be created without revisions.""" with self.assertRaises(errors.MissingRevisionsError): create_transmittal( self.category, self.dst_category, [], 'FAC10005', self.entity)