Skip to content

Commit

Permalink
Merge pull request #84 from geoadmin/feat-PB-227-remove-description-e…
Browse files Browse the repository at this point in the history
…ndpoint

PB-227: Remove unnecessary endpoint
  • Loading branch information
LukasJoss authored Sep 9, 2024
2 parents 2514036 + 8b47fcb commit 8e2e9e5
Show file tree
Hide file tree
Showing 7 changed files with 2 additions and 111 deletions.
17 changes: 0 additions & 17 deletions app/helpers/check_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from flask import abort

from app.helpers.description import find_descripton_file
from app.icon_set import get_icon_set

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -89,19 +88,3 @@ def get_and_check_icon(icon_set, icon_name):
logger.error("The icon doesn't exist: %s", path)
abort(404, "Icon not found in icon set")
return icon


def check_if_descripton_file_exists(icon_set):
"""
Checks that the icon set has a corresponding dictionary containing description for all available
languages.
if not raises a flask error and abort the current request.
Args:
icon_set: (IconSet) the icon set of which we want to check if it has a description file
"""
# checking that the icon exists in the icon set's folder
path = find_descripton_file(icon_set)
if not os.path.isfile(path):
logger.error("The description dictionary doesn't exist: %s", path)
abort(404, "Description dictionary not found")
15 changes: 0 additions & 15 deletions app/helpers/description.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,6 @@
logger = logging.getLogger(__name__)


def get_icon_set_description(icon_set=''):
'''
Return json containing the description in all available languages for all icons of the
provided icon set
'''
path = find_descripton_file(icon_set)
if not os.path.isfile(path):
return None

with open(path, encoding='utf-8') as f:
icon_set_descriptions = json.load(f)

return [icon_set_descriptions]


def get_icon_description(icon_name='', icon_set=''):
'''
Return json containing the description in all available languages for an icon in the specified
Expand Down
29 changes: 1 addition & 28 deletions app/icon_set.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from flask import url_for

from app.helpers.description import find_descripton_file
from app.helpers.description import get_icon_set_description
from app.helpers.icons import get_icon_set_template_url
from app.helpers.url import get_base_url
from app.icon import Icon
Expand Down Expand Up @@ -81,19 +80,6 @@ def get_icons_url(self):
"""
return url_for('icons_from_icon_set', icon_set_name=self.name, _external=True)

def get_icon_set_description_url(self):
"""
Generate and return the URL that will list the description in all available lanaguages
of all available icons of this icon set.
Returns:
the URL to the description in all available languages of all icons in this icon set if
it exists, otherwise return None
"""
if find_descripton_file(self.name):
return url_for('description_from_icon_set', icon_set_name=self.name, _external=True)
return None

def get_icon(self, icon_name):
"""
Generate and return the URL to access the metadata of one specific icon of this icon set
Expand All @@ -120,19 +106,6 @@ def get_all_icons(self):
icons.append(self.get_icon(name_without_extension))
return icons

def get_description(self):
"""
Generate a dictionary containing the description in all available languages of all icons
belonging to this icon set.
Returns:
A dictionary of all icon description in all available languages from this icon set it
it exists, otherwise return None
"""
if not self.is_valid():
return None
return get_icon_set_description(self.name)

def serialize(self):
"""
As we want to add "icons_url" to the __dict__, we can't really use a json.dumps to generate
Expand All @@ -148,5 +121,5 @@ def serialize(self):
"colorable": self.colorable,
"icons_url": self.get_icons_url(),
"template_url": get_icon_set_template_url(get_base_url()),
"description_url": self.get_icon_set_description_url()
"has_description": bool(find_descripton_file(self.name))
}
8 changes: 0 additions & 8 deletions app/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

from app import app
from app.helpers.check_functions import check_color_channels
from app.helpers.check_functions import check_if_descripton_file_exists
from app.helpers.check_functions import check_scale
from app.helpers.check_functions import get_and_check_icon
from app.helpers.check_functions import get_and_check_icon_set
Expand Down Expand Up @@ -65,13 +64,6 @@ def icons_from_icon_set(icon_set_name):
return make_api_compliant_response(icon_set.get_all_icons())


@app.route('/sets/<string:icon_set_name>/description', methods=['GET'])
def description_from_icon_set(icon_set_name):
icon_set = get_and_check_icon_set(icon_set_name)
check_if_descripton_file_exists(icon_set_name)
return make_api_compliant_response(icon_set.get_description())


@app.route('/sets/<string:icon_set_name>/icons/<string:icon_name>', methods=['GET'])
def icon_metadata(icon_set_name, icon_name):
icon_set = get_and_check_icon_set(icon_set_name)
Expand Down
7 changes: 1 addition & 6 deletions tests/unit_tests/test_all_icons.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,7 @@ def test_all_icon_sets_metadata_endpoint(self):
self.assertIn('name', icon_set_metadata)
self.assertEqual(icon_set_name, icon_set_metadata['name'])
self.assertIn('colorable', icon_set_metadata)
self.assertIn('description_url', icon_set_metadata)
if icon_set_metadata['description_url']:
r = self.app.get(
icon_set_metadata['description_url'], headers=self.default_header
)
self.assertEqual(r.status_code, 200)
self.assertIn('has_description', icon_set_metadata)
self.assertIn('icons_url', icon_set_metadata)
self.assertIsNotNone(icon_set_metadata['icons_url'])
self.assertEqual(
Expand Down
29 changes: 0 additions & 29 deletions tests/unit_tests/test_description.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import json
import os

from flask import url_for

from app.settings import DESCRIPTION_FOLDER
from tests.unit_tests.base_test import ServiceIconsUnitTests

Expand All @@ -28,30 +26,3 @@ def test_validate_json_description_files(self):
self.assertTrue(
validate_json(json_file), "validation failed of json file: " + file
)

def test_get_icon_set_description_valid(self):
response = self.app.get(
url_for(
'description_from_icon_set',
icon_set_name='babs-I',
),
headers={"Origin": 'www.example.com'}
)
self.assertEqual(response.status_code, 200)

def test_get_icon_set_description_invalid(self):
response = self.app.get(
url_for(
'description_from_icon_set',
icon_set_name='default',
),
headers={"Origin": 'www.example.com'}
)
self.assertEqual(
response.json, {
"error": {
"code": 404, "message": "Description dictionary not found"
},
"success": False
}
)
8 changes: 0 additions & 8 deletions tests/unit_tests/test_endpoints_compliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,6 @@ def test_icon_set_metadata(self):
)
)

def test_icon_set_description(self):
self.check_response_compliance(
self.app.get(
url_for('description_from_icon_set', icon_set_name='babs-I'),
headers=self.default_header
)
)

def test_icons_list(self):
self.check_response_compliance(
self.app.get(
Expand Down

0 comments on commit 8e2e9e5

Please sign in to comment.