Exemple #1
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
     self.org = Organisation.objects.create(name='akvo', long_name='akvo foundation')
     self.user_password = '******'
     self.user = self._create_user('*****@*****.**', self.user_password)
     self.c.login(username=self.user.username, password=self.user_password)
    def setUp(self):
        # Create necessary groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create project
        self.project = Project.objects.create(title="Test Project")

        # Create reporting organisation
        self.reporting_org = Organisation.objects.create(
            name="REST reporting",
            long_name="REST reporting org",
            new_organisation_type=22)

        # Create partnership
        Partnership.objects.create(
            project=self.project,
            organisation=self.reporting_org,
            iati_organisation_role=Partnership.IATI_REPORTING_ORGANISATION,
        )

        # Create active user
        self.user, self.username, self.password = create_user()

        # Create employment
        Employment.objects.create(
            user=self.user,
            organisation=self.reporting_org,
            group=Group.objects.get(name='Admins'),
            is_approved=True,
        )

        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
    def setUp(self):
        # Create necessary groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create project
        self.project = Project.objects.create(title="Test Project")

        # Create reporting organisation
        self.reporting_org = Organisation.objects.create(
            name="REST reporting",
            long_name="REST reporting org",
            new_organisation_type=22
        )

        # Create partnership
        Partnership.objects.create(
            project=self.project,
            organisation=self.reporting_org,
            iati_organisation_role=Partnership.IATI_REPORTING_ORGANISATION,
        )

        # Create active user
        self.user, self.username, self.password = create_user()

        # Create employment
        Employment.objects.create(
            user=self.user,
            organisation=self.reporting_org,
            group=Group.objects.get(name='Admins'),
            is_approved=True,
        )

        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
Exemple #4
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
     self.password = '******'
     self.user1 = self._create_user('*****@*****.**', self.password, is_admin=True)
     self.user2 = self._create_user('*****@*****.**', self.password, is_admin=True)
     self.user3 = self._create_user('*****@*****.**', self.password)
     self.org = Organisation.objects.create(name='akvo', long_name='akvo foundation')
     self.c.login(username=self.user1.username, password=self.password)
     self.admin_group = Group.objects.get(name='Admins')
     self.user_group = Group.objects.get(name='Users')
Exemple #5
0
    def setUp(self):
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
        self.org = Organisation.objects.create(name='akvo',
                                               long_name='akvo foundation')
        self.user_password = '******'
        self.user = self._create_user('*****@*****.**', self.user_password)
        self.c.login(username=self.user.username, password=self.user_password)

        version = Version.objects.create(code=settings.IATI_VERSION)
        self.country = Country.objects.create(code='CI',
                                              name=u'CI - C\xc3\xb4te Divoire',
                                              version=version)
    def setUp(self):
        r"""
           User-L   User-M      User-N     User-O   User-P
             |         \        /   \      /          /
         (A-owned)      \      /     \    /          /
         Org-AA -------- Org-A       Org-B ----- Org-BB (explicitly B-owned)
            |           /      \      /    \             \
            |          /        \    /      \             \
            +------ Project-X   Project-Y   Project-Z    Project-W
        """

        # Setup groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Setup projects
        self.project_x = self.create_project('Project-X')
        self.project_y = self.create_project('Project-Y')
        self.project_z = self.create_project('Project-Z')
        self.project_w = self.create_project('Project-W')

        # Setup organisations and partnerships
        self.org_a = self.create_organisation(name='Org-A')
        self.make_partner(self.project_x, self.org_a,
                          Partnership.IATI_REPORTING_ORGANISATION)
        self.make_partner(self.project_y, self.org_a,
                          Partnership.IATI_REPORTING_ORGANISATION)

        self.org_b = self.create_organisation(name='Org-B')
        self.make_partner(self.project_y, self.org_b,
                          Partnership.IATI_IMPLEMENTING_PARTNER)
        self.make_partner(self.project_z, self.org_b,
                          Partnership.IATI_REPORTING_ORGANISATION)

        self.org_aa = self.create_organisation(name='Org-AA',
                                               can_create_projects=False)
        self.make_partner(self.project_x, self.org_aa,
                          Partnership.IATI_IMPLEMENTING_PARTNER)

        self.org_bb = self.create_organisation(name='Org-BB',
                                               can_create_projects=False)
        self.org_bb.content_owner = self.org_b
        self.org_bb.save()
        self.make_partner(self.project_w, self.org_bb,
                          Partnership.IATI_REPORTING_ORGANISATION)

        # Setup users (employments are setup in tests)
        self.user_l = self.create_user('*****@*****.**')
        self.user_m = self.create_user('*****@*****.**')
        self.user_n = self.create_user('*****@*****.**')
        self.user_o = self.create_user('*****@*****.**')
        self.user_p = self.create_user('*****@*****.**')
Exemple #7
0
    def setUp(self):
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
        self.org = Organisation.objects.create(name='akvo', long_name='akvo foundation')
        self.user_password = '******'
        self.user = self._create_user('*****@*****.**', self.user_password)
        self.c.login(username=self.user.username, password=self.user_password)

        version = Version.objects.create(code=settings.IATI_VERSION)
        self.country = Country.objects.create(
            code='CI',
            name=u'CI - C\xc3\xb4te Divoire',
            version=version
        )
