Ejemplo n.º 1
0
 def test_first_plural_removed(self):
     geokey_url = "https://wegovnow-gk-sandona.geokey.org.uk/api/projects/1/contributions/35"
     expected_cm_url_contains = "/project/"
     expected_cm_url_does_not_contain = "/projects/"
     output = make_cm_url(url=geokey_url)
     self.assertIn(expected_cm_url_contains, output)
     self.assertNotIn(expected_cm_url_does_not_contain, output)
Ejemplo n.º 2
0
 def test_numbers_preserved(self):
     geokey_url = "https://wegovnow-gk-sandona.geokey.org.uk/api/projects/1/contributions/35"
     expected_num_at_pos_2 = "1"
     expected_num_at_pos_4 = "35"
     output_address = make_cm_url(url=geokey_url).split('//')[1]
     self.assertEqual(output_address.split('/')[2], expected_num_at_pos_2)
     self.assertEqual(output_address.split('/')[4], expected_num_at_pos_4)
Ejemplo n.º 3
0
def make_event(class_name, instance, action):
    """Make OnToMap event."""
    domain = Site.objects.get_current().domain
    uwum_account = SocialAccount.objects.get(provider='uwum',
                                             user=get_request().user)

    activity_objects = []
    visibility_details = []
    details = {}
    if action == 'removed' or instance.status != 'active':
        hidden = True
    else:
        hidden = False

    # ###########################
    # ADDITIONS FOR PROJECT
    # ###########################

    if class_name == 'Project':
        external_url = '%s/api/projects/%s/' % (domain, instance.id)
        if instance.isprivate:
            hidden = True

        activity_objects.append({
            'type': 'Feature',
            'geometry': None,
            'properties': {
                'hasType': 'Project',
                'name': instance.name,
                'external_url': make_cm_url(external_url),
                'additionalProperties': {
                    'description': instance.description
                }
            }
        })

        visibility_details.append({
            'external_url': make_cm_url(external_url),
            'hidden': hidden
        })

        details['project_id'] = instance.id

    # ###########################
    # ADDITIONS FOR CATEGORY
    # ###########################

    if class_name == 'Category':
        external_url = '%s/api/projects/%s/categories/%s/' % (
            domain, instance.project.id, instance.id)
        if instance.project.isprivate:
            hidden = True

        activity_objects.append({
            'type': 'Feature',
            'geometry': None,
            'properties': {
                'hasType': 'Category',
                'name': instance.name,
                'external_url': make_cm_url(external_url),
                'additionalProperties': {
                    'description': instance.description
                }
            }
        })

        visibility_details.append({
            'external_url': make_cm_url(external_url),
            'hidden': hidden
        })

        details['project_id'] = instance.project.id
        details['category_id'] = instance.id

    # ###########################
    # ADDITIONS FOR CONTRIBUTION
    # ###########################

    if class_name == 'Observation':
        external_url = '%s/api/projects/%s/contributions/%s/' % (
            domain, instance.project.id, instance.id)
        if instance.project.isprivate:
            hidden = True

        geometry = literal_eval(instance.location.geometry.geojson)
        additional_properties = literal_eval(json.dumps(instance.properties))
        properties = {
            'hasType': 'Contribution',
            'external_url': make_cm_url(external_url),
            'additionalProperties': additional_properties,
            'name': get_link_title(properties=instance.properties)
        }

        activity_objects.append({
            'type': 'Feature',
            'geometry': geometry,
            'properties': properties
        })

        visibility_details.append({
            'external_url': make_cm_url(external_url),
            'hidden': hidden
        })

        details['project_id'] = instance.project.id
        details['category_id'] = instance.category.id

    # ###########################
    # ADDITIONS FOR COMMENT
    # ###########################

    if class_name == 'Comment':
        contribution = instance.commentto
        parent_comment = instance.respondsto or None

        external_url = '%s/api/projects/%s/contributions/%s/comments' % (
            domain, contribution.project.id, contribution.id)
        if contribution.project.isprivate:
            hidden = True

        activity_objects.append({
            'type': 'Feature',
            'geometry': None,
            'properties': {
                'hasType': 'Comment',
                'external_url': make_cm_url(external_url),
                'additionalProperties': {
                    'text':
                    instance.text,
                    'responds_to':
                    (None if not parent_comment else parent_comment.id)
                }
            }
        })

        visibility_details.append({
            'external_url': make_cm_url(external_url),
            'hidden': hidden
        })

        details['project_id'] = contribution.project.id
        details['category_id'] = contribution.category.id
        details['contribution_id'] = contribution.id

    # ###########################
    # ADDITIONS FOR MEDIA FILE
    # ###########################

    if class_name == 'MediaFile':
        contribution = instance.contribution

        external_url = '%s/api/projects/%s/contributions/%s/media/%s' % (
            domain, contribution.project.id, contribution.id, instance.id)
        if contribution.project.isprivate:
            hidden = True

        if hasattr(instance, 'audio'):
            url = domain + instance.audio.url
        elif hasattr(instance, 'image'):
            url = domain + instance.image.url
        elif hasattr(instance, 'video'):
            url = instance.youtube_link
        else:
            url = domain

        activity_objects.append({
            'type': 'Feature',
            'geometry': None,
            'properties': {
                'hasType': 'MediaFile',
                'name': instance.name,
                'external_url': make_cm_url(external_url),
                'additionalProperties': {
                    'description': instance.description,
                    'url': url
                }
            }
        })

        visibility_details.append({
            'external_url': make_cm_url(external_url),
            'hidden': hidden
        })

        details['project_id'] = contribution.project.id
        details['category_id'] = contribution.category.id
        details['contribution_id'] = contribution.id

    # ###########################
    # FINAL EVENT OBJECT
    # ###########################

    event = {
        'actor': int(uwum_account.id),
        'timestamp': int(round(time.time() * 1000)),
        'activity_type': 'object_%s' % action,
        'activity_objects': activity_objects,
        'visibility_details': visibility_details,
        'details': details
    }

    return event
Ejemplo n.º 4
0
 def test_gk_to_cm(self):
     geokey_url = "https://wegovnow-gk-sandona.geokey.org.uk/api/projects/1/contributions/35"
     expected_cm_url_contains = "wegovnow-cm-sandona"
     output = make_cm_url(url=geokey_url)
     self.assertIn(expected_cm_url_contains, output)
Ejemplo n.º 5
0
 def test_protocol_preserved(self):
     geokey_url = "https://wegovnow-gk-sandona.geokey.org.uk/api/projects/1/contributions/35"
     expected_cm_url_starts_with = "https://"
     output = make_cm_url(url=geokey_url)
     self.assertEqual(output[0:8], expected_cm_url_starts_with)