Example #1
0
    def setUp(self):
        super().setUp()
        Model = ContentType.objects.get_for_model(ContractorDeliverable)
        self.cat1 = CategoryFactory(category_template__metadata_model=Model)
        self.cat2 = CategoryFactory(category_template__metadata_model=Model)

        self.user1 = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.cat1,
            send_behind_schedule_alert_mails=True)
        self.user1.categories.add(self.cat2)
        self.user2 = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.cat2,
            send_behind_schedule_alert_mails=True)

        self.doc1 = DocumentFactory(
            category=self.cat1,
            metadata_factory_class=ContractorDeliverableFactory,
            revision_factory_class=ContractorDeliverableRevisionFactory)
        self.doc2 = DocumentFactory(
            category=self.cat2,
            metadata_factory_class=ContractorDeliverableFactory,
            revision_factory_class=ContractorDeliverableRevisionFactory)

        populate_values_list_cache()
Example #2
0
    def setUp(self):
        # Clear the values list cache
        cache.clear()

        try:
            document = Document.objects.get(
                document_key='FAC10005-CTR-000-EXP-LAY-4891')
            self.doc_category = document.category
        except Document.DoesNotExist:
            self.doc_category = CategoryFactory()
        contract = ContractFactory.create(number='FAC10005-CTR-CLT-TRS-00001',
                                          categories=[self.doc_category])
        self.contract_number = contract.number
        trs_content_type = ContentType.objects.get_for_model(Transmittal)
        self.trs_category = CategoryFactory(
            category_template__metadata_model=trs_content_type)

        self.tmpdir = tempfile.mkdtemp(prefix='phasetest_', suffix='_trs')
        self.incoming = join(self.tmpdir, 'incoming')
        self.tobechecked = join(self.tmpdir, 'tobechecked')
        self.accepted = join(self.tmpdir, 'accepted')
        self.rejected = join(self.tmpdir, 'rejected')

        os.mkdir(self.accepted)
        os.mkdir(self.rejected)
        os.mkdir(self.tobechecked)

        self.config = {
            'INCOMING_DIR': self.incoming,
            'REJECTED_DIR': self.rejected,
            'TO_BE_CHECKED_DIR': self.tobechecked,
            'ACCEPTED_DIR': self.accepted,
            'EMAIL_LIST': ['*****@*****.**'],
        }
Example #3
0
def test_get_category_list_from_name():
    category_1 = CategoryFactory(name='Category 1')
    category_2 = CategoryFactory(name='Category 2')
    theme = ThemeFactory(name='Theme 1')
    theme.categories.set([category_1, category_2])

    category_list = get_category_list_from_name('Category 1')
    assert len(category_list) == 1

    category_list = get_category_list_from_name('Theme 1')
    assert len(category_list) == 2
Example #4
0
    def setUp(self):
        document = Document.objects.get(
            document_key='FAC10005-CTR-000-EXP-LAY-4891')
        self.doc_category = document.category

        trs_content_type = ContentType.objects.get_for_model(Transmittal)
        self.trs_category = CategoryFactory(
            category_template__metadata_model=trs_content_type)

        self.tmpdir = tempfile.mkdtemp(prefix='phasetest_', suffix='_trs')
        self.incoming = join(self.tmpdir, 'incoming')
        self.tobechecked = join(self.tmpdir, 'tobechecked')
        self.accepted = join(self.tmpdir, 'accepted')
        self.rejected = join(self.tmpdir, 'rejected')

        os.mkdir(self.accepted)
        os.mkdir(self.rejected)
        os.mkdir(self.tobechecked)

        self.config = {
            'INCOMING_DIR': self.incoming,
            'REJECTED_DIR': self.rejected,
            'TO_BE_CHECKED_DIR': self.tobechecked,
            'ACCEPTED_DIR': self.accepted,
            'EMAIL_LIST': ['*****@*****.**'],
        }
Example #5
0
    def setUp(self):
        self.category = CategoryFactory()
        user = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.category)
        self.client.login(email=user.email, password='******')

        user2 = UserFactory(email='*****@*****.**', category=self.category)

        doc = DocumentFactory(
            document_key='hazop-report-1',
            category=self.category,
            revision={
                'leader': user,
            }

        )
        doc.latest_revision.start_review()

        for _ in range(5):
            for u in (user, user2):
                NoteFactory(
                    author=u,
                    document=doc,
                    revision=1)

        review_url = reverse('review_document', args=[doc.document_key])
        self.url = '%s%s' % (self.live_server_url, review_url)
        self.test_file = os.path.join(
            os.path.dirname(__file__),
            'casper_tests',
            'tests.js'
        )