Exemple #8
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
     self.password = '******'
     self.user1 = self._create_user('*****@*****.**',
                                    self.password,
                                    is_admin=True)
     self.user2 = self._create_user('*****@*****.**',
                                    self.password,
                                    is_admin=True)
     self.org = Organisation.objects.create(name='akvo',
                                            long_name='akvo foundation')
     self.c.login(username=self.user1.username, password=self.password)
     self.admin_group = Group.objects.get(name='Admins')
     self.user_group = Group.objects.get(name='Users')
Exemple #9
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.admin_group = Group.objects.get(name='Admins')
     self.user_group = Group.objects.get(name='Users')
     self.username = '******'
     self.password = '******'
     self.org1 = Organisation.objects.create(name='akvo',
                                             long_name='akvo foundation')
     self.org2 = Organisation.objects.create(name='icco',
                                             long_name='icco foundation')
     for org in (self.org1, self.org2):
         project = Project.objects.create()
         project.publishingstatus.status = 'published'
         project.publishingstatus.save()
         Partnership.objects.create(project=project, organisation=org)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
Exemple #10
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.admin_group = Group.objects.get(name='Admins')
     self.user_group = Group.objects.get(name='Users')
     self.username = '******'
     self.password = '******'
     self.title = 'Admiral'
     self.first_name = 'John'
     self.last_name = 'Doe'
     self.org1 = Organisation.objects.create(name='akvo', long_name='akvo foundation')
     self.org2 = Organisation.objects.create(name='icco', long_name='icco foundation')
     for org in (self.org1, self.org2):
         project = Project.objects.create()
         project.publish()
         Partnership.objects.create(project=project, organisation=org)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
Exemple #11
0
    def setUp(self):
        """ Setup a minimal DB for the tests. """

        self.project = Project.objects.create(
            title="REST test project",
        )

        # Create groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create organisation
        self.reporting_org = Organisation.objects.create(
            id=1337,
            name="Test REST reporting",
            long_name="Test REST reporting org",
            new_organisation_type=22
        )

        # Create partnership
        self.partnership = Partnership.objects.create(
            project=self.project,
            organisation=self.reporting_org,
            iati_organisation_role=Partnership.IATI_REPORTING_ORGANISATION,
        )

        # Create active user
        self.username = "******"
        self.password = "******"
        self.user = User.objects.create_user(
            username=self.username,
            email="*****@*****.**",
            password=self.password,
        )
        self.user.is_active = True
        self.user.is_admin = True
        self.user.is_superuser = True
        self.user.save()

        # Create employment
        self.employment = Employment.objects.create(
            user=self.user,
            organisation=self.reporting_org,
            is_approved=True,
        )

        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
        self.setup_results_framework()
Exemple #12
0
    def setUp(self):
        """
        User M       User N      User O
           \        /   \        /
            \      /     \      /
             Admins       Users
            /      \     /   \
           /        \   /     \
        Org X      Org Y     Org Z
        """

        # self.tearDown()
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        self.user_m = self.create_user('*****@*****.**')
        self.user_n = self.create_user('*****@*****.**')
        self.user_o = self.create_user('*****@*****.**')

        self.org_x = _create_organisation('X')
        self.org_y = _create_organisation('Y')
        self.org_z = _create_organisation('Z')

        self.admin_m_org_x = _create_employment(self.user_m,
                                                self.org_x,
                                                group='Admins')
        self.admin_m_org_y = _create_employment(self.user_m,
                                                self.org_y,
                                                group='Admins')

        self.admin_n_org_x = _create_employment(self.user_n,
                                                self.org_x,
                                                group='Admins')
        self.admin_n_org_y = _create_employment(self.user_n,
                                                self.org_y,
                                                group='Admins')
        self.user_n_org_y = _create_employment(self.user_n,
                                               self.org_y,
                                               group='Users')
        self.user_n_org_z = _create_employment(self.user_n,
                                               self.org_z,
                                               group='Users')

        self.user_o_org_z = _create_employment(self.user_o,
                                               self.org_z,
                                               group='Users')
    def setUp(self):
        """Setup the database as required."""

        # Create user auth groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        self.project = Project.objects.create(
            title="REST test project",
        )

        # Create organisation
        self.reporting_org = Organisation.objects.create(
            id=1337,
            name="Test REST reporting",
            long_name="Test REST reporting org",
            new_organisation_type=22
        )

        Partnership.objects.create(
            project=self.project,
            organisation=self.reporting_org,
            iati_organisation_role=Partnership.IATI_REPORTING_ORGANISATION,
        )

        location = ProjectLocation.objects.create(location_target=self.project)
        self.admin_location = AdministrativeLocation.objects.create(location=location)

        self.username = '******'
        self.password = '******'
        self.user = User.objects.create(
            username=self.username,
            email=self.username,
            is_active=True
        )
        self.user.set_password(self.password)
        self.user.save()
        Employment.objects.create(
            user=self.user,
            organisation=self.reporting_org,
            group=Group.objects.get(name='Admins'),
            is_approved=True
        )

        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
    def setUp(self):
        """Setup the database as required."""

        # Create user auth groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        self.project = Project.objects.create(
            title="REST test project",
        )

        # Create organisation
        self.reporting_org = Organisation.objects.create(
            id=1337,
            name="Test REST reporting",
            long_name="Test REST reporting org",
            new_organisation_type=22
        )

        Partnership.objects.create(
            project=self.project,
            organisation=self.reporting_org,
            iati_organisation_role=Partnership.IATI_REPORTING_ORGANISATION,
        )

        location = ProjectLocation.objects.create(location_target=self.project)
        self.admin_location = AdministrativeLocation.objects.create(location=location)

        self.username = '******'
        self.password = '******'
        self.user = User.objects.create(
            username=self.username,
            email=self.username,
            is_active=True
        )
        self.user.set_password(self.password)
        self.user.save()
        Employment.objects.create(
            user=self.user,
            organisation=self.reporting_org,
            group=Group.objects.get(name='Admins'),
            is_approved=True
        )

        self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
