예제 #1
0
파일: views.py 프로젝트: averrin/eliar
def save_ajax(request):
    if not request.method == 'POST':
        return HttpResponse(simplejson.dumps({'errors': 'It is not a POST request'}),
                            mimetype='application/json')
    adaptor = _get_adaptor(request, 'POST')
    if not adaptor:
        return HttpResponse(simplejson.dumps({'errors': 'Params insufficient'}),
                            mimetype='application/json')
    value = simplejson.loads(request.POST.get('value'))
    new_data = get_dict_from_obj(adaptor.obj)
    form_class = adaptor.get_form_class()
    field_name = adaptor.field_name

    form = form_class(data=new_data, instance=adaptor.obj)
    try:
        value_edit = adaptor.get_value_editor(value)
        value_edit_with_filter = apply_filters(value_edit, adaptor.filters_to_edit)
        new_data[field_name] = value_edit_with_filter
        if form.is_valid():
            adaptor.save(value_edit_with_filter)
            return HttpResponse(simplejson.dumps({'errors': False,
                                            'value': adaptor.render_value()}),
                                mimetype='application/json')
        messages = []  # The error is for another field that you are editing
        for field_name_error, errors_field in form.errors.items():
            for error in errors_field:
                messages.append("%s: %s" % (field_name_error, unicode(error)))
        message_i18n = ','.join(messages)
        return HttpResponse(simplejson.dumps({'errors': message_i18n}), mimetype='application/json')
    except ValidationError, error:  # The error is for a field that you are editing
        message_i18n = ', '.join([u"%s" % m for m in error.messages])
        return HttpResponse(simplejson.dumps({'errors': message_i18n}), mimetype='application/json')
예제 #2
0
def save_ajax(request):
    if not request.method == 'POST':
        return _get_http_response({'errors': 'It is not a POST request'})
    adaptor = _get_adaptor(request, 'POST')
    if not adaptor:
        return _get_http_response({'errors': 'Params insufficient'})
    if not adaptor.can_edit():
        return _get_http_response({'errors': 'You can not edit this content'})
    value = adaptor.loads_to_post(request)
    new_data = get_dict_from_obj(adaptor.obj)
    form_class = adaptor.get_form_class()
    field_name = adaptor.field_name

    form = form_class(data=new_data, instance=adaptor.obj)
    try:
        value_edit = adaptor.get_value_editor(value)
        value_edit_with_filter = apply_filters(value_edit,
                                               adaptor.filters_to_edit)
        new_data[field_name] = value_edit_with_filter
        if form.is_valid():
            adaptor.save(value_edit_with_filter)
            return _get_http_response({
                'errors': False,
                'value': adaptor.render_value_edit()
            })
        messages = []  # The error is for another field that you are editing
        for field_name_error, errors_field in form.errors.items():
            for error in errors_field:
                messages.append("%s: %s" % (field_name_error, unicode(error)))
        message_i18n = ','.join(messages)
        return _get_http_response({'errors': message_i18n})
    except ValidationError, error:  # The error is for a field that you are editing
        message_i18n = ', '.join([u"%s" % m for m in error.messages])
        return _get_http_response({'errors': message_i18n})
예제 #3
0
def save_ajax(request):
    if not request.method == "POST":
        return _get_http_response({"errors": "It is not a POST request"})
    adaptor = _get_adaptor(request, "POST")
    if not adaptor:
        return _get_http_response({"errors": "Params insufficient"})
    if not adaptor.can_edit():
        return _get_http_response({"errors": "You can not edit this content"})
    value = adaptor.loads_to_post(request)
    new_data = get_dict_from_obj(adaptor.obj)
    form_class = adaptor.get_form_class()
    field_name = adaptor.field_name
    form = form_class(data=new_data, instance=adaptor.obj)
    messages = []
    try:
        value_edit = adaptor.get_value_editor(value)
        value_edit_with_filter = apply_filters(value_edit, adaptor.filters_to_edit)
        new_data[field_name] = value_edit_with_filter
        if form.is_valid():
            adaptor.save(value_edit_with_filter)
            return _get_http_response({"errors": False, "value": adaptor.render_value_edit()})
        # The error is for another field that you are editing
        for field_name_error, errors_field in form.errors.items():
            try:
                name = form.instance._meta.get_field_by_name(field_name_error)[0].verbose_name.decode("utf-8")
            except FieldDoesNotExist:
                name = field_name_error
            for error in errors_field:
                messages.append([name, unicode(error)])
    except ValidationError as error:  # The error is for a field that you are editing
        for error in error.messages:
            messages.append([None, unicode(error)])
    message_i18n = render_to_string("inplaceeditform/field_errors.html", {"errors": messages})
    return _get_http_response({"errors": message_i18n})
예제 #4
0
def save_ajax(request):
    if not request.method == 'POST':
        return _get_http_response({'errors': 'It is not a POST request'})
    adaptor = _get_adaptor(request, 'POST')
    if not adaptor:
        return _get_http_response({'errors': 'Params insufficient'})
    if not adaptor.can_edit():
        return _get_http_response({'errors': 'You can not edit this content'})
    value = adaptor.loads_to_post(request)
    new_data = get_dict_from_obj(adaptor.obj)
    form_class = adaptor.get_form_class()
    field_name = adaptor.field_name
    form = form_class(data=new_data, instance=adaptor.obj)
    try:
        value_edit = adaptor.get_value_editor(value)
        value_edit_with_filter = apply_filters(value_edit, adaptor.filters_to_edit)
        new_data[field_name] = value_edit_with_filter
        if form.is_valid():
            adaptor.save(value_edit_with_filter)
            return _get_http_response({'errors': False,
                                       'value': adaptor.render_value_edit()})
        messages = []  # The error is for another field that you are editing
        for field_name_error, errors_field in form.errors.items():
            for error in errors_field:
                messages.append(u"%s: %s" % (field_name_error, error))
        message_i18n = ', '.join(messages)
        return _get_http_response({'errors': message_i18n})
    except ValidationError as error:  # The error is for a field that you are editing
        message_i18n = ', '.join([u"%s" % m for m in error.messages])
        return _get_http_response({'errors': message_i18n})
