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)
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)
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
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)
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)