Skip to content

Commit

Permalink
improve app urls in templates
Browse files Browse the repository at this point in the history
  • Loading branch information
hisham waleed karam committed Jan 19, 2019
1 parent e65e503 commit a4a17e3
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 22 deletions.
60 changes: 60 additions & 0 deletions cartoview/app_manager/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,66 @@ def settings_url(self):
logger.error(e.message)
return None

@property
def urls(self):
admin_urls = logged_in_urls = anonymous_urls = None
try:
app_module = __import__(self.name)
if hasattr(app_module, 'urls_dict'):
urls_dict = getattr(app_module, 'urls_dict')
if 'admin' in list(urls_dict.keys()):
admin_urls = urls_dict['admin']
else:
admin_urls = None
if 'logged_in' in list(urls_dict.keys()):
logged_in_urls = urls_dict['logged_in']
else:
logged_in_urls = None
if 'anonymous' in list(urls_dict.keys()):
anonymous_urls = urls_dict['anonymous']
else:
anonymous_urls = None
except ImportError as e:
logger.error(e.message)
return (admin_urls, logged_in_urls, anonymous_urls)

@property
def open_url(self):
from django.core.urlresolvers import reverse
open_url = reverse('app_manager_base_url') + self.name
try:
app_module = __import__(self.name)
if hasattr(app_module, 'OPEN_URL_NAME'):
open_url = reverse(getattr(app_module, 'OPEN_URL_NAME'))
except ImportError as e:
logger.error(e.message)
return open_url

@property
def create_new_url(self):
from django.core.urlresolvers import reverse
create_new_url = reverse('{}.new'.format(self.name))
try:
app_module = __import__(self.name)
if hasattr(app_module, 'CREATE_NEW_URL_NAME'):
create_new_url = reverse(
getattr(app_module, 'CREATE_NEW_URL_NAME'))
except ImportError as e:
logger.error(e.message)
return create_new_url

@property
def admin_urls(self):
return self.urls[0]

@property
def logged_in_urls(self):
return self.urls[1]

@property
def anonymous_urls(self):
return self.urls[2]

@property
def new_url(self):
try:
Expand Down
7 changes: 5 additions & 2 deletions cartoview/app_manager/templates/app_manager/apps.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ <h4 class="text-center">{{ app.title }}</h4>
<div class="text-center" style="display:flex;flex-wrap:wrap">
{% if app.single_instance %}
<div style="margin-right:auto;margin-left:auto" id="card-buttons">
<a href="{% url 'app_manager_base_url' %}{{ app.name }}"
<a href="{{app.open_url}}"
target="_parent" class="btn btn-sm btn-primary">Open</a>
</div>

Expand All @@ -82,10 +82,13 @@ <h4 class="text-center">{{ app.title }}</h4>
target="_parent" class="btn btn-sm btn-primary">Explore <span
class="badge">{{ app.appinstance_set.all|objects_count:request.user }}</span></a>
</div>
{% comment %}
REMOVE THE FOLLOWING CONDITION AFTER FIXING __init__.py OF ALL MULTIPLE INSTANCE APPS
{% endcomment %}
{% if not user.is_authenticated or not request.user.is_staff %}
<div id="card-buttons">
<a class="btn btn-sm btn-primary"
href="{% url 'account_login' %}?next={% url ""|add:app.name|add:'.new' %}">
href="{% url 'account_login' %}?next={{app.create_new_url}}">
Create New
</a>
</div>
Expand Down
20 changes: 0 additions & 20 deletions cartoview/app_manager/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
unicode_literals)

import abc
import importlib
import json
import os

Expand Down Expand Up @@ -97,25 +96,6 @@ def manage_apps(request):

def index(request):
Apps = installed_apps()
for app in Apps:
module = importlib.import_module(app.name)
if hasattr(module, 'urls_dict'):
urls_dict = getattr(module, 'urls_dict')
if 'admin' in list(urls_dict.keys()):
app.admin_urls = urls_dict['admin']
else:
app.admin_urls = None
if 'logged_in' in list(urls_dict.keys()):
app.logged_in_urls = urls_dict['logged_in']
else:
app.logged_in_urls = None
if 'anonymous' in list(urls_dict.keys()):
app.anonymous_urls = urls_dict['anonymous']
else:
app.anonymous_urls = None
else:
app.admin_urls = app.logged_in_urls = app.anonymous_urls = None

context = {'Apps': Apps}
return render(request, 'app_manager/apps.html', context)

Expand Down

0 comments on commit a4a17e3

Please sign in to comment.