def put(self, request, app_label, module_name, object_id): """ UPDATE - Save edit form values to update an existing object. """ self.init(request, app_label, module_name, object_id) if not self.model_admin.has_change_permission(request, self.object): raise PermissionDenied # Validate input new_values = json_deserialize(request.read()) ModelForm = self.model_admin.get_form(request) form = ModelForm(new_values, instance=self.object) if form.is_valid(): new_item = form.save() formsets = None # Formsets for related objects @TODO: implement change_message = self.model_admin.construct_change_message(request, form, formsets) self.model_admin.log_change(request, new_item, change_message) response = { 'success' : True, 'msg' : _('Item saved'), 'data' : new_item, 'event' : ServerEvents.get_latest_event_for(request.user, new_item) } else: response = { 'success' : False, 'msg' : _('Item was not saved due to errors.'), 'data' : form.errors } return HttpResponse(json_serialize(response))
def add_item(self, request): """ CREATE - Add a new object based on values from form. """ if not self.model_admin.has_add_permission(request): raise PermissionDenied # Validate input new_values = json_deserialize(request.read()) ModelForm = self.model_admin.get_form(request) form = ModelForm(new_values) if form.is_valid(): new_item = form.save() self.model_admin.log_addition(request, new_item) response = { 'success' : True, 'msg' : _('Item saved'), 'data' : new_item, 'event' : ServerEvents.get_latest_event_for(request.user, new_item) } else: response = { 'success' : False, 'msg' : _('Item was not saved due to errors.'), 'data' : form.errors } return HttpResponse(json_serialize(response))
def get(self, request, app_label, module_name, action=None): """ Returns a list of items defined in the database for the specified model (module) and app Paging, Sorting and Search parameters are passed as GET values. """ self.init(request, app_label, module_name) # @TODO: Check permissions request.GET._mutable = True # Parse Ext-generated params and convert them to Django Admin params # del request.GET['app'] # del request.GET['model'] del request.GET['_dc'] #@TODO: Prevent 500 when _dc is missing # Paging page = request.GET['page'] if page: del request.GET['start'] del request.GET['limit'] del request.GET['page'] request.GET[PAGE_VAR] = int(page)-1 # Sorting sort = request.GET.get('sort') order = "" if sort: sort = json_deserialize(sort) for sort_field in sort: try: field_index = str(self.model_admin.list_display.index(sort_field['property'])) if sort_field['direction'] == 'DESC': field_index = '-' + field_index order += str(field_index) + '.' except ValueError, e: pass del request.GET['sort'] request.GET[ORDER_VAR] = order