Ejemplo n.º 1
0
        def render_page(content1, content2):
            version1 = content1['version']
            doc_v1 = content1['document']
            version2 = content2['version']
            doc_v2 = content2['document']
            field_diffs = diff_documents(doc_v1, doc_v2)

            self.template_input.update({
                'module': self._API_ROUTE,
                'lang': lang,
                'title': doc_v1['locales'][0]['title'],
                'document_id': id,
                'v1_id': v1,
                'v2_id': v2,
                'diffs': field_diffs,
                'version1': version1,
                'version2': version2,
                'geometry1': doc_v1['geometry']['geom']
                if 'geometry' in doc_v1 and doc_v1['geometry'] else None,
                'geometry2': doc_v2['geometry']['geom']
                if 'geometry' in doc_v2 and doc_v2['geometry'] else None,
                'previous_version_id': content1['previous_version_id'],
                'next_version_id': content2['next_version_id']
            })

            return render(
                'c2corg_ui:templates/document/diff.html',
                self.template_input,
                self.request)
Ejemplo n.º 2
0
    def _diff(self):
        id = self._validate_int('id')
        culture = self._validate_culture()
        v1 = self._validate_int('v1')
        v2 = self._validate_int('v2')

        url = '%s/%s/%d/%s/%d' % (
            self.settings['api_url'], self._API_ROUTE, id, culture, v1)
        resp_v1, content_v1 = self._call_api(url)

        url = '%s/%s/%d/%s/%d' % (
            self.settings['api_url'], self._API_ROUTE, id, culture, v2)
        resp_v2, content_v2 = self._call_api(url)

        # TODO: better error handling
        if resp_v1['status'] == '200' and resp_v2['status'] == '200':
            version1 = content_v1['version']
            doc_v1 = content_v1['document']
            version2 = content_v2['version']
            doc_v2 = content_v2['document']
            field_diffs = diff_documents(doc_v1, doc_v2)

            self.template_input.update({
                'module': self._API_ROUTE,
                'culture': culture,
                'title': doc_v1['locales'][0]['title'],
                'document_id': id,
                'v1_id': v1,
                'v2_id': v2,
                'diffs': field_diffs,
                'version1': version1,
                'version2': version2,
                'geometry1': doc_v1['geometry']['geom']
                if doc_v1['geometry'] else None,
                'geometry2': doc_v2['geometry']['geom']
                if doc_v2['geometry'] else None,
                'previous_version_id': content_v1['previous_version_id'],
                'next_version_id': content_v2['next_version_id']
            })
            return self.template_input

        raise HTTPNotFound()
Ejemplo n.º 3
0
        def render_page(content1, content2):
            version1 = content1['version']
            doc_v1 = content1['document']
            version2 = content2['version']
            doc_v2 = content2['document']
            field_diffs = diff_documents(doc_v1, doc_v2)

            self.template_input.update({
                'module':
                self._API_ROUTE,
                'lang':
                lang,
                'title':
                doc_v1['locales'][0]['title'],
                'document_id':
                id,
                'v1_id':
                v1,
                'v2_id':
                v2,
                'diffs':
                field_diffs,
                'version1':
                version1,
                'version2':
                version2,
                'geometry1':
                doc_v1['geometry']['geom']
                if 'geometry' in doc_v1 and doc_v1['geometry'] else None,
                'geometry2':
                doc_v2['geometry']['geom']
                if 'geometry' in doc_v2 and doc_v2['geometry'] else None,
                'previous_version_id':
                content1['previous_version_id'],
                'next_version_id':
                content2['next_version_id']
            })

            return render('c2corg_ui:templates/document/diff.html',
                          self.template_input, self.request)