Example #6
0
    def test_otg_creation(self):
        ct = ContentType.objects.get_for_model(OutgoingTransmittal)
        cat_template = CategoryTemplateFactory(
            metadata_model=ct)
        dest_cat = CategoryFactory(category_template=cat_template)
        ctr1 = EntityFactory(type='contractor')
        ctr2 = EntityFactory(type='contractor')
        # We have to link third parties to categories
        self.category.third_parties.add(ctr1, ctr2)
        dest_cat.third_parties.add(ctr1, ctr2)

        recipients_ids = [ctr1.pk, ctr2.pk]
        document_ids = [doc.pk for doc in self.docs]
        do_create_transmittal.delay(
            self.user.id,
            self.category.id,
            dest_cat.id,
            document_ids,
            self.contract.number,
            recipients_ids
        )
        # We have 2 docs and 2 recipients, so we expect 2 outgoing trs
        # and 2 notifications
        self.assertEqual(OutgoingTransmittal.objects.count(), 2)
        self.assertEqual(Notification.objects.count(), 2)
        # Check each doc revision links to both transmittals
        for rev in self.revisions:
            self.assertEqual(rev.transmittals.count(), 2)
Example #7
0
 def setUp(self):
     self.category = CategoryFactory()
     self.user = UserFactory(email='*****@*****.**',
                             password='******',
                             is_superuser=True,
                             category=self.category)
     self.client.login(email=self.user.email, password='******')
     self.doc1 = DocumentFactory(category=self.category,
                                 revision={
                                     'leader': self.user,
                                     'received_date': datetime.date.today(),
                                 })
     self.doc2 = DocumentFactory(category=self.category,
                                 revision={
                                     'leader': self.user,
                                     'received_date': datetime.date.today(),
                                 })
     self.doc3 = DocumentFactory(category=self.category,
                                 revision={
                                     'reviewers': [],
                                     'leader': None,
                                     'approver': None,
                                     'received_date': datetime.date.today(),
                                 })
     self.content_type = ContentType.objects.get_for_model(
         self.doc3.metadata)
     self.ok = 'The review started for the following documents'
     self.nok = "We failed to start the review for the following documents"
Example #8
0
    def setUp(self):
        delete_index()
        create_index()

        self.category = CategoryFactory()
        put_category_mapping(self.category.id)
        user = UserFactory(email='*****@*****.**', password='******',
                           is_superuser=True,
                           category=self.category)

        connect_signals()
        for doc_id in range(20):
            doc = DocumentFactory(
                document_key='hazop-report-%d' % doc_id,
                category=self.category,
            )
            index_document(doc.id)

        # ES needs some time to finish indexing
        time.sleep(1)

        document_list_url = reverse('category_document_list', args=[
            self.category.organisation.slug,
            self.category.slug
        ])
        self.url = '%s%s' % (self.live_server_url, document_list_url)
        self.client.login(email=user.email, password='******')
        self.test_file = os.path.join(
            os.path.dirname(__file__),
            'casper_tests',
            'tests.js'
        )
Example #9
0
    def test_updating_user_with_category_deletion(self):
        """Validation of required inlines.

        When a user is updated, one can require category deletions. We MUST
        make sure that there is always one category left.

        """
        user = UserFactory()
        category = CategoryFactory()
        category.users.add(user)
        category.save()

        url = reverse('admin:accounts_user_change', args=[user.id])
        data = {
            'email': '*****@*****.**',
            'name': 'Test',
            'password1': 'password',
            'password2': 'password',
            'Category_users-INITIAL_FORMS': 1,
            'Category_users-MAX_NUM_FORMS': 1000,
            'Category_users-TOTAL_FORMS': 1,
            'Category_users-0-DELETE': 1,
            'Category_users-0-id': category.id,
            'Category_users-0-user': user.id,
        }
        res = self.client.post(url, data)
        self.assertContains(res, 'Please select at least one category')
Example #10
0
 def setUp(self):
     self.category = CategoryFactory()
     self.user = UserFactory(name='User',
                             password='******',
                             is_superuser=True,
                             category=self.category)
     self.client.login(username=self.user.email, password='******')
Example #11
0
    def setUp(self):
        Model = ContentType.objects.get_for_model(ContractorDeliverable)
        self.category = CategoryFactory(category_template__metadata_model=Model)

        self.user = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.category)
        self.user2 = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.category)
        self.user3 = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.category)

        self.data = {
            'docclass': 3,
            'purpose_of_issue': 'FR',
            'created_on': '2015-01-01',
            'received_date': '2015-01-01'
        }