Exemple #15
0
    def create_employments(self):
        r"""
        User M       User N      User O
           \        /   \        /
            \      /     \      /
             Admins       Users
            /      \     /   \
           /        \   /     \
        Org X      Org Y     Org Z
        """

        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        self.user_m = self.create_user('*****@*****.**')
        self.user_n = self.create_user('*****@*****.**')
        self.user_o = self.create_user('*****@*****.**')

        self.org_x = self.create_organisation('X')
        self.org_y = self.create_organisation('Y')
        self.org_z = self.create_organisation('Z')

        self.admin_m_org_x = self.make_employment(self.user_m,
                                                  self.org_x,
                                                  group_name='Admins')
        self.admin_m_org_y = self.make_employment(self.user_m,
                                                  self.org_y,
                                                  group_name='Admins')

        self.admin_n_org_x = self.make_employment(self.user_n,
                                                  self.org_x,
                                                  group_name='Admins')
        self.admin_n_org_y = self.make_employment(self.user_n,
                                                  self.org_y,
                                                  group_name='Admins')
        self.user_n_org_y = self.make_employment(self.user_n,
                                                 self.org_y,
                                                 group_name='Users')
        self.user_n_org_z = self.make_employment(self.user_n,
                                                 self.org_z,
                                                 group_name='Users')

        self.user_o_org_z = self.make_employment(self.user_o,
                                                 self.org_z,
                                                 group_name='Users')
Exemple #16
0
    def setUp(self):
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create organisation
        self.org = Organisation.objects.create(name='org', long_name='org')

        # Create three projects - two of which have the org as a partner
        self.projects = []
        for i in range(3):
            project = Project.objects.create()
            self.projects.append(project)
            if i > 0:
                Partnership.objects.create(organisation=self.org, project=project)

        self.user = PermissionsTestCase.create_user('*****@*****.**')
        self.group = Group.objects.get(name='Users')
        Employment.objects.create(
            user=self.user, organisation=self.org, group=self.group, is_approved=True
        )
Exemple #17
0
 def setUp(self):
     # Create necessary groups
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     # Create a validation set
     self.validation = ProjectEditorValidationSet.objects.create(
         name='test')
     # Create organisation
     self.reporting_org = Organisation.objects.create(
         id=1337,
         name="Test REST reporting",
         long_name="Test REST reporting org",
         new_organisation_type=22,
         can_create_projects=True,
     )
     username = '******'
     password = '******'
     group = Group.objects.get(name='Admins')
     self.user = self.create_user(username, password, group,
                                  self.reporting_org)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
     self.c.login(username=username, password=password)
