示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
    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)
示例#12
0
    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)
示例#13
0
    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)
示例#14
0
    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)
示例#15
0
文件: tasks.py 项目: Talengi/phase
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'
示例#16
0
    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)
示例#17
0
    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)
示例#18
0
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'
示例#19
0
    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)
示例#20
0
 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)
示例#21
0
 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)
示例#22
0
 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)
示例#23
0
 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)