from models import Module, ModuleTab from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext from ox.django.shortcuts import render_to_json_response def main(request, module_slug): m = get_object_or_404(Module, slug=module_slug) tabs = m.moduletab_set.all() default_tab = tabs[0] list_options = {} #get some options as GET params, etc. to potentially pass to get_list default_tab_list = default_tab.model_class().get_list(list_options) context = RequestContext(request, { 'title': m.title, 'default_tab': tabs[0], 'default_list': default_tab_list, 'default_sorts': default_tab.get_dict()['sorts'], 'tabs': tabs[1:] }) return render_to_response("noel/insidepage.html", context) def get_tab(request): tab_id = request.GET.get("tab_id", 0) tab = get_object_or_404(ModuleTab, pk=tab_id) return render_to_json_response(tab.get_dict()) def get_list(request): tab_id = request.GET.get("tab_id", 0) tab = get_object_or_404(ModuleTab, pk=tab_id) sortString = request.GET.get("sort", "") if sortString == "" or sortString == 'null': sortArray = [] else: sortOperator = sortString[0] sortField = sortString[1:] sortArray = [{ 'operator': sortOperator, 'key': sortField }] list_options = { 'search': request.GET.get("search", ""), 'sort': sortArray, 'page': request.GET.get("page", 1), 'count': request.GET.get("count", 12) #FIXME: make list_length either in settings.py or config per model } object_list = tab.get_list(list_options) return render_to_json_response(object_list) def get_details(request): tab_id = request.GET.get("tab_id", 0) tab = get_object_or_404(ModuleTab, pk=tab_id) model_class = tab.model_class() object_id = request.GET.get("object_id", 0) obj = get_object_or_404(model_class, pk=object_id) return render_to_json_response(obj.insidepage_dict())