Exemple #18
0
    def setUpClass(cls):
        """Setup the DB with all the objects we require.

        The objects created here are the ones which have ViewSets that are
        subclassed from PublicProjectViewSet or that have some code for dealing
        with permissions for them in akvo.rsr.permissions

        """

        # Prepend our messages to default messages.
        cls.longMessage = True

        cls.model_map = cls.populate_model_map()
        cls.ensure_model_map_populated(cls.model_map)

        # Setup Groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create a couple of organisations
        for name in ('Akvo', 'WASH Org'):
            M.Organisation.objects.create(name=name,
                                          long_name=name,
                                          can_create_projects=True)

        # Create a category
        category = M.Category.objects.create(name='category1')

        # Create users in each of the auth groups for all the orgs
        for organisation in M.Organisation.objects.all():
            org_name = slugify(organisation.name)
            for group in Group.objects.all():
                username = '******'.format(slugify(group.name), org_name)
                cls.create_user(username, group, organisation)

            # Create an admin (general RSR admin, usually only akvo employees)
            group = Group.objects.get(name='Admins')
            username = '******'.format(org_name)
            admin = cls.create_user(username,
                                    group,
                                    organisation,
                                    is_admin=True)

            # Create a superuser
            group = Group.objects.get(name='Admins')
            username = '******'.format(org_name)
            cls.create_user(username, group, organisation, is_superuser=True)

            # Create organisation indicator labels
            label = M.OrganisationIndicatorLabel.objects.create(
                organisation=organisation, label='label1')

            # Create Projects
            for project_name in ('Private project', 'Public project'):
                for status in (M.PublishingStatus.STATUS_PUBLISHED,
                               M.PublishingStatus.STATUS_UNPUBLISHED):
                    title = '{} - {} - {}'.format(project_name,
                                                  organisation.name, status)
                    is_public = False if 'private' in project_name.lower(
                    ) else True
                    project = M.Project.objects.create(title=title,
                                                       is_public=is_public)
                    cls.set_publishing_status(project, status)
                    M.Partnership.objects.create(
                        organisation=organisation,
                        project=project,
                        iati_organisation_role=M.Partnership.
                        IATI_FUNDING_PARTNER)

                    # Create ProjectHierarchy
                    if status == M.PublishingStatus.STATUS_PUBLISHED:
                        M.ProjectHierarchy.objects.create(
                            organisation=organisation,
                            root_project=project,
                            max_depth=2)

            for project in organisation.all_projects().distinct():
                # Per-project objects
                # benchmark
                benchmark_name = M.Benchmarkname.objects.create(
                    name='benchmark_name')
                M.Benchmark.objects.create(project=project,
                                           name=benchmark_name,
                                           category=category,
                                           value=10)
                # budget
                M.BudgetItem.objects.create(project=project)
                M.CountryBudgetItem.objects.create(project=project)
                # crs
                crs = M.CrsAdd.objects.create(project=project)
                M.CrsAddOtherFlag.objects.create(crs=crs)
                # fss
                fss = M.Fss.objects.create(project=project)
                M.FssForecast.objects.create(fss=fss)
                # goal
                M.Goal.objects.create(project=project)
                # legacy data
                M.LegacyData.objects.create(project=project)
                # link
                M.Link.objects.create(project=project, url='akvo.org')
                # humanitarian scope
                M.HumanitarianScope.objects.create(project=project)
                # conditions
                M.ProjectCondition.objects.create(project=project,
                                                  text='Condition {}'.format(
                                                      project.title))
                # contacts
                M.ProjectContact.objects.create(project=project)
                # custom fields
                M.ProjectCustomField.objects.create(project=project,
                                                    section=1,
                                                    order=4)
                # documents
                document = M.ProjectDocument.objects.create(project=project)
                # document categories
                M.ProjectDocumentCategory.objects.create(document=document,
                                                         category='A')
                # recipient country and region
                M.RecipientCountry.objects.create(project=project)
                M.RecipientRegion.objects.create(project=project)
                # related project
                # # set other project from organisation as related project
                other_project = M.Project.objects.exclude(
                    id__in=[project.id]).filter(
                        partnerships__organisation=organisation,
                        is_public=True).first()
                M.RelatedProject.objects.create(project=project,
                                                related_project=other_project)
                # planned disbursement
                M.PlannedDisbursement.objects.create(project=project)
                # policy marker
                M.PolicyMarker.objects.create(project=project)
                # sector
                M.Sector.objects.create(project=project)
                # transaction
                transaction = M.Transaction.objects.create(project=project)
                # transaction sector
                M.TransactionSector.objects.create(transaction=transaction)
                # iati export
                export = M.IatiExport.objects.create(
                    reporting_organisation=organisation, user=admin)
                for project_ in organisation.projects.all():
                    export.projects.add(project_)
                # location
                location = M.ProjectLocation.objects.create(
                    location_target=project,
                    latitude=project.id,
                    longitude=project.id)
                # administrative location
                M.AdministrativeLocation.objects.create(location=location)
                # result
                result = M.Result.objects.create(project=project)
                # indicator
                indicator = M.Indicator.objects.create(result=result)
                # default period
                # NOTE: Create default periods after indicators to prevent new
                # indicator periods from being created.
                M.DefaultPeriod.objects.create(project=project,
                                               period_start='2019-12-01',
                                               period_end='2020-12-01')
                # indicator dimension name and value
                dimension_name = M.IndicatorDimensionName.objects.create(
                    project=project)
                dimension_value = M.IndicatorDimensionValue.objects.create(
                    name=dimension_name)
                # indicator label
                M.IndicatorLabel.objects.create(indicator=indicator,
                                                label=label)
                # indicator reference
                M.IndicatorReference.objects.create(indicator=indicator)
                # indicator period
                period = M.IndicatorPeriod.objects.create(indicator=indicator)
                # indicator period actual location
                M.IndicatorPeriodActualLocation.objects.create(period=period)
                # indicator period target location
                M.IndicatorPeriodTargetLocation.objects.create(period=period)
                # narrative report
                M.NarrativeReport.objects.create(period_start="2017-10-01",
                                                 period_end="2017-12-01",
                                                 category=label,
                                                 project=project)

                # Per-project per-user objects
                for user in organisation.all_users():
                    title = '{}: {}'.format(user.username, project.title)
                    # disaggregation target
                    M.IndicatorDisaggregationTarget.objects.create(
                        indicator=indicator,
                        dimension_value=dimension_value,
                        value=0)
                    M.DisaggregationTarget.objects.create(
                        period=period,
                        dimension_value=dimension_value,
                        value=0)

                    # updates
                    update = M.ProjectUpdate.objects.create(project=project,
                                                            user=user,
                                                            title=title)
                    # update location
                    M.ProjectUpdateLocation.objects.create(
                        location_target=update,
                        latitude=update.id,
                        longitude=update.id)
                    # indicator period data
                    data = M.IndicatorPeriodData.objects.create(period=period,
                                                                user=user)
                    # disaggregation
                    M.Disaggregation.objects.create(
                        update=data, dimension_value=dimension_value)
                    # indicator period data comment
                    M.IndicatorPeriodDataComment.objects.create(data=data,
                                                                user=user)

            # PartnerSite
            M.PartnerSite.objects.create(organisation=organisation,
                                         hostname='{}.org'.format(org_name))
