dashboard: add option to set new tile position (#19346)
This commit is contained in:
parent
8b041f9e07
commit
c4af7f7105
|
@ -20,6 +20,7 @@ from django.conf import settings
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db.models import Max, Min
|
||||
from django.http import Http404, HttpResponse, HttpResponseRedirect
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.generic import View
|
||||
|
@ -64,8 +65,14 @@ class DashboardAddTileView(View):
|
|||
|
||||
tile = Tile(dashboard=dashboard,
|
||||
cell=cell,
|
||||
user=request.user)
|
||||
tile.order = 0
|
||||
user=request.user,
|
||||
order=0)
|
||||
if settings.COMBO_DASHBOARD_NEW_TILE_POSITION == 'first':
|
||||
order = Tile.objects.filter(dashboard=dashboard, user=request.user).aggregate(Min('order')).get('order__min')
|
||||
tile.order = order - 1 if order is not None else 0
|
||||
elif settings.COMBO_DASHBOARD_NEW_TILE_POSITION == 'last':
|
||||
order = Tile.objects.filter(dashboard=dashboard, user=request.user).aggregate(Max('order')).get('order_max')
|
||||
tile.order = order + 1 if order is not None else 0
|
||||
tile.save()
|
||||
|
||||
cell_data = get_cell_data(cell)
|
||||
|
|
|
@ -288,6 +288,8 @@ COMBO_WELCOME_PAGE_PATH = None
|
|||
# dashboard support
|
||||
COMBO_DASHBOARD_ENABLED = False
|
||||
|
||||
COMBO_DASHBOARD_NEW_TILE_POSITION = 'last'
|
||||
|
||||
# default position on maps
|
||||
COMBO_MAP_DEFAULT_POSITION = {'lat': '48.83369263315934',
|
||||
'lng': '2.3233688436448574'
|
||||
|
|
|
@ -55,11 +55,40 @@ def test_add_to_dashboard(app, site):
|
|||
assert Tile.objects.all()[0].cell.text == cell.text
|
||||
assert Tile.objects.all()[0].dashboard_id == dashboard.id
|
||||
assert Tile.objects.all()[0].user_id == user.id
|
||||
assert Tile.objects.all()[0].order == 0
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/two/', status=200)
|
||||
assert 'hello world' in resp.body
|
||||
|
||||
def test_add_to_dashboard_order(app, site):
|
||||
test_add_to_dashboard(app, site)
|
||||
cell = TextCell.objects.get(order=101)
|
||||
resp = app.get(reverse('combo-dashboard-add-tile',
|
||||
kwargs={'cell_reference': cell.get_reference()}))
|
||||
assert Tile.objects.count() == 2
|
||||
assert Tile.objects.all()[0].cell.text == 'hello world (100)'
|
||||
assert Tile.objects.all()[1].cell.text == 'hello world (101)'
|
||||
|
||||
cell = TextCell.objects.get(order=102)
|
||||
resp = app.get(reverse('combo-dashboard-add-tile',
|
||||
kwargs={'cell_reference': cell.get_reference()}))
|
||||
assert Tile.objects.count() == 3
|
||||
assert Tile.objects.all()[0].cell.text == 'hello world (100)'
|
||||
assert Tile.objects.all()[1].cell.text == 'hello world (101)'
|
||||
assert Tile.objects.all()[2].cell.text == 'hello world (102)'
|
||||
|
||||
with override_settings(COMBO_DASHBOARD_NEW_TILE_POSITION='first'):
|
||||
cell = TextCell.objects.get(order=103)
|
||||
resp = app.get(reverse('combo-dashboard-add-tile',
|
||||
kwargs={'cell_reference': cell.get_reference()}))
|
||||
assert Tile.objects.count() == 4
|
||||
assert Tile.objects.all()[0].cell.text == 'hello world (103)'
|
||||
assert Tile.objects.all()[1].cell.text == 'hello world (100)'
|
||||
assert Tile.objects.all()[2].cell.text == 'hello world (101)'
|
||||
assert Tile.objects.all()[3].cell.text == 'hello world (102)'
|
||||
|
||||
|
||||
def test_ajax_add_to_dashboard(app, site):
|
||||
cell = TextCell.objects.get(order=100)
|
||||
resp = app.get(reverse('combo-dashboard-add-tile',
|
||||
|
|
Loading…
Reference in New Issue