Example #12
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)
Example #13
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)
Example #14
0
    def setUp(self):
        self.category = CategoryFactory()
        self.user = UserFactory(
            email='*****@*****.**',
            password='******',
            is_superuser=True,
            category=self.category
        )
        self.other_user = UserFactory(
            email='*****@*****.**',
            password='******',
        )
        self.client.login(email=self.user.email, password='******')

        doc = DocumentFactory(
            document_key='test_key',
            category=self.category,
            revision={
                'reviewers': [],
                'leader': self.user,
                'received_date': datetime.date.today(),
            }
        )
        revision = doc.latest_revision
        revision.start_review()

        self.review = revision.get_review(self.user)
        self.url = self.review.get_comments_url()

        pdf_doc = 'sample_doc_pdf.pdf'
        self.sample_pdf = SimpleUploadedFile(pdf_doc, b'content')
Example #15
0
    def test_wrong_category_error(self):
        trs_import = self.prepare_fixtures('single_correct_trs',
                                           'FAC10005-CTR-CLT-TRS-00001')
        trs_import.doc_category = CategoryFactory()

        self.assertTrue(
            'wrong_category' in trs_import.errors['csv_content'][2])
Example #16
0
def test_log_aid_search_event(perimeters):
    theme_1 = ThemeFactory(name='Nature environnement risques')
    theme_2 = ThemeFactory(name='Developpement economique')
    category_1 = CategoryFactory(name='economie circulaire')

    request_get_urlencoded = (
        "drafts=True&call_for_projects_only=False"
        "&targeted_audiences=department"
        f"&perimeter={perimeters['montpellier'].id_slug}"
        f"&themes={theme_1.slug}&themes={theme_2.slug}"
        f"&categories={category_1.slug}&categories=&apply_before=")
    results_count = 15
    host = "francemobilites.aides-territoires.beta.gouv.fr"

    log_aidsearchevent(
        querystring=request_get_urlencoded,
        results_count=results_count,
        source=host)

    event = AidSearchEvent.objects.last()

    assert len(event.targeted_audiences) == 1
    assert event.targeted_audiences[0] == Aid.AUDIENCES.department
    assert event.perimeter == perimeters['montpellier']
    assert event.themes.count() == 2
    assert event.results_count == results_count
    assert event.source == 'francemobilites'
Example #17
0
 def setUp(self):
     self.trs_import = TrsImport(
         trs_dir='/tmp/dummy_dir/FAC10005-CTR-CLT-TRS-00001',
         tobechecked_dir='/tmp/dummy_dir',
         accepted_dir='/tmp/dummy_dir',
         rejected_dir='/tmp/dummy_dir',
         email_list=['*****@*****.**', '*****@*****.**'],
         contractor='dummy_dir',
         doc_category=CategoryFactory(),
         trs_category=CategoryFactory(),
     )
     self.trs_import._errors = {
         'error1': 'This is error 1',
         'error2': 'This is error 2',
     }
     self.report = ErrorReport(self.trs_import)
Example #18
0
 def setUp(self):
     self.category = CategoryFactory()
     user = UserFactory(email='*****@*****.**',
                        password='******',
                        is_superuser=True,
                        category=self.category)
     self.client.login(email=user.email, password='******')
     self.url = reverse('transmittal_list')
Example #19
0
 def category(self, create, extracted, **kwargs):
     if not create:
         return
     if extracted:
         extracted.users.add(self)
     else:
         category = CategoryFactory()
         category.users.add(self)
 def test_retrieve(self):
     category = CategoryFactory(name="test")
     api = reverse(f"{self.api_basename}-detail",
                   kwargs={"pk": category.id})
     response = self.client.get(api, format="json")
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(response.data['name'], category.name)
     self.assertEqual(response.data['slug'], category.slug)
Example #21
0
 def setUp(self):
     self.category = CategoryFactory()
     self.user = UserFactory(email='*****@*****.**',
                             password='******',
                             is_superuser=True,
                             category=self.category)
     self.doc = DocumentFactory(document_key='HAZOP-related',
                                category=self.category)
 def test_get(self):
     category = CategoryFactory(name="test")
     api = reverse(f"{self.api_basename}-list")
     response = self.client.get(api)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(len(response.data["results"]), 1)
     self.assertEqual(response.data["results"][0]["name"], category.name)
     self.assertEqual(response.data["results"][0]["slug"], category.slug)
Example #23
0
 def setUp(self):
     self.category = CategoryFactory()
     self.user = UserFactory(email='*****@*****.**',
                             password='******',
                             is_superuser=True,
                             category=self.category)
     self.client.login(email=self.user.email, password='******')
     Model = ContentType.objects.get_for_model(ContractorDeliverable)
     self.category = CategoryFactory(
         category_template__metadata_model=Model)
     self.docs = [
         DocumentFactory(
             metadata_factory_class=ContractorDeliverableFactory,
             revision_factory_class=ContractorDeliverableRevisionFactory,
             category=self.category) for _ in range(1, 3)
     ]
     self.revisions = [doc.get_latest_revision() for doc in self.docs]
     self.contract = ContractFactory.create(categories=[self.category])