Exemple #19
0
def populate_test_data(seed=42):
    """Populate the DB for tests using the factories defined."""

    reseed_random(seed)
    random.seed(seed)

    check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

    UserFactory.create(is_admin=True, is_superuser=True, is_staff=True)
    UserFactory.create_batch(4)
    OrganisationFactory.create_batch(3)
    OrganisationCustomFieldFactory.create_batch(9)

    ProjectFactory.create_batch(10)
    RecipientCountryFactory.create_batch(10)
    CrsAddFactory.create_batch(10)
    FssFactory.create_batch(10)
    PartnershipFactory.create_batch(10)

    ProjectCustomFieldFactory.create_batch(20)
    ProjectCommentFactory.create_batch(20)
    RelatedProjectFactory.create_batch(10)

    ProjectUpdateFactory.create_batch(100)
    ResultFactory.create_batch(40)
    IndicatorFactory.create_batch(80)
    IndicatorReferenceFactory.create_batch(80)
    IndicatorPeriodFactory.create_batch(240)
    IndicatorPeriodActualDimensionFactory.create_batch(240)
    IndicatorPeriodTargetDimensionFactory.create_batch(240)
    IndicatorPeriodActualLocationFactory.create_batch(240)
    IndicatorPeriodTargetLocationFactory.create_batch(240)
    IndicatorPeriodDataFactory.create_batch(1200)
    IndicatorPeriodDataCommentFactory.create_batch(1200)

    IatiExportFactory.create_batch(3)
    IatiImportFactory.create_batch(3)

    for _ in range(10):
        created = False
        while not created:
            country_code = random.choice(ISO_3166_COUNTRIES)[0]
            country_info = Country.fields_from_iso_code(country_code)
            country, created = Country.objects.get_or_create(**country_info)

    EmploymentFactory.create_batch(30)

    KeywordFactory.create_batch(20)
    for keyword in Keyword.objects.all():
        for project in Project.objects.all():
            if keyword.id % project.id != 0:
                continue
            project.keywords.add(keyword)

    ProjectEditorValidationSetFactory.create_batch(2)
    ProjectEditorValidationFactory.create_batch(20)

    ReportFormatFactory.create_batch(4)
    ReportFactory.create_batch(4)

    # FIXME: Enforce this!
    verify_model_instances()
Exemple #20
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.c = Client(HTTP_HOST=settings.RSR_DOMAIN)
Exemple #21
0
        widget_views.RandomProjectNarrowView.as_view(),
        name="widget_random_project_narrow"),
    url(r'^widgets/project-small/(?P<project_id>\d+)/$',
        widget_views.ProjectSmallView.as_view(),
        name="widget_project_small"),
    url(r'^widgets/project-small/random/$',
        widget_views.RandomProjectSmallView.as_view(),
        name="widget_random_project_small"),
)

handler500 = 'akvo.rsr.views.error.server_error'

urlpatterns += patterns(
    '',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT
    }),
)

if 'rosetta' in settings.INSTALLED_APPS:
    urlpatterns += patterns(
        '',
        url(r'^rosetta/', include('rosetta.urls')),
    )

if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

if settings.REQUIRED_AUTH_GROUPS:
    check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
