Skip to content

Commit

Permalink
Removes some Sencha touch artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrunner committed Apr 18, 2016
1 parent 6fc58ce commit 7ad0c37
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 351 deletions.
148 changes: 0 additions & 148 deletions c2cgeoportal/tests/functional/test_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import transaction
import os
import json
import urllib
from geoalchemy2 import WKTElement
from pyramid import testing
from owslib.wms import WebMapService
Expand Down Expand Up @@ -368,102 +367,6 @@ def test_index_auth_edit_permission(self):
if layer["name"] == "__test_public_layer"
], [False])

def test_mobileconfig_no_auth_no_theme(self):
entry = self._create_entry_obj()
response = entry.mobileconfig()

self.assertEqual(response["themes"], [])

def test_mobileconfig_no_auth_theme(self):
entry = self._create_entry_obj(params={"theme": u"__test_theme"})
entry.request.interface_name = "mobile"
response = entry.mobileconfig()

self.assertEqual(
[t["name"] for t in response["themes"]],
["__test_theme"]
)
theme = response["themes"][0]
self.assertEqual(
set([l["name"] for l in theme["allLayers"]]),
set([u"__test_layer_in_group", u"__test_public_layer", u"test_wmsfeaturesgroup"])
)

self.assertEqual(theme["layers"], ["__test_layer_in_group"])

info = response["info"]
self.assertEqual(
info,
{"username": ""}
)

def test_mobileconfig_no_auth_default_theme(self):
entry = self._create_entry_obj()
entry.request.interface_name = "mobile"
entry.request.registry.settings["functionalities"] = {
"anonymous": {
"mobile_default_theme": u"__test_theme"
}
}
response = entry.mobileconfig()

theme = response["themes"][0]
layers = theme["allLayers"]
self.assertEqual(len(layers), 3)

def test_mobileconfig_wmsgroup(self):
entry = self._create_entry_obj(params={"theme": u"__test_theme"})
entry.request.interface_name = "mobile"
response = entry.mobileconfig()

theme = response["themes"][0]
layers = theme["allLayers"]
self.assertEqual(
layers,
[{
"name": u"test_wmsfeaturesgroup",
"minResolutionHint": 1.76,
"maxResolutionHint": 8.82,
"childLayers": [{
"name": "test_wmsfeatures",
"minResolutionHint": 1.76,
"maxResolutionHint": 8.82,
}]
}, {
"name": u"__test_layer_in_group"
}, {
"name": u"__test_public_layer"
}]
)

def test_mobileconfig_auth_theme(self):
entry = self._create_entry_obj(
params={"theme": u"__test_theme"}, username=u"__test_user1"
)
entry.request.interface_name = "mobile"
response = entry.mobileconfig()

theme = response["themes"][0]
layers = theme["allLayers"]

self.assertEqual(set([
layer["name"] for layer in layers
]), set([
u"__test_layer_in_group", u"__test_public_layer",
u"__test_private_layer", u"test_wmsfeaturesgroup"
]))

self.assertEqual(
set(theme["layers"]),
set([u"__test_layer_in_group", u"__test_private_layer"])

)
info = response["info"]
self.assertEqual(
info,
{"username": "__test_user1"}
)

def test_theme(self):
from c2cgeoportal.models import DBSession, User
from c2cgeoportal.views.entry import Entry
Expand Down Expand Up @@ -668,51 +571,6 @@ def test_permalink_themes(self):
response = entry.get_cgxp_viewer_vars()
self.assertEquals(response["permalink_themes"], '["my_themes"]')

def test_mobile_cache_version(self):
from c2cgeoportal.views.entry import Entry

request = self._create_request_obj()
request.user = None
entry = Entry(request)
request.current_route_url = lambda **kwargs: "http://example.com/current/view"
result = entry.mobile()
self.assertRegexpMatches(result["url_params"], "cache_version=[0-9a-f]*")
self.assertRegexpMatches(result["extra_params"], "cache_version=[0-9a-f]*")
self.assertEquals(result["url_params"], result["extra_params"])