Example #24
0
 def setUp(self):
     self.category = CategoryFactory()
     user = UserFactory(email='*****@*****.**',
                        password='******',
                        is_superuser=True,
                        category=self.category)
     self.client.login(email=user.email, password='******')
     self.doc = DocumentFactory()
     self.rev = self.doc.get_latest_revision()
Example #25
0
 def setUp(self):
     Model = ContentType.objects.get_for_model(ContractorDeliverable)
     self.category = CategoryFactory(
         category_template__metadata_model=Model)
     self.users = [
         UserFactory(email='*****@*****.**' % user,
                     password='******',
                     category=self.category) for user in range(1, 5)
     ]
Example #26
0
 def setUp(self):
     self.category = CategoryFactory()
     user = UserFactory(
         email='*****@*****.**',
         password='******',
         is_superuser=True,
         category=self.category,
     )
     self.client.login(email=user.email, password='******')
Example #27
0
def test_categories_filter_overriding(client, settings):
    categories = [
        CategoryFactory(name='Category 1'),
        CategoryFactory(name='Category 2'),
        CategoryFactory(name='Category 3'),
        CategoryFactory(name='Category 4'),
        CategoryFactory(name='Category 5'),
    ]

    # We create a minisite with all categories pre-filter
    page = MinisiteFactory(title='Gloubiboulga page',
                           search_querystring='text=fromage')
    page.available_categories.set(categories)
    page_url = reverse('search_view')
    page_host = '{}.aides-territoires'.format(page.slug)
    settings.ALLOWED_HOSTS = [page_host]

    # All categories appear in the form
    res = client.get(page_url, HTTP_HOST=page_host)
    assert res.status_code == 200
    content = res.content.decode()
    assert '<option value="category-1"' in content
    assert '<option value="category-2"' in content
    assert '<option value="category-3"' in content
    assert '<option value="category-4"' in content
    assert '<option value="category-5"' in content

    # We create a minisite with a category pre-filter
    page = MinisiteFactory(title='Gloubiboulga page 2',
                           search_querystring='text=fromage')
    page.available_categories.set(categories[:2])
    page_url = reverse('search_view')
    page_host = '{}.aides-territoires'.format(page.slug)
    settings.ALLOWED_HOSTS = [page_host]

    # Only the available categories appear in the form
    res = client.get(page_url, HTTP_HOST=page_host)
    assert res.status_code == 200
    content = res.content.decode()
    assert '<option value="category-1"' in content
    assert '<option value="category-2"' in content
    assert '<option value="category-3"' not in content
    assert '<option value="category-4"' not in content
    assert '<option value="category-5"' not in content
Example #28
0
    def setUp(self):
        doc_category = CategoryFactory()
        self.doc_category_path = '{}/{}'.format(
            doc_category.organisation.slug,
            doc_category.category_template.slug)

        trs_content_type = ContentType.objects.get_for_model(Transmittal)
        trs_category = CategoryFactory(category_template__metadata_model=trs_content_type)
        self.trs_category_path = '{}/{}'.format(
            trs_category.organisation.slug,
            trs_category.category_template.slug)

        path_config = settings.TRS_IMPORTS_CONFIG
        ctr_path_config = path_config.get(TEST_CTR)
        self.import_root = settings.TRS_IMPORTS_ROOT
        self.incoming_dir = ctr_path_config['INCOMING_DIR']
        self.rejected_dir = ctr_path_config['REJECTED_DIR']
        self.to_be_checked_dir = ctr_path_config['TO_BE_CHECKED_DIR']
        self.accepted_dir = ctr_path_config['ACCEPTED_DIR']
Example #29
0
 def setUp(self):
     self.category = CategoryFactory()
     self.user = UserFactory(email='*****@*****.**',
                             password='******',
                             is_superuser=True,
                             category=self.category)
     self.client.login(email=self.user.email, password='******')
     self.url = reverse(
         'export_create',
         args=[self.category.organisation.slug, self.category.slug])
Example #30
0
    def setUp(self):
        self.category = CategoryFactory()
        self.user = UserFactory(email='*****@*****.**',
                                password='******',
                                category=self.category)
        self.client.login(email=self.user.email, password='******')

        self.user2 = UserFactory(email='*****@*****.**',
                                 password='******',
                                 category=self.category)