Exemple #22
0
    def setUp(self):
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
        # Create organisations
        self.orgs = [
            Organisation.objects.create(name='org-{}'.format(i),
                                        long_name='org-{}'.format(i))
            for i in range(2)
        ]

        # Create one Project per organisation
        self.projects = []
        for org in self.orgs:
            project = Project.objects.create()
            Partnership.objects.create(organisation=org, project=project)
            self.projects.append(project)

        # PartnerSite
        self.partner_sites = [
            PartnerSite.objects.create(organisation=org,
                                       hostname=org.name,
                                       piwik_id=0) for org in self.orgs
        ]

        # Create users, one "normal" user per organisation
        self.users = []
        self.iati_exports = []
        group = Group.objects.get(name='Users')
        for i, org in enumerate(self.orgs):
            user = self.create_user('user@org-{}.org'.format(i))
            Employment.objects.create(user=user,
                                      organisation=org,
                                      group=group,
                                      is_approved=True)
            self.users.append(user)

            iati_export = IatiExport.objects.create(reporting_organisation=org,
                                                    user=user)
            self.iati_exports.append(iati_export)

        # For each user create a project update
        self.project_updates = [
            ProjectUpdate.objects.create(user=user_, project=project_)
            for (project_, user_) in zip(self.projects, self.users)
        ]

        # Results
        self.results = [
            Result.objects.create(project=project_)
            for project_ in self.projects
        ]

        # Indicators
        self.indicators = [
            Indicator.objects.create(result=result) for result in self.results
        ]

        # Indicator periods
        self.indicator_periods = [
            IndicatorPeriod.objects.create(indicator=indicator)
            for indicator in self.indicators
        ]

        # Indicator updates
        self.indicator_updates = [
            IndicatorPeriodData.objects.create(period=period,
                                               user=self.users[i])
            for i, period in enumerate(self.indicator_periods)
        ]

        # Indicator update comments
        self.indicator_update_comments = [
            IndicatorPeriodDataComment.objects.create(data=update,
                                                      user=self.users[i])
            for i, update in enumerate(self.indicator_updates)
        ]

        # Project locations
        self.project_locations = [
            ProjectLocation.objects.create(location_target=project_)
            for project_ in self.projects
        ]

        # Administrative locations
        self.admin_locations = [
            AdministrativeLocation.objects.create(location=location)
            for location in self.project_locations
        ]

        # Organisation locations
        self.org_locations = [
            OrganisationLocation.objects.create(location_target=org)
            for org in self.orgs
        ]
    def setUp(self):
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
        # Create organisations
        self.orgs = [
            Organisation.objects.create(name='org-{}'.format(i), long_name='org-{}'.format(i))
            for i in range(2)
        ]

        # Create one Project per organisation
        self.projects = []
        for org in self.orgs:
            project = Project.objects.create()
            Partnership.objects.create(organisation=org, project=project)
            self.projects.append(project)

        # PartnerSite
        self.partner_sites = [
            PartnerSite.objects.create(organisation=org, hostname=org.name, piwik_id=0)
            for org in self.orgs
        ]

        # Create users, one "normal" user per organisation
        self.users = []
        self.iati_exports = []
        group = Group.objects.get(name='Users')
        for i, org in enumerate(self.orgs):
            user = self.create_user('user@org-{}.org'.format(i))
            Employment.objects.create(user=user, organisation=org, group=group, is_approved=True)
            self.users.append(user)

            iati_export = IatiExport.objects.create(reporting_organisation=org, user=user)
            self.iati_exports.append(iati_export)

        # For each user create a project update
        self.project_updates = [
            ProjectUpdate.objects.create(user=user_, project=project_)
            for (project_, user_) in zip(self.projects, self.users)
        ]

        # Results
        self.results = [
            Result.objects.create(project=project_) for project_ in self.projects
        ]

        # Indicators
        self.indicators = [
            Indicator.objects.create(result=result) for result in self.results
        ]

        # Indicator periods
        self.indicator_periods = [
            IndicatorPeriod.objects.create(indicator=indicator) for indicator in self.indicators
        ]

        # Indicator updates
        self.indicator_updates = [
            IndicatorPeriodData.objects.create(period=period, user=self.users[i])
            for i, period in enumerate(self.indicator_periods)
        ]

        # Indicator update comments
        self.indicator_update_comments = [
            IndicatorPeriodDataComment.objects.create(data=update, user=self.users[i])
            for i, update in enumerate(self.indicator_updates)
        ]

        # Project locations
        self.project_locations = [
            ProjectLocation.objects.create(location_target=project_) for project_ in self.projects
        ]

        # Administrative locations
        self.admin_locations = [
            AdministrativeLocation.objects.create(location=location)
            for location in self.project_locations
        ]

        # Organisation locations
        self.org_locations = [
            OrganisationLocation.objects.create(location_target=org)
            for org in self.orgs
        ]
    def setUpClass(cls):
        """Setup the DB with all the objects we require.

        The objects created here are the ones which have ViewSets that are
        subclassed from PublicProjectViewSet or that have some code for dealing
        with permissions for them in akvo.rsr.permissions

        """

        # Prepend our messages to default messages.
        cls.longMessage = True

        cls.model_map = cls.populate_model_map()
        cls.ensure_model_map_populated(cls.model_map)

        # Setup Groups
        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        # Create a couple of organisations
        for name in ('Akvo', 'WASH Org'):
            M.Organisation.objects.create(name=name, long_name=name, can_create_projects=True)

        # Create a category
        category = M.Category.objects.create(name='category1')

        # Create users in each of the auth groups for all the orgs
        for organisation in M.Organisation.objects.all():
            org_name = slugify(organisation.name)
            for group in Group.objects.all():
                username = '******'.format(slugify(group.name), org_name)
                cls.create_user(username, group, organisation)

            # Create an admin (general RSR admin, usually only akvo employees)
            group = Group.objects.get(name='Admins')
            username = '******'.format(org_name)
            admin = cls.create_user(username, group, organisation, is_admin=True)

            # Create a superuser
            group = Group.objects.get(name='Admins')
            username = '******'.format(org_name)
            cls.create_user(username, group, organisation, is_superuser=True)

            # Create organisation indicator labels
            label = M.OrganisationIndicatorLabel.objects.create(
                organisation=organisation,
                label=u'label1'
            )

            # Create Projects
            for project_name in ('Private project', 'Public project'):
                for status in (M.PublishingStatus.STATUS_PUBLISHED, M.PublishingStatus.STATUS_UNPUBLISHED):
                    title = '{} - {} - {}'.format(project_name, organisation.name, status)
                    is_public = False if 'private' in project_name.lower() else True
                    project = M.Project.objects.create(title=title, is_public=is_public)
                    cls.set_publishing_status(project, status)
                    M.Partnership.objects.create(organisation=organisation,
                                                 project=project,
                                                 iati_organisation_role=M.Partnership.IATI_FUNDING_PARTNER)

            for project in organisation.all_projects().distinct():
                # Per-project objects
                # benchmark
                benchmark_name = M.Benchmarkname.objects.create(name='benchmark_name')
                M.Benchmark.objects.create(project=project, name=benchmark_name, category=category, value=10)
                # budget
                M.BudgetItem.objects.create(project=project)
                M.CountryBudgetItem.objects.create(project=project)
                # crs
                crs = M.CrsAdd.objects.create(project=project)
                M.CrsAddOtherFlag.objects.create(crs=crs)
                # fss
                fss = M.Fss.objects.create(project=project)
                M.FssForecast.objects.create(fss=fss)
                # goal
                M.Goal.objects.create(project=project)
                # legacy data
                M.LegacyData.objects.create(project=project)
                # link
                M.Link.objects.create(project=project, url='akvo.org')
                # humanitarian scope
                M.HumanitarianScope.objects.create(project=project)
                # conditions
                M.ProjectCondition.objects.create(project=project, text='Condition {}'.format(project.title))
                # contacts
                M.ProjectContact.objects.create(project=project)
                # custom fields
                M.ProjectCustomField.objects.create(project=project, section=1, order=4)
                # documents
                document = M.ProjectDocument.objects.create(project=project)
                # document categories
                M.ProjectDocumentCategory.objects.create(document=document, category='A')
                # recipient country and region
                M.RecipientCountry.objects.create(project=project)
                M.RecipientRegion.objects.create(project=project)
                # related project
                # # set other project from organisation as related project
                other_project = M.Project.objects.exclude(id__in=[project.id]).filter(
                    partnerships__organisation=organisation, is_public=True
                ).first()
                M.RelatedProject.objects.create(project=project, related_project=other_project)
                # planned disbursement
                M.PlannedDisbursement.objects.create(project=project)
                # policy marker
                M.PolicyMarker.objects.create(project=project)
                # sector
                M.Sector.objects.create(project=project)
                # transaction
                transaction = M.Transaction.objects.create(project=project)
                # transaction sector
                M.TransactionSector.objects.create(transaction=transaction)
                # iati export
                export = M.IatiExport.objects.create(reporting_organisation=organisation,
                                                     user=admin)
                for project_ in organisation.projects.all():
                    export.projects.add(project_)
                # location
                location = M.ProjectLocation.objects.create(location_target=project,
                                                            latitude=project.id,
                                                            longitude=project.id)
                # administrative location
                M.AdministrativeLocation.objects.create(location=location)
                # result
                result = M.Result.objects.create(project=project)
                # indicator
                indicator = M.Indicator.objects.create(result=result)
                # indicator dimension
                dimension = M.IndicatorDimension.objects.create(indicator=indicator)
                # indicator label
                M.IndicatorLabel.objects.create(indicator=indicator, label=label)
                # indicator reference
                M.IndicatorReference.objects.create(indicator=indicator)
                # indicator period
                period = M.IndicatorPeriod.objects.create(indicator=indicator)
                # indicator period actual dimension
                M.IndicatorPeriodActualDimension.objects.create(period=period)
                # indicator period actual location
                M.IndicatorPeriodActualLocation.objects.create(period=period)
                # indicator period target dimension
                M.IndicatorPeriodTargetDimension.objects.create(period=period)
                # indicator period target location
                M.IndicatorPeriodTargetLocation.objects.create(period=period)
                # narrative report
                M.NarrativeReport.objects.create(period_start="2017-10-01",
                                                 period_end="2017-12-01",
                                                 category=label,
                                                 project=project)

                # Per-project per-user objects
                for user in organisation.all_users():
                    title = '{}: {}'.format(user.username, project.title)
                    # updates
                    update = M.ProjectUpdate.objects.create(project=project,
                                                            user=user,
                                                            title=title)
                    # update location
                    M.ProjectUpdateLocation.objects.create(location_target=update,
                                                           latitude=update.id,
                                                           longitude=update.id)
                    # indicator period data
                    data = M.IndicatorPeriodData.objects.create(period=period, user=user)
                    # disaggregation
                    M.Disaggregation.objects.create(update=data, dimension=dimension)
                    # indicator period data comment
                    M.IndicatorPeriodDataComment.objects.create(data=data, user=user)
                    # comments
                    M.ProjectComment.objects.create(project=project, user=user)

            # PartnerSite
            M.PartnerSite.objects.create(organisation=organisation,
                                         piwik_id=0,
                                         hostname='{}.org'.format(org_name))
