Ejemplo n.º 1
0
 def test_sum_path_two(self):
     self.login()
     PathFactory()
     PathFactory()
     response = self.client.get('/api/path/paths.json')
     self.assertEqual(response.status_code, 200)
     self.assertEqual(json.loads(response.content)['sumPath'], 0.3)
Ejemplo n.º 2
0
 def test_city_with_path_ends_on_border(self):
     """
              |    |
              |p1  |p2
              |    |
     +--------+----+---+
     |                 |
     |                 | City
     |                 |
     +-----------------+
     """
     # Create a path before city to test one trigger
     p1 = PathFactory(geom=LineString((1, 1), (1, 2)))
     p1.save()
     c = City(code='005178',
              name='Trifouillis-les-marmottes',
              geom=MultiPolygon(
                  Polygon(((0, 0), (2, 0), (2, 1), (0, 1), (0, 0)),
                          srid=settings.SRID)))
     c.save()
     # Create a path after city to the the another trigger
     p2 = PathFactory(geom=LineString((1.5, 2), (1.5, 1)))
     p2.save()
     self.assertEqual(len(p1.cities), 1)
     self.assertEqual(len(p2.cities), 1)
Ejemplo n.º 3
0
    def test_permission_view_delete_path_with_2_permissions(self):
        """
        Check user can delete a normal path and draft path if user has :
        delete_draft_path permission and delete_path
        """
        self.client.login(username=self.user.username, password='******')
        path = PathFactory(name="PATH_AB", geom=LineString((0, 0), (4, 0)))
        draft_path = PathFactory(name="PATH_BC",
                                 geom=LineString((0, 2), (4, 2)),
                                 draft=True)

        response = self.client.post('/path/delete/%s/' % path.pk)
        self.assertEqual(response.status_code, 302)

        response = self.client.post('/path/delete/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 302)

        self.assertEqual(Path.objects.count(), 2)

        self.user.user_permissions.add(
            Permission.objects.get(codename='delete_path'))
        self.user.user_permissions.add(
            Permission.objects.get(codename='delete_draft_path'))
        self.client.login(username=self.user.username, password='******')

        response = self.client.post('/path/delete/%s/' % path.pk)
        self.assertEqual(response.status_code, 302)

        self.assertEqual(Path.objects.count(), 1)

        response = self.client.post('/path/delete/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 302)

        self.assertEqual(Path.objects.count(), 0)
Ejemplo n.º 4
0
    def test_permission_view_change_path_with_draft_permission(self):
        """
        Check user can edit a draft path if user has change_draft_path permission only
        but can not edit normal path
        Check draft checkbox not visible if user have only change_draft_path
        """
        self.client.login(username=self.user.username, password='******')

        path = PathFactory(name="PATH_AB", geom=LineString((0, 0), (4, 0)))
        draft_path = PathFactory(name="PATH_AB",
                                 geom=LineString((0, 0), (4, 0)),
                                 draft=True)

        response = self.client.get('/path/edit/%s/' % path.pk)
        self.assertEqual(response.status_code, 302)

        response = self.client.get('/path/edit/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 302)

        self.user.user_permissions.add(
            Permission.objects.get(codename='change_draft_path'))
        self.client.login(username=self.user.username, password='******')

        response = self.client.post('/path/edit/%s/' % path.pk)
        self.assertEqual(response.status_code, 302)

        response = self.client.get('/path/edit/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 200)
        self.assertNotContains(response, 'name="draft"')
Ejemplo n.º 5
0
    def test_paths_bystructure(self):
        PathFactory(length=1)
        PathFactory(length=70)

        password = '******'
        user = PathManagerFactory(password=password)
        result = self.client.login(username=user.username, password=password)
        self.assertTrue(result, u"The client successfully logged in")

        response = self.client.get(reverse('core:path_list'))
        self.assertEquals(response.status_code, 200)

        def create_form_params(range_start='', range_end=''):
            """Return range form parameter as used in geotrek.core.filters.PathFilter"""
            return { 'length_0': range_end, 'length_1': range_start }

        def test_response_content(length_range, queryset):
            response = self.client.get(reverse('core:path_json_list'), data=create_form_params(*length_range))
            self.assertEquals(response.status_code, 200)
            # We check the 'map_obj_pk' json attribute that should contain the paths' pk (used by map)
            jsondict = json.loads(response.content)
            # The JSON should only contain filtered paths
            self.assertListEqual(
                    sorted(jsondict['map_obj_pk']),
                    sorted(list(queryset.values_list('pk', flat=True))),
            )

        # Simulate ajax call to populate the list
        # The path returned as json should be all paths
        test_response_content(['', ''], Path.objects.all())

        # Simulate ajax call to populate the list, but this time with a range filter
        length_range = [50, 100]
        test_response_content(length_range, Path.objects.filter(length__range=length_range))
Ejemplo n.º 6
0
    def test_permission_view_change_path_with_2_permissions(self):
        """
        Check draft checkbox visible if user have 2 permissions : change_path, change_draft_path
        """
        self.client.login(username=self.user.username, password='******')

        path = PathFactory(name="PATH_AB", geom=LineString((0, 0), (4, 0)))
        draft_path = PathFactory(name="draft_path",
                                 geom=LineString((0, 0), (4, 0)),
                                 draft=True)

        response = self.client.get('/path/edit/%s/' % path.pk)
        self.assertEqual(response.status_code, 302)

        response = self.client.get('/path/edit/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 302)

        self.user.user_permissions.add(
            Permission.objects.get(codename='change_path'))
        self.user.user_permissions.add(
            Permission.objects.get(codename='change_draft_path'))
        self.client.login(username=self.user.username, password='******')

        response = self.client.get('/path/edit/%s/' % path.pk)
        self.assertEqual(response.status_code, 200)
        self.assertNotIn('name="draft"', response.content)

        response = self.client.get('/path/edit/%s/' % draft_path.pk)
        self.assertEqual(response.status_code, 200)
        self.assertIn('name="draft"', response.content)
Ejemplo n.º 7
0
    def test_paths_bystructure(self):
        user = UserFactory()
        p1 = PathFactory()
        p2 = PathFactory(structure=Structure.objects.create(name="other"))

        self.assertEqual(user.profile.structure, p1.structure)
        self.assertNotEqual(user.profile.structure, p2.structure)

        self.assertEqual(len(Structure.objects.all()), 2)
        self.assertEqual(len(Path.objects.all()), 2)

        self.assertTrue(p1 in Path.objects.filter(
            structure=user.profile.structure))
        self.assertFalse(p2 in Path.objects.filter(
            structure=user.profile.structure))

        # Change user structure on-the-fly
        profile = user.profile
        profile.structure = p2.structure
        profile.save()

        self.assertEqual(user.profile.structure.name, "other")
        self.assertFalse(p1 in Path.objects.filter(
            structure=user.profile.structure))
        self.assertTrue(p2 in Path.objects.filter(
            structure=user.profile.structure))
Ejemplo n.º 8
0
    def test_python_graph_from_path(self):
        p_1_1 = (1., 1.)
        p_2_2 = (2., 2.)
        p_3_3 = (3., 3.)
        p_4_4 = (4., 4.)
        p_5_5 = (5., 5.)

        def gen_random_point():
            """Return unique (non-conflicting) point"""
            return ((0., x + 1.) for x in xrange(10, 100))

        r_point = gen_random_point().next

        e_1_2 = PathFactory(geom=LineString(p_1_1, r_point(), p_2_2))
        e_2_3 = PathFactory(geom=LineString(p_2_2, r_point(), p_3_3))

        # Non connex
        e_4_5 = PathFactory(geom=LineString(p_4_4, r_point(), p_5_5))

        graph = {
            'nodes': {
                1: {
                    2: e_1_2.pk
                },
                2: {
                    1: e_1_2.pk,
                    3: e_2_3.pk
                },
                3: {
                    2: e_2_3.pk
                },
                4: {
                    5: e_4_5.pk
                },
                5: {
                    4: e_4_5.pk
                }
            },
            'edges': {
                e_1_2.pk: {
                    'nodes_id': [1, 2],
                    'length': e_1_2.length,
                    'id': e_1_2.pk
                },
                e_2_3.pk: {
                    'nodes_id': [2, 3],
                    'length': e_2_3.length,
                    'id': e_2_3.pk
                },
                e_4_5.pk: {
                    'nodes_id': [4, 5],
                    'length': e_4_5.length,
                    'id': e_4_5.pk
                }
            }
        }

        computed_graph = graph_edges_nodes_of_qs(Path.objects.all())
        self.assertDictEqual(computed_graph, graph)
Ejemplo n.º 9
0
    def setUpTestData(cls):
        p1 = PathFactory()
        cls.seek_path = PathFactory(geom=getRandomLineStringInBounds())

        topo_1 = TopologyFactory.create(paths=[p1])
        seek_topo = TopologyFactory.create(paths=[cls.seek_path])

        InterventionFactory.create(target=topo_1)
        cls.seek_inter = InterventionFactory.create(target=seek_topo)
Ejemplo n.º 10
0
    def setUpTestData(cls):
        p1 = PathFactory()
        cls.seek_path = PathFactory(geom=getRandomLineStringInBounds())

        topo_1 = TopologyFactory.create(paths=[p1])
        seek_topo = TopologyFactory.create(paths=[cls.seek_path])

        it_p1 = InterventionFactory.create(target=topo_1)
        seek_it = InterventionFactory.create(target=seek_topo)

        cls.seek_proj = ProjectFactory.create()
        cls.seek_proj.interventions.add(seek_it)

        proj_1 = ProjectFactory.create()
        proj_1.interventions.add(it_p1)
Ejemplo n.º 11
0
    def test_upload(self):
        path = PathFactory(length=1)
        response = self.client.get(path.get_update_url())

        f = get_dummy_uploaded_image()
        data = {
            'filetype': FileTypeFactory().pk,
            'title': 'title1',
            'legend': 'legend1',
            'attachment_file': f,
        }

        response = self.client.post(add_url_for_obj(path), data=data)
        self.assertEquals(response.status_code, 302)

        att = Attachment.objects.attachments_for_object(path).get()
        self.assertEqual(att.title, data['title'])
        self.assertEqual(att.legend, data['legend'])
        self.assertEqual(att.filetype.pk, data['filetype'])

        f.open()
        self.assertEqual(att.attachment_file.readlines(), f.readlines())

        # Check that if title is given, filename is title
        self.assertTrue(att.attachment_file.name, 'title1')

        # Check that if no title is give, filename is original name
        data['title'] = ''
        response = self.client.post(add_url_for_obj(path), data=data)
        att = Attachment.objects.attachments_for_object(path)[0]
        self.assertTrue(att.attachment_file.name, 'image')
Ejemplo n.º 12
0
 def test_delete_show_topologies(self):
     self.login()
     path = PathFactory(name="PATH_AB", geom=LineString((0, 0), (4, 0)))
     poi = POIFactory.create(name='POI', no_path=True)
     poi.add_path(path, start=0.5, end=0.5)
     trail = TrailFactory.create(name='Trail', no_path=True)
     trail.add_path(path, start=0.1, end=0.2)
     trek = TrekFactory.create(name='Trek', no_path=True)
     trek.add_path(path, start=0.2, end=0.3)
     service = ServiceFactory.create(no_path=True, type__name='ServiceType')
     service.add_path(path, start=0.2, end=0.3)
     signage = SignageFactory.create(name='Signage', no_path=True)
     signage.add_path(path, start=0.2, end=0.2)
     infrastructure = InfrastructureFactory.create(name='Infrastructure', no_path=True)
     infrastructure.add_path(path, start=0.2, end=0.2)
     intervention1 = InterventionFactory.create(topology=signage, name='Intervention1')
     t = TopologyFactory.create(no_path=True)
     t.add_path(path, start=0.2, end=0.5)
     intervention2 = InterventionFactory.create(topology=t, name='Intervention2')
     response = self.client.get(path.get_delete_url())
     self.assertEqual(response.status_code, 200)
     self.assertContains(response, 'Different topologies are linked with this path')
     self.assertContains(response, '<a href="/poi/%d/">POI</a>' % poi.pk)
     self.assertContains(response, '<a href="/trail/%d/">Trail</a>' % trail.pk)
     self.assertContains(response, '<a href="/trek/%d/">Trek</a>' % trek.pk)
     self.assertContains(response, '<a href="/service/%d/">ServiceType</a>' % service.pk)
     self.assertContains(response, '<a href="/signage/%d/">Signage</a>' % signage.pk)
     self.assertContains(response, '<a href="/infrastructure/%d/">Infrastructure</a>' % infrastructure.pk)
     self.assertContains(response, '<a href="/intervention/%d/">Intervention1</a>' % intervention1.pk)
     self.assertContains(response, '<a href="/intervention/%d/">Intervention2</a>' % intervention2.pk)
Ejemplo n.º 13
0
 def test_json_graph_headers(self):
     """
     Last modified depends on
     """
     PathFactory(geom=LineString((0, 0), (1, 1)))
     response = self.client.get(self.url)
     self.assertNotEqual(response['Cache-Control'], None)
Ejemplo n.º 14
0
 def test_city_with_topo(self):
     """
     +-----------------+
     |        S        |
     |    +---x---+    |
     |    |       |    | City
     |    |p      |    |
     |    O       O    |
     |                 |
     +-----------------+
     """
     c = City(code='005178',
              name='Trifouillis-les-marmottes',
              geom=MultiPolygon(
                  Polygon(((0, 0), (2, 0), (2, 2), (0, 2), (0, 0)),
                          srid=settings.SRID)))
     c.save()
     if settings.TREKKING_TOPOLOGY_ENABLED:
         p = PathFactory(
             geom=LineString((0.5, 0.5), (0.5, 1.5), (1.5, 1.5), (1.5,
                                                                  0.5)))
         p.save()
         signage = SignageFactory.create(paths=[(p, 0.5, 0.5)])
     else:
         signage = SignageFactory.create(
             geom=Point(1, 1.5, srid=settings.SRID))
     self.assertEqual(len(signage.cities), 1)
Ejemplo n.º 15
0
    def test_save_path_with_edit_draft_path_and_edit_path(self):
        """
        Check save path without permission change_path save with draft=True
        """
        draft_path = PathFactory(name="draft",
                                 geom=LineString((0, 2), (4, 2)),
                                 draft=True)

        self.user.user_permissions.add(
            Permission.objects.get(codename='change_path'))
        self.user.user_permissions.add(
            Permission.objects.get(codename='change_draft_path'))
        self.client.login(username=self.user.username, password='******')

        data = self.get_good_data()
        data['draft'] = True
        response = self.client.post('/path/edit/%s/' % draft_path.pk, data)
        self.assertEqual(response.status_code, 302)
        self.assertTrue(Path.objects.get(pk=draft_path.pk).draft)

        # You can change a draft path to a normal path.
        data['draft'] = False
        response = self.client.post('/path/edit/%s/' % draft_path.pk, data)
        self.assertEqual(response.status_code, 302)
        self.assertFalse(Path.objects.get(pk=draft_path.pk).draft)

        # You can't change a normal path back to a draft path.
        data['draft'] = True
        response = self.client.post('/path/edit/%s/' % draft_path.pk, data)
        self.assertEqual(response.status_code, 302)
        self.assertFalse(Path.objects.get(pk=draft_path.pk).draft)
Ejemplo n.º 16
0
    def test_couches_sig_link(self):
        """
        +-----------------+    -
        |                 |ra2  |
        |    +-------+    |     |
        | _ _|  _ _ _|_ _ |      - C
        |    |p      |    |     |
        |    O       O    |     |
        |                 |ra1  |
        +-----------------+    -
        """
        # Fake restricted areas
        RestrictedAreaFactory.create(
            geom=MultiPolygon(Polygon(((0, 0), (2, 0), (2, 1), (0, 1), (0,
                                                                        0)))))
        RestrictedAreaFactory.create(
            geom=MultiPolygon(Polygon(((0, 1), (2, 1), (2, 2), (0, 2), (0,
                                                                        1)))))

        # Fake city
        c = City(code='005178',
                 name='Trifouillis-les-marmottes',
                 geom=MultiPolygon(
                     Polygon(((0, 0), (2, 0), (2, 2), (0, 2), (0, 0)),
                             srid=settings.SRID)))
        c.save()

        # Fake paths in these areas
        p = PathFactory(
            geom=LineString((0.5, 0.5), (0.5, 1.5), (1.5, 1.5), (1.5, 0.5)))
        p.save()

        self.assertEqual(len(p.areas), 2)
        self.assertEqual(len(p.cities), 1)
Ejemplo n.º 17
0
 def test_manager_can_delete(self):
     self.login()
     path = PathFactory()
     response = self.client.get(path.get_detail_url())
     self.assertEqual(response.status_code, 200)
     response = self.client.post(path.get_delete_url())
     self.assertEqual(response.status_code, 302)
Ejemplo n.º 18
0
 def test_json_graph_simple(self):
     path = PathFactory(geom=LineString((0, 0), (1, 1)))
     response = self.client.get(self.url)
     self.assertEqual(response.status_code, 200)
     graph = response.json()
     self.assertDictEqual({'edges': {str(path.pk): {'id': path.pk, 'length': 1.4142135623731, 'nodes_id': [1, 2]}},
                           'nodes': {'1': {'2': path.pk}, '2': {'1': path.pk}}}, graph)
Ejemplo n.º 19
0
    def test_trail_filters(self):
        PathFactory()
        qs = PathFilterSet().qs
        self.assertEqual(qs.count(), 2)

        data = {'trail': [self.trail]}
        qs = PathFilterSet(data=data).qs
        self.assertEqual(qs.count(), 1)
Ejemplo n.º 20
0
 def test_sum_path_filter_cities(self):
     self.login()
     p1 = PathFactory(geom=LineString((0, 0), (0, 1000), srid=settings.SRID))
     city = CityFactory(code='09000', geom=MultiPolygon(Polygon(((200, 0), (300, 0), (300, 100), (200, 100), (200, 0)), srid=settings.SRID)))
     self.assertEquals(p1.aggregations.count(), 0)
     response = self.client.get('/api/path/paths.json?city=%s' % city.code)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(json.loads(response.content)['sumPath'], 0.0)
Ejemplo n.º 21
0
 def test_json_graph_headers(self):
     """
     Last modified depends on
     """
     PathFactory(geom=LineString((0, 0), (1, 1)))
     response = self.client.get(self.url)
     last_modified = response['Last-Modified']
     expires = response['Expires']
     self.assertNotEqual(expires, None)
     self.assertEqual(expires, last_modified)
Ejemplo n.º 22
0
    def test_save_path_with_only_edit_path(self):
        """
        Check save path without permission change_draft_path save with draft=False
        """
        path = PathFactory(name="path", geom=LineString((0, 2), (4, 2)))
        draft_path = PathFactory(name="draft",
                                 geom=LineString((0, 2), (4, 2)),
                                 draft=True)

        self.user.user_permissions.add(
            Permission.objects.get(codename='change_path'))
        self.client.login(username=self.user.username, password='******')

        data = self.get_good_data()
        response = self.client.post('/path/edit/%s/' % path.pk, data)
        self.assertEqual(response.status_code, 302)
        self.assertFalse(Path.objects.first().draft)

        response = self.client.post('/path/edit/%s/' % draft_path.pk, data)
        self.assertEqual(response.status_code, 302)
        self.assertTrue(Path.objects.get(pk=draft_path.pk).draft)
Ejemplo n.º 23
0
    def test_python_graph_from_path(self):
        p_1_1 = (1., 1., 0.)
        p_2_2 = (2., 2., 0.)
        p_3_3 = (3., 3., 0.)
        p_4_4 = (4., 4., 0.)
        p_5_5 = (5., 5., 0.)

        def gen_random_point():
            """Return unique (non-conflicting) point"""
            return ((0., x + 1., 0.) for x in xrange(10, 100))

        r_point = gen_random_point().next

        e_1_2 = PathFactory(geom=LineString(p_1_1, r_point(), p_2_2))
        e_2_3 = PathFactory(geom=LineString(p_2_2, r_point(), p_3_3))

        # Non connex
        e_4_5 = PathFactory(geom=LineString(p_4_4, r_point(), p_5_5))

        # Add an edge with the p_1_1 in its center
        # e_5_1_6 = PathFactory(geom=LineString(p_5_5, r_point(), p_1_1, r_point(), p_6_6))

        graph = {
            p_1_1: {
                p_2_2: e_1_2,
            },
            p_2_2: {
                p_1_1: e_1_2,
                p_3_3: e_2_3,
            },
            p_3_3: {
                p_2_2: e_2_3,
            },
            # Non connex
            p_4_4: {p_5_5: e_4_5},
            p_5_5: {p_4_4: e_4_5},
        }

        computed_graph = graph_of_qs(Path.objects.all())
        self.assertDictEqual(computed_graph, graph)
Ejemplo n.º 24
0
 def test_sum_path_filter_districts(self):
     self.login()
     p1 = PathFactory(geom=LineString((0, 0), (0, 1000), srid=settings.SRID))
     district = DistrictFactory(geom=MultiPolygon(Polygon(((200, 0), (300, 0), (300, 100), (200, 100), (200, 0)), srid=settings.SRID)))
     district2 = DistrictFactory(geom=MultiPolygon(
         Polygon(((0, 0), (1000, 0), (1000, 1000), (0, 1000), (0, 0)), srid=settings.SRID)))
     self.assertEqual(p1.aggregations.count(), 1)
     response = self.client.get('/api/path/paths.json?district=%s' % district.pk)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.json()['sumPath'], 0.0)
     response = self.client.get('/api/path/paths.json?district=%s' % district2.pk)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.json()['sumPath'], 1.0)
Ejemplo n.º 25
0
 def test_sum_path_filter_cities(self):
     self.login()
     p1 = PathFactory(geom=LineString((0, 0), (0, 1000), srid=settings.SRID))
     city = CityFactory(code='09000', geom=MultiPolygon(Polygon(((200, 0), (300, 0), (300, 100), (200, 100), (200, 0)), srid=settings.SRID)))
     city2 = CityFactory(code='09001', geom=MultiPolygon(
         Polygon(((0, 0), (1000, 0), (1000, 1000), (0, 1000), (0, 0)), srid=settings.SRID)))
     self.assertEqual(len(p1.cities), 1)
     response = self.client.get('/api/path/paths.json?city=%s' % city.code)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.json()['sumPath'], 0.0)
     response = self.client.get('/api/path/paths.json?city=%s' % city2.code)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.json()['sumPath'], 1.0)
Ejemplo n.º 26
0
    def test_dates(self):
        t1 = dbnow()
        p = PathFactory()
        t2 = dbnow()
        self.assertTrue(t1 < p.date_insert < t2,
                        msg='Date interval failed: %s < %s < %s' %
                        (t1, p.date_insert, t2))

        p.name = "Foo"
        p.save()
        t3 = dbnow()
        self.assertTrue(t2 < p.date_update < t3,
                        msg='Date interval failed: %s < %s < %s' %
                        (t2, p.date_update, t3))
Ejemplo n.º 27
0
    def test_list_attachments_in_details(self):
        """Test that the list is correctly displayed on the detail page of path"""

        path = PathFactory(length=1)
        AttachmentFactory(obj=path, creator=self.user)

        response = self.client.get(path.get_detail_url())

        self.assertTemplateUsed(response,
                                template_name='paperclip/details.html')
        self.assertItemsEqual(
            Attachment.objects.attachments_for_object(path),
            response.context['attachments_list'],
        )
Ejemplo n.º 28
0
 def test_structure_restricted(self):
     p = PathFactory()
     # Login
     user = PathManagerFactory(password="******")
     success = self.client.login(username=user.username, password="******")
     self.assertTrue(success)
     # Try to edit path from same structure
     response = self.client.get(p.get_update_url())
     self.assertEqual(response.status_code, 200)
     # Try to edit path from other structure
     p.structure = StructureFactory(name="Other")
     p.save()
     self.assertNotEqual(p.structure, user.profile.structure)
     response = self.client.get(p.get_update_url())
     self.assertEqual(response.status_code, 302)
Ejemplo n.º 29
0
 def test_city_with_topo_3(self):
     """
          +-------+
      _ _ | _ _ _ | _ _
     |    |p      |    |
     |    O       X S  | City
     |                 |
     +-----------------+
     """
     c = City(code='005178', name='Trifouillis-les-marmottes',
              geom=MultiPolygon(Polygon(((0, 0), (2, 0), (2, 1), (0, 1), (0, 0)),
                                        srid=settings.SRID)))
     c.save()
     p = PathFactory(geom=LineString((0.5, 0.5), (0.5, 1.5), (1.5, 1.5), (1.5, 0.5)))
     p.save()
     signage = SignageFactory.create(paths=[(p, 1, 1)])
     self.assertEqual(signage.city_edges.count(), 1)
Ejemplo n.º 30
0
 def test_draft_permission_detail(self):
     path = PathFactory(name="DRAFT_PATH", draft=True)
     user = UserFactory(password='******')
     p = user.profile
     p.save()
     perm_add_draft_path = Permission.objects.get(codename='add_draft_path')
     perm_delete_draft_path = Permission.objects.get(codename='delete_draft_path')
     perm_change_draft_path = Permission.objects.get(codename='change_draft_path')
     perm_read_path = Permission.objects.get(codename='read_path')
     user.user_permissions.add(perm_delete_draft_path)
     user.user_permissions.add(perm_read_path)
     user.user_permissions.add(perm_change_draft_path)
     user.user_permissions.add(perm_add_draft_path)
     self.client.login(username=user.username, password='******')
     response = self.client.get(path.get_update_url())
     self.assertEqual(response.status_code, 200)
     self.assertContains(response, path.get_delete_url())