Ejemplo n.º 4
0
 def test_diff_documents(self):
     doc1 = {
         'version': 1,
         'document_id': 642184,
         'available_langs': ['fr'],
         'parking_fee': None,
         'lift_access': None,
         'elevation': 400,
         'activities': ['skitouring', 'hiking'],
         'elevation_min': None,
         'geometry': {
             'version': 1,
             'geom': '{"type": "Point", '
                     '"coordinates": [647832.459591738, 5735074.612643753]}'
         },
         'maps_info': None,
         'locales': [
             {
                 'version': 1,
                 'lang': 'fr',
                 'description': 'The first line.\nThe second line.',
                 'title': 'Gerbaz',
                 'summary': None,
                 'access': None,
                 'access_period': None
             }
         ],
         'snow_clearance_rating': None,
         'waypoint_type': 'access'
     }
     doc2 = {
         'version': 2,
         'document_id': 642184,
         'available_langs': ['fr', 'en'],
         'parking_fee': 'seasonal',
         'lift_access': True,
         'elevation': 400,
         'activities': ['skitouring', 'hiking'],
         'elevation_min': None,
         'geometry': {
             'version': 2,
             'geom': '{"type": "Point", '
                     '"coordinates": [647835, 5735080]}'
         },
         'maps_info': None,
         'locales': [
             {
                 'version': 1,
                 'lang': 'fr',
                 'description': 'The first line.\n\nThe third line.',
                 'title': 'Gerbaz',
                 'summary': None,
                 'access': None,
                 'access_period': None
             }
         ],
         'snow_clearance_rating': 'closed_in_winter',
         'waypoint_type': 'access'
     }
     diff_fields = diff_documents(doc1, doc2)
     self.assertEqual(len(diff_fields), 5)
     self.assertContainsField(diff_fields, 'lift_access')
     self.assertContainsField(diff_fields, 'parking_fee')
     self.assertContainsField(diff_fields, 'snow_clearance_rating')
     self.assertContainsField(diff_fields, 'description')
     self.assertContainsField(diff_fields, 'geometry')
Ejemplo n.º 5
0
 def test_diff_documents(self):
     doc1 = {
         'version':
         1,
         'document_id':
         642184,
         'available_langs': ['fr'],
         'parking_fee':
         None,
         'lift_access':
         None,
         'elevation':
         400,
         'activities': ['skitouring', 'hiking'],
         'elevation_min':
         None,
         'geometry': {
             'version':
             1,
             'geom':
             '{"type": "Point", '
             '"coordinates": [647832.459591738, 5735074.612643753]}'
         },
         'maps_info':
         None,
         'locales': [{
             'version': 1,
             'lang': 'fr',
             'description': 'The first line.\nThe second line.',
             'title': 'Gerbaz',
             'summary': None,
             'access': None,
             'access_period': None
         }],
         'snow_clearance_rating':
         None,
         'waypoint_type':
         'access'
     }
     doc2 = {
         'version':
         2,
         'document_id':
         642184,
         'available_langs': ['fr', 'en'],
         'parking_fee':
         'seasonal',
         'lift_access':
         True,
         'elevation':
         400,
         'activities': ['skitouring', 'hiking'],
         'elevation_min':
         None,
         'geometry': {
             'version': 2,
             'geom': '{"type": "Point", '
             '"coordinates": [647835, 5735080]}'
         },
         'maps_info':
         None,
         'locales': [{
             'version': 1,
             'lang': 'fr',
             'description': 'The first line.\n\nThe third line.',
             'title': 'Gerbaz',
             'summary': None,
             'access': None,
             'access_period': None
         }],
         'snow_clearance_rating':
         'closed_in_winter',
         'waypoint_type':
         'access'
     }
     diff_fields = diff_documents(doc1, doc2)
     self.assertEqual(len(diff_fields), 5)
     self.assertContainsField(diff_fields, 'lift_access')
     self.assertContainsField(diff_fields, 'parking_fee')
     self.assertContainsField(diff_fields, 'snow_clearance_rating')
     self.assertContainsField(diff_fields, 'description')
     self.assertContainsField(diff_fields, 'geometry')