Source code for openassembly.oa_dashboard.views

from django.http import HttpResponse
import simplejson
import BeautifulSoup
from oa_dashboard.tasks import async_sort_board, async_del_board, save_board
from oa_cache.views import render_hashed
from oa_dashboard.models import DashboardPanel
from oa_cache.models import interpret_hash, build_hash
from django.template.loader import render_to_string


[docs]def decrease_zoom(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': obj_pk = request.POST[u'object_pk'] dim = request.POST[u'dimension'] db = DashboardPanel.objects.get(pk=obj_pk) if dim == 'X': db.zoom_x -= 1 if dim == 'Y': db.zoom_y -= 1 db.save() results = {'FAIL': False} return HttpResponse(simplejson.dumps(results), mimetype='application/json')
[docs]def increase_zoom(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': obj_pk = request.POST[u'object_pk'] dim = request.POST[u'dimension'] db = DashboardPanel.objects.get(pk=obj_pk) if dim == 'X': print 'yes' * 100 db.zoom_x += 1 if dim == 'Y': print 'yes' * 100 db.zoom_y += 1 db.save() results = {'FAIL': False} return HttpResponse(simplejson.dumps(results), mimetype='application/json')
[docs]def add_board(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') try: results = {} if request.method == 'POST': path = request.POST[u'path'] dashboard_id = request.POST[u'dashboard_id'] dashpk = request.POST.get(u'dashobj', None) functype = request.POST[u'type'] boardname = request.POST[u'boardname'] start = request.POST.get('start', 0) key, rendertype, db = interpret_hash(path) dimension = db.get('DIM_KEY', None) end = request.POST.get('end', 20) #for pagination if functype != 'refresh': dashobj = save_board(path, dashboard_id, request.user, boardname) else: dashobj = DashboardPanel.objects.get(pk=dashpk) path += '/s-' + str(start) + '/e-' + str(end) renderdict = render_hashed(request, path, request.user, extracontext={'dimension': dimension, 'dashobj': dashobj, 'start': int(start), 'end': int(end)}) if renderdict['rendertype'] == 'chat': width = render_to_string('stream/stream_width.html', {'dashobj': dashobj}) height = render_to_string('stream/stream_height.html', {'dashobj': dashobj}) results = {'width': width, 'height': height} if renderdict['rendertype'] in renderdict['counts']: count = renderdict['counts'][renderdict['rendertype']] else: count = None html = render_to_string('nav/board_template.html', {'dimension': dimension, 'board': renderdict['renders'], 'obj': renderdict['object'], 'dashobj': dashobj, 'start': int(start), 'end': int(end), 'count': count}) if functype == 'refresh': soup = BeautifulSoup.BeautifulSoup(html) v = soup.find("div", id='content' + str(dashobj.pk)) html = unicode(v.prettify()) results.update({'FAIL': False, 'html': html, 'dashpk': dashobj.pk, 'dashzoom_y': dashobj.zoom_y, 'dashzoom_x': dashobj.zoom_x, 'rendertype': renderdict['rendertype']}) except Exception, e: results = {'err': str(e)} return HttpResponse(simplejson.dumps(results), mimetype='application/json')
[docs]def sort_board(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': sorted_str = request.POST[u'sorted'] sorted_list = sorted_str.split(',') async_sort_board.apply_async(args=[sorted_list]) results = {'FAIL': False} return HttpResponse(simplejson.dumps(results), mimetype='application/json')
[docs]def resort_board(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': d_id = request.POST[u'dashboard_id'] dim = request.POST[u'sort_key'] dash = DashboardPanel.objects.get(pk=d_id) key, rendertype, paramdict = interpret_hash(dash.plank) paramdict['DIM_KEY'] = dim key = build_hash(rendertype, paramdict, add_domain=False) dash.plank = key dash.save() results = {'FAIL': False, 'dash_id': dash.dashboard_id, 'plank': dash.plank} return HttpResponse(simplejson.dumps(results), mimetype='application/json')
[docs]def del_board(request): if not request.user.is_authenticated() or not request.user.is_active: #needs to popup registration dialog instead return HttpResponse(simplejson.dumps({'FAIL': True}), mimetype='application/json') if request.method == 'POST': obj_pk = request.POST[u'object_pk'] ds = DashboardPanel.objects.get(pk=obj_pk) user = ds.user dashboard_id = ds.dashboard_id ds.delete() async_del_board.apply_async(args=[obj_pk, user.pk, dashboard_id]) results = {'FAIL': False} return HttpResponse(simplejson.dumps(results), mimetype='application/json')