Exemple #25
0
def populate_test_data(seed=42):
    """Populate the DB for tests using the factories defined."""

    reseed_random(seed)
    random.seed(seed)

    check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

    UserFactory.create(is_admin=True, is_superuser=True, is_staff=True)
    UserFactory.create_batch(4)
    OrganisationFactory.create_batch(3)
    OrganisationCustomFieldFactory.create_batch(9)

    ProjectFactory.create_batch(10)
    RecipientCountryFactory.create_batch(10)
    CrsAddFactory.create_batch(10)
    FssFactory.create_batch(10)
    PartnershipFactory.create_batch(10)

    ProjectCustomFieldFactory.create_batch(20)
    ProjectCommentFactory.create_batch(20)
    RelatedProjectFactory.create_batch(10)

    ProjectUpdateFactory.create_batch(100)
    ResultFactory.create_batch(40)
    IndicatorFactory.create_batch(80)
    IndicatorReferenceFactory.create_batch(80)
    IndicatorPeriodFactory.create_batch(240)
    IndicatorPeriodActualDimensionFactory.create_batch(240)
    IndicatorPeriodTargetDimensionFactory.create_batch(240)
    IndicatorPeriodActualLocationFactory.create_batch(240)
    IndicatorPeriodTargetLocationFactory.create_batch(240)
    IndicatorPeriodDataFactory.create_batch(1200)
    IndicatorPeriodDataCommentFactory.create_batch(1200)

    IatiExportFactory.create_batch(3)
    IatiImportFactory.create_batch(3)

    for _ in range(10):
        created = False
        while not created:
            country_code = random.choice(ISO_3166_COUNTRIES)[0]
            country_info = Country.fields_from_iso_code(country_code)
            country, created = Country.objects.get_or_create(**country_info)

    EmploymentFactory.create_batch(30)

    KeywordFactory.create_batch(20)
    for keyword in Keyword.objects.all():
        for project in Project.objects.all():
            if keyword.id % project.id != 0:
                continue
            project.keywords.add(keyword)

    ProjectEditorValidationSetFactory.create_batch(2)
    ProjectEditorValidationFactory.create_batch(20)

    ReportFormatFactory.create_batch(4)
    ReportFactory.create_batch(4)

    # FIXME: Enforce this!
    verify_model_instances()