result2 = entry.mobile()
self.assertEquals(result2["url_params"], result["url_params"])
self.assertEquals(result2["extra_params"], result["extra_params"])

def test_auth_mobile_cache_version(self):
from c2cgeoportal.views.entry import Entry

request = self._create_request_obj(username=u"__test_user1")
entry = Entry(request)
request.current_route_url = lambda **kwargs: "http://example.com/current/view"
result = entry.mobile()
self.assertRegexpMatches(result["url_params"], "cache_version=[0-9a-f]*")
self.assertRegexpMatches(result["extra_params"], "role=__test_role1&cache_version=[0-9a-f]*")

result2 = entry.mobile()
self.assertEquals(result2["url_params"], result["url_params"])
self.assertEquals(result2["extra_params"], result["extra_params"])

def test_auth_mobile(self):
from c2cgeoportal.views.entry import Entry

request = self._create_request_obj(username=u"__test_user1")
request.params = {
u"test": u"éàè"
}
entry = Entry(request)
request.current_route_url = lambda **kwargs: "http://example.com/current/view"
result = entry.mobile()
self.assertRegexpMatches(
result["extra_params"],
"test=" + urllib.quote("éàè") + "&role=__test_role1&cache_version=[0-9a-f]*"
)

def test_entry_points(self):
from c2cgeoportal.views.entry import Entry

Expand Down Expand Up @@ -767,12 +625,6 @@ def test_entry_points(self):
"debug", "fulltextsearch_groups", "permalink_themes"
]))

result = entry.mobile()
self.assertEquals(
set(result.keys()),
set(["lang", "came_from", "url_params", "extra_params"])
)

