def put(self, request, app_label=None, actor=None): ui = settings.SITE.ui rpt = requested_actor(app_label, actor) PUT = http.QueryDict(request.body) # raw_post_data before Django 1.4 gc = dict( widths=[int(x) for x in PUT.getlist(ext_requests.URL_PARAM_WIDTHS)], columns=[str(x) for x in PUT.getlist(ext_requests.URL_PARAM_COLUMNS)], hiddens=[(x == 'true') for x in PUT.getlist(ext_requests.URL_PARAM_HIDDENS)], #~ hidden_cols=[str(x) for x in PUT.getlist('hidden_cols')], ) filter = PUT.get('filter', None) if filter is not None: filter = json.loads(filter) gc['filters'] = [ext_requests.dict2kw(flt) for flt in filter] name = PUT.get('name', None) if name is None: name = ext_elems.DEFAULT_GC_NAME else: name = int(name) gc.update(label=PUT.get('label', "Standard")) try: msg = rpt.save_grid_config(name, gc) except IOError, e: msg = _("Error while saving GC for %(table)s: %(error)s") % dict( table=rpt, error=e) return settings.SITE.ui.error(None, msg, alert=True)
def delete(self, request, app_label=None, actor=None, pk=None): #~ ui = settings.SITE.ui rpt = requested_actor(app_label, actor) #~ a = rpt.default_action #~ elem = rpt.get_row_by_pk(pk) ar = rpt.request(request=request) ar.set_selected_pks(pk) return delete_element(ar, ar.selected_rows[0])
def get(self, request, app_label=None, actor=None, pk=None): rpt = requested_actor(app_label, actor) assert pk is None, 20120814 ar = rpt.request(request=request) rh = ar.ah rows = [ rh.store.row2dict(ar, row, rh.store.list_fields) for row in ar.sliced_data_iterator] kw = dict(count=ar.get_total_count(), rows=rows) kw.update(title=unicode(ar.get_title())) return json_response(kw)
def get(self, request, app_label=None, actor=None, an=None, field=None, **kw): actor = requested_actor(app_label, actor) ba = actor.get_url_action(an) if ba is None: raise Exception("Unknown action %r for %s" % (an, actor)) field = ba.action.get_param_elem(field) qs, row2dict = choices_for_field(request, actor, field) if field.blank: emptyValue = '<br/>' else: emptyValue = None return choices_response(request, qs, row2dict, emptyValue)
def put(self, request, app_label=None, actor=None, pk=None): rpt = requested_actor(app_label, actor) ar = rpt.request(request=request) ar.set_selected_pks(pk) elem = ar.selected_rows[0] rh = ar.ah data = http.QueryDict(request.body).get('rows') data = json.loads(data) a = rpt.get_url_action(rpt.default_list_action_name) ar = rpt.request(request=request, action=a) ar.renderer = settings.SITE.ui.extjs_renderer ar.form2obj_and_save(data, elem, False) # Ext.ensible needs list_fields, not detail_fields ar.set_response( rows=[rh.store.row2dict(ar, elem, rh.store.list_fields)]) return json_response(ar.response)
def get(self, request, app_label=None, actor=None, pk=None): #~ ui = settings.SITE.ui rpt = requested_actor(app_label, actor) #~ a = rpt.default_action assert pk is None, 20120814 #~ if pk is None: #~ elem = None #~ else: #~ elem = rpt.get_row_by_pk(pk) ar = rpt.request(request=request) rh = ar.ah rows = [ rh.store.row2dict(ar, row, rh.store.list_fields) for row in ar.sliced_data_iterator] kw = dict(count=ar.get_total_count(), rows=rows) kw.update(title=unicode(ar.get_title())) return json_response(kw)
def put(self, request, app_label=None, actor=None, pk=None): #~ ui = settings.SITE.ui rpt = requested_actor(app_label, actor) #~ a = rpt.default_action #~ elem = rpt.get_row_by_pk(pk) ar = rpt.request(request=request) ar.set_selected_pks(pk) elem = ar.selected_rows[0] rh = ar.ah # raw_post_data before Django 1.4 data = http.QueryDict(request.body).get('rows') data = json.loads(data) a = rpt.get_url_action(rpt.default_list_action_name) ar = rpt.request(request=request, action=a) ar.renderer = settings.SITE.ui.extjs_renderer # force_update=True) return form2obj_and_save(ar, data, elem, False, True)
def post(self, request, app_label=None, actor=None, pk=None): rpt = requested_actor(app_label, actor) ar = rpt.request(request=request) instance = ar.create_instance() # store uploaded files. # html forms cannot send files with PUT or GET, only with POST if ar.actor.handle_uploaded_files is not None: ar.actor.handle_uploaded_files(instance, request) data = request.POST.get('rows') data = json.loads(data) ar.form2obj_and_save(data, instance, True) # Ext.ensible needs list_fields, not detail_fields ar.set_response( rows=[ar.ah.store.row2dict( ar, instance, ar.ah.store.list_fields)]) return json_response(ar.response)
def post(self, request, app_label=None, actor=None, pk=None): #~ ui = settings.SITE.ui rpt = requested_actor(app_label, actor) #~ if pk is None: #~ elem = None #~ else: #~ elem = rpt.get_row_by_pk(pk) ar = rpt.request(request=request) instance = ar.create_instance() # store uploaded files. # html forms cannot send files with PUT or GET, only with POST if ar.actor.handle_uploaded_files is not None: ar.actor.handle_uploaded_files(instance, request) data = request.POST.get('rows') #~ logger.info("20111217 Got POST %r",data) data = json.loads(data) #~ data = self.rest2form(request,rh,data) return form2obj_and_save(ar, data, instance, True, True)
def get(self, request, app_label=None, rptname=None, fldname=None, **kw): """ Return a JSON object with two attributes `count` and `rows`, where `rows` is a list of `(display_text,value)` tuples. Used by ComboBoxes or similar widgets. If `fldname` is not specified, returns the choices for the `record_selector` widget. """ rpt = requested_actor(app_label, rptname) emptyValue = None if fldname is None: ar = rpt.request(request=request) # ,rpt.default_action) #~ rh = rpt.get_handle(self) #~ ar = ViewReportRequest(request,rh,rpt.default_action) #~ ar = dbtables.TableRequest(self,rpt,request,rpt.default_action) #~ rh = ar.ah #~ qs = ar.get_data_iterator() qs = ar.data_iterator #~ qs = rpt.request(self).get_queryset() def row2dict(obj, d): d[ext_requests.CHOICES_TEXT_FIELD] = unicode(obj) # getattr(obj,'pk') d[ext_requests.CHOICES_VALUE_FIELD] = obj.pk return d else: """ NOTE: if you define a *parameter* with the same name as some existing *data element* name, then the parameter will override the data element. At least here in choices view. """ #~ field = find_field(rpt.model,fldname) field = rpt.get_param_elem(fldname) if field is None: field = rpt.get_data_elem(fldname) if field.blank: #~ logger.info("views.Choices: %r is blank",field) emptyValue = '<br/>' qs, row2dict = choices_for_field(request, rpt, field) return choices_response(request, qs, row2dict, emptyValue)
def get(self, request, app_label=None, actor=None, pk=None, fldname=None, tplname=None, **kw): if request.method == 'GET': rpt = requested_actor(app_label, actor) elem = rpt.get_row_by_pk(None, pk) if elem is None: raise http.Http404("%s %s does not exist." % (rpt, pk)) TextFieldTemplate = settings.SITE.\ modules.system.TextFieldTemplate if tplname: tft = TextFieldTemplate.objects.get(pk=int(tplname)) if settings.SITE.trusted_templates: #~ return http.HttpResponse(tft.text) template = JinjaTemplate(tft.text) context = dict(request=request, instance=elem, **settings.SITE.modules) return http.HttpResponse(template.render(**context)) else: return http.HttpResponse(tft.text) teams = [o.group for o in request.user.users_membership_set_by_user.all()] flt = models.Q(team__isnull=True) | models.Q(team__in=teams) qs = TextFieldTemplate.objects.filter(flt).order_by('name') templates = [] for obj in qs: url = settings.SITE.build_admin_url( 'templates', app_label, actor, pk, fldname, unicode(obj.pk)) templates.append([ unicode(obj.name), url, unicode(obj.description)]) js = "var tinyMCETemplateList = %s;" % py2js(templates) return http.HttpResponse(js, content_type='text/json') raise http.Http404("Method %r not supported" % request.method)
def old_delete(self, request, app_label=None, actor=None, pk=None): rpt = requested_actor(app_label, actor) ar = rpt.request(request=request) ar.set_selected_pks(pk) elem = ar.selected_rows[0] return delete_element(ar, elem)
def get(self, request, app_label=None, actor=None, pk=None): ui = settings.SITE.ui rpt = requested_actor(app_label, actor) action_name = request.GET.get(ext_requests.URL_PARAM_ACTION_NAME, rpt.default_elem_action_name) ba = rpt.get_url_action(action_name) if ba is None: raise http.Http404("%s has no action %r" % (rpt, action_name)) if pk and pk != '-99999' and pk != '-99998': #~ ar = ba.request(request=request,selected_pks=[pk]) #~ print 20131004, ba.actor ar = ba.request(request=request) ar.set_selected_pks(pk) elem = ar.selected_rows[0] if elem is None: raise http.Http404( "%s has no row with primary key %r" % (rpt, pk)) else: ar = ba.request(request=request) elem = None ar.renderer = ui.extjs_renderer ah = ar.ah fmt = request.GET.get( ext_requests.URL_PARAM_FORMAT, ba.action.default_format) if ba.action.opens_a_window: if fmt == ext_requests.URL_FORMAT_JSON: if pk == '-99999': elem = ar.create_instance() datarec = ar.elem2rec_insert(ah, elem) elif pk == '-99998': elem = ar.create_instance() datarec = elem2rec_empty(ar, ah, elem) else: datarec = ar.elem2rec_detailed(elem) return json_response(datarec) after_show = ar.get_status(record_id=pk) tab = request.GET.get(ext_requests.URL_PARAM_TAB, None) if tab is not None: tab = int(tab) after_show.update(active_tab=tab) return http.HttpResponse( ui.extjs_renderer.html_page( request, ba.action.label, on_ready=ui.extjs_renderer.action_call( request, ba, after_show))) if isinstance(ba.action, actions.RedirectAction): target = ba.action.get_target_url(elem) if target is None: raise http.Http404("%s failed for %r" % (ba, elem)) return http.HttpResponseRedirect(target) if pk == '-99998': assert elem is None elem = ar.create_instance() ar.selected_rows = [elem] return settings.SITE.ui.run_action(ar)