Exemple #26
0
 def setUp(self):
     check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
     self.user = self.create_user('*****@*****.**')
     self.org = self.create_organisation('My Organisation')
     self.project = self.create_project('My Project')
     self.make_partner(self.project, self.org, role=Partnership.IATI_REPORTING_ORGANISATION)
Exemple #27
0
    url(r'^widgets/project-small/(?P<project_id>\d+)/$',
        widget_views.ProjectSmallView.as_view(),
        name="widget_project_small"),

    url(r'^widgets/project-small/random/$',
        widget_views.RandomProjectSmallView.as_view(),
        name="widget_random_project_small"),
)

handler500 = 'akvo.rsr.views.error.server_error'

urlpatterns += patterns(
    '',

    (r'^media/(?P<path>.*)$',
        'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT}),
)

if 'rosetta' in settings.INSTALLED_APPS:
    urlpatterns += patterns(
        '',
        url(r'^rosetta/', include('rosetta.urls')),
    )

if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

if settings.REQUIRED_AUTH_GROUPS:
    check_auth_groups(settings.REQUIRED_AUTH_GROUPS)
    def setUp(self):
        """
        User M      User N      User O
        Admin       Admin       User
           \        /   \      /
            \      /     \    /
              Org A       Org B
            /      \      /    \
           /        \    /      \
        Project X   Project Y   Project Z
        """

        check_auth_groups(settings.REQUIRED_AUTH_GROUPS)

        self.org_a = Organisation.objects.create(name='A',
                                                 long_name='A',
                                                 can_create_projects=True,
                                                 enable_restrictions=True)
        self.org_b = Organisation.objects.create(name='B',
                                                 long_name='B',
                                                 can_create_projects=True,
                                                 enable_restrictions=True)

        self.projects = {}
        for title in "XYZ":
            project = Project.objects.create(title=title)
            self.projects[title] = project

        Partnership.objects.create(organisation=self.org_a,
                                   project=self.projects['X'])
        Partnership.objects.create(organisation=self.org_a,
                                   project=self.projects['Y'])
        Partnership.objects.create(organisation=self.org_b,
                                   project=self.projects['Y'])
        Partnership.objects.create(organisation=self.org_b,
                                   project=self.projects['Z'])

        self.user_m = self.create_user('*****@*****.**')
        self.user_n = self.create_user('*****@*****.**')
        self.user_o = self.create_user('*****@*****.**')

        self.users = Group.objects.get(name='Users')
        self.admins = Group.objects.get(name='Admins')

        Employment.objects.create(user=self.user_m,
                                  organisation=self.org_a,
                                  group=self.admins,
                                  is_approved=True)
        # Primary organisation for user is org B
        Employment.objects.create(user=self.user_n,
                                  organisation=self.org_b,
                                  group=self.admins,
                                  is_approved=True)
        Employment.objects.create(user=self.user_n,
                                  organisation=self.org_a,
                                  group=self.admins,
                                  is_approved=True)
        Employment.objects.create(user=self.user_o,
                                  organisation=self.org_b,
                                  group=self.users,
                                  is_approved=True)