result = entry.apijs()
self.assertEquals(
set(result.keys()),
Expand Down
67 changes: 0 additions & 67 deletions c2cgeoportal/tests/functional/test_mobile_desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,73 +123,6 @@ def _create_entry_obj(self, username=None, params={}):

return Entry(request)

def test_mobile_themes(self):
entry = self._create_entry_obj()
entry.request.interface_name = "mobile"
response_vars = entry.mobileconfig()

self.assertEqual(
[t["name"] for t in response_vars["themes"]],
[u"__test_theme", u"__test_mobile_only_theme"]
)
self.assertEqual(
response_vars["themes"],
[{
"name": u"__test_theme",
"icon": u"",
"layers": [u"__test_mobile_only_layer", "__test_layer"],
"allLayers": [
{"name": u"__test_mobile_only_layer"},
{"name": u"__test_layer"}
]
}, {
"name": u"__test_mobile_only_theme",
"icon": u"",
"layers": [u"__test_layer"],
"allLayers": [
{"name": u"__test_layer"}
]
}]
)

def test_mobile_private_theme(self):
entry = self._create_entry_obj()
entry.request.interface_name = "mobile"
response_vars = entry.mobileconfig()
entry.request.registry.settings["functionalities"] = {
"anonymous": {
"mobile_default_theme": u"__test_mobile_private_theme"
}
}
response_vars = entry.mobileconfig()

self.assertEqual(
response_vars["themes"],
[{
"name": u"__test_theme",
"icon": u"",
"layers": [u"__test_mobile_only_layer", u"__test_layer"],
"allLayers": [
{"name": u"__test_mobile_only_layer"},
{"name": u"__test_layer"}
]
}, {
"name": u"__test_mobile_only_theme",
"icon": u"",
"layers": [u"__test_layer"],
"allLayers": [
{"name": u"__test_layer"}
]
}, {
"name": u"__test_mobile_private_theme",
"icon": u"",
"layers": [u"__test_layer"],
"allLayers": [
{"name": u"__test_layer"}
]
}]
)

def test_desktop_layers(self):
entry = self._create_entry_obj()
response_vars = entry.get_cgxp_viewer_vars()
Expand Down
136 changes: 0 additions & 136 deletions c2cgeoportal/views/entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,6 @@ def _themes(
"""
This function returns theme information for the role identified
by ``role_id``.
``mobile`` tells whether to retrieve mobile or desktop layers
"""
errors = set()
layers = self._layers(role_id, version, interface)
Expand Down Expand Up @@ -1043,141 +1042,6 @@ def get_ngeo_permalinktheme_vars(self):
# call home with extra params
return self.get_ngeo_index_vars(d)

def mobile(self):
"""
View callable for the mobile application's index.html file.
"""
set_common_headers(self.request, "sencha_index", NO_CACHE)

extra_params = dict(self.request.params)
came_from = self.request.current_route_url(_query=extra_params)
cache_version = get_cache_version()
url_params = {
"cache_version": cache_version
}
extra_params["cache_version"] = cache_version
if self.request.user is not None:
extra_params["role"] = self.request.user.role.name

def enc(vals):
return (vals[0], vals[1].encode("utf8"))
return {
"lang": self.lang,
"came_from": came_from,
"url_params": urllib.urlencode(dict(map(enc, url_params.items()))),
"extra_params": urllib.urlencode(dict(map(enc, extra_params.items()))),
}

def flatten_layers(self, theme):
"""
Flatten the children property into allLayers for mobile application
"""

layer_info = []

def process(node, layer_info):
if "children" in node:
for child_node in node["children"]:
process(child_node, layer_info)
else:
layer_info.append(node)

process(theme, layer_info)

# we only support WMS layers right now
layer_info = filter(lambda li: li["type"] == "internal WMS", layer_info)

# list of dicts representing the layers of the selected theme
layers = []
for li in layer_info:

def process_layers(l, layers):
layer = {"name": l["name"]}
if "minResolutionHint" in l:
layer["minResolutionHint"] = l["minResolutionHint"]
if "maxResolutionHint" in l:
layer["maxResolutionHint"] = l["maxResolutionHint"]
if "childLayers" in l and len(l["childLayers"]) > 0:
layer["childLayers"] = []
for child in l["childLayers"]:
process_layers(child, layer["childLayers"])
return layers.append(layer)

process_layers(li, layers)

# reverse
theme["allLayers"] = layers[::-1]

# comma-separated string including the names of layers that
# should visible by default in the map
visible_layers = filter(lambda li: li["isChecked"] is True, layer_info)
theme["layers"] = [li["name"] for li in visible_layers][::-1]

def mobileconfig(self):
"""
View callable for the mobile application's config.js file.
"""
errors = set()
interface = self.request.interface_name

mobile_default_themes = get_functionality(
"mobile_default_theme",
self.settings,
self.request
)
theme_name = self.request.params.get(
"theme",
mobile_default_themes[0] if len(mobile_default_themes) > 0 else None
)
user = self.request.user

role_id = None if user is None else user.role.id
# get the list of themes available for mobile
themes, errors = self._themes(role_id, interface, False, 1, False, 0)
if len(errors) > 0: # pragma: no cover
log.error("Error in mobile theme:\n%s" % "\n".join(errors))

for t in themes:
self.flatten_layers(t)

# comma-separated string including the feature types supported
# by WFS service
wfs_types, errors = self._internal_wfs_types(role_id)
if len(errors) > 0: # pragma: no cover
raise HTTPBadGateway("\n".join(errors))

# info includes various information that is not used by config.js,
# but by other - private to the integrator - parts of the mobile
# application.
info = {
"username": user.username if user else ""
}

themes_ = []
for theme in themes:
# mobile theme or hidden theme explicitely loaded
if theme["in_mobile_viewer"] or theme["name"] == theme_name:
themes_.append({
"name": theme["name"],
"icon": theme["icon"],
"allLayers": theme["allLayers"],
"layers": theme["layers"],
})

set_common_headers(
self.request, "sencha_config", PRIVATE_CACHE,
vary=True, content_type="application/javascript",
)

return {
"lang": self.lang,
"themes": themes_,
"theme": theme_name if theme_name is not None else "",
"wfs_types": wfs_types,
"server_error": errors,
"info": info,
}

@view_config(route_name="apijs", renderer="api/api.js")
def apijs(self):
wms, wms_errors = self._wms_getcap(
Expand Down

0 comments on commit 7ad0c37

Please sign in to comment.