예제 #5
0
 def render_value(self, field_name=None):
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if value:
         value = _("Yes")
     else:
         value = _("No")
     return apply_filters(value, self.filters_to_show, self.loads)
예제 #6
0
 def render_value(
     self,
     field_name=None,
     template_name="inplaceeditform/adaptor_m2m/render_commaseparated_value.html"
 ):
     queryset = super(AdaptorCommaSeparatedManyToManyField,
                      self).render_value(field_name)
     value = render_to_string(template_name, {'queryset': queryset})
     return apply_filters(value, self._filters_to_show, self.loads)
 def render_value(self, field_name=None):
     from django.utils.translation import ugettext
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if value:
         value = ugettext("Yes")
     else:
         value = ugettext("No")
     return apply_filters(value, self.filters_to_show, self.loads)
예제 #8
0
def save_ajax(request):
    if not request.method == "POST":
        return _get_http_response({"errors": "It is not a POST request"})
    adaptor = _get_adaptor(request, "POST")
    if not adaptor:
        return _get_http_response({"errors": "Params insufficient"})
    if not adaptor.can_edit():
        return _get_http_response({"errors": "You can not edit this content"})
    value = adaptor.loads_to_post(request)
    new_data = get_dict_from_obj(adaptor.obj)
    form_class = adaptor.get_form_class()
    field_name = adaptor.field_name
    form = form_class(data=new_data, instance=adaptor.obj)
    try:
        value_edit = adaptor.get_value_editor(value)
        value_edit_with_filter = apply_filters(value_edit,
                                               adaptor.filters_to_edit)
        new_data[field_name] = value_edit_with_filter
        if form.is_valid():
            adaptor.save(value_edit_with_filter)
            return _get_http_response({
                "errors": False,
                "value": adaptor.render_value_edit()
            })
        messages = []  # The error is for another field that you are editing
        for field_name_error, errors_field in form.errors.items():
            for error in errors_field:
                if field_name_error == "__all__":  # The error is model clean type
                    messages.append(u"Error: %s" % error)
                else:
                    messages.append(u"%s: %s" % (field_name_error, error))
        message_i18n = ", ".join(messages)
        return _get_http_response({"errors": message_i18n})
    except ValidationError as error:  # The error is for a field that you are editing
        message_i18n = ", ".join([u"%s" % m for m in error.messages])
        return _get_http_response({"errors": message_i18n})
예제 #9
0
파일: fields.py 프로젝트: averrin/eliar
 def render_value(self, field_name=None):
     val = super(AdaptorDateTimeField, self).render_value(field_name)
     if not isinstance(val, str) and not isinstance(val, unicode):
         val = apply_filters(val, ["date:'%s'" % settings.DATETIME_FORMAT])
     return val
예제 #10
0
 def render_value(self, field_name=None):
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if callable(value) and not isinstance(self, AdaptorManyToManyField):
         value = value()
     return apply_filters(value, self.filters_to_show, self.loads)
예제 #11
0
 def render_value(
     self, field_name=None, template_name="inplaceeditform/adaptor_m2m/render_commaseparated_value.html"
 ):
     queryset = super(AdaptorCommaSeparatedManyToManyField, self).render_value(field_name)
     value = render_to_string(template_name, {"queryset": queryset})
     return apply_filters(value, self._filters_to_show, self.loads)
예제 #12
0
 def render_value(self, field_name=None):
     val = super(BaseDateField, self).render_value(field_name)
     if not isinstance(val, string):
         val = apply_filters(val, [self.filter_render_value])
     return val
예제 #13
0
 def render_value(self, field_name=None):
     val = super(AdaptorDateTimeField, self).render_value(field_name)
     if not isinstance(val, str) and not isinstance(val, unicode):
         val = apply_filters(val, ["date:'%s'" % settings.DATETIME_FORMAT])
     return val
예제 #14
0
 def render_value(self, field_name=None):
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if callable(value):
         value = value()
     return apply_filters(value, self.filters_to_show, self.loads)
예제 #15
0
 def render_value(self, field_name=None):
     val = super(AdaptorDateField, self).render_value(field_name)
     if not isinstance(val, basestring):
         val = apply_filters(val, ["date:'%s'" % settings.DATE_FORMAT])
     return val
예제 #16
0
파일: fields.py 프로젝트: averrin/eliar
 def render_value(self, field_name=None):
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if callable(value):
         value = value()
     return apply_filters(value, self.filters_to_show, self.loads)
예제 #17
0
 def render_value(self, field_name=None):
     val = super(BaseAdaptorDateBootStrapField,
                 self).render_value(field_name)
     if not isinstance(val, string):
         val = apply_filters(val, [self.filter_render_value])
     return val
예제 #18
0
 def render_value(self, field_name=None):
     field_name = field_name or self.field_name_render
     value = getattr(self.obj, field_name)
     if callable(value) and not isinstance(self, AdaptorManyToManyField):
         value = value()
     return apply_filters(value, self.filters_to_show, self.loads)