Django

Code

Changeset 748

Show
Ignore:
Timestamp:
09/30/05 12:17:50 (3 years ago)
Author:
rjwittams
Message:

Possible fix for #499. Also gets error handling working properly in the admin without changing field names.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/new-admin/django/core/formfields.py

    r740 r748  
    301301    def convert_post_data(self, new_data): 
    302302        name = self.get_member_name() 
    303         if new_data.has_key(name): 
    304             d = new_data.getlist(name) 
     303        if new_data.has_key(self.field_name): 
     304            d = new_data.getlist(self.field_name) 
    305305            #del new_data[self.field_name] 
    306             new_data.setlist(name, 
    307                     [self.__class__.html2python(data)  
    308                      for data in d]) 
     306            try: 
     307                converted_data = [self.__class__.html2python(data)  
     308                                  for data in d] 
     309            except ValueError: 
     310                converted_data = d 
     311            new_data.setlist(name, converted_data) 
     312          
    309313        else: 
    310314            try: 
     
    861865            raise validators.CriticalValidationError, e.messages 
    862866 
     867    def html2python(data): 
     868        return data.split(','); 
     869 
    863870class XMLLargeTextField(LargeTextField): 
    864871    """ 
  • django/branches/new-admin/django/core/meta/fields.py

    r740 r748  
    164164        Returns a list of field names that this object adds to the manipulator. 
    165165        """ 
    166         return [name_prefix + self.column
     166        return [name_prefix + self.name
    167167 
    168168    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False): 
     
    639639        return [formfields.IntegerField] 
    640640 
     641    def get_db_prep_save(self,value): 
     642        if value == '': 
     643            return None 
     644        else: 
     645            return int(value) 
     646     
    641647    def flatten_data(self, obj = None): 
    642648        if not obj:  
  • django/branches/new-admin/django/core/meta/__init__.py

    r740 r748  
    860860        if cursor.fetchone(): 
    861861            db_values = [f.get_db_prep_save(f.pre_save(getattr(self, f.column), False)) for f in non_pks] 
    862             while 1: 
    863                 try: 
    864                     idx = db_values.index('') 
    865                     non_pks[idx:idx+1] = [] 
    866                     db_values[idx:idx +1] = [] 
    867                 except: break 
    868862            cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % (opts.db_table,  
    869863                ','.join(['%s=%%s' % f.column for f in non_pks]), opts.pk.column), 
  • django/branches/new-admin/django/views/admin/main.py

    r741 r748  
    687687            new_data.update(request.FILES) 
    688688        errors = manipulator.get_validation_errors(new_data) 
     689        manipulator.do_html2python(new_data) 
     690         
    689691        if not errors and not request.POST.has_key("_preview"): 
    690692            for f in opts.many_to_many: 
    691693                if f.rel.raw_id_admin: 
    692694                    new_data.setlist(f.name, new_data[f.name].split(",")) 
    693             manipulator.do_html2python(new_data) 
    694695            new_object = manipulator.save(new_data) 
    695696            pk_value = getattr(new_object, opts.pk.column) 
     
    712713                request.user.add_message(msg) 
    713714                return HttpResponseRedirect(post_url) 
    714         if request.POST.has_key("_preview"): 
    715             manipulator.do_html2python(new_data) 
     715       # if request.POST.has_key("_preview"):   # Always happens anyway.  
     716       #     manipulator.do_html2python(new_data) 
    716717    else: 
    717718        # Add default data. 
     
    758759 
    759760        errors = manipulator.get_validation_errors(new_data) 
     761         
     762        manipulator.do_html2python(new_data) 
    760763        if not errors and not request.POST.has_key("_preview"): 
    761             for f in opts.many_to_many: 
    762                 if f.rel.raw_id_admin: 
    763                     new_data.setlist(f.name, new_data[f.name].split(",")) 
    764             manipulator.do_html2python(new_data
     764        # Now done in commaseparatedint 
     765        #    for f in opts.many_to_many:  
     766        #        if f.rel.raw_id_admin: 
     767        #            new_data.setlist(f.name, new_data[f.name].split(",")
    765768            new_object = manipulator.save(new_data) 
    766769            pk_value = getattr(new_object, opts.pk.column) 
     
    795798                request.user.add_message(msg) 
    796799                return HttpResponseRedirect("../") 
    797         if request.POST.has_key("_preview"): 
    798             manipulator.do_html2python(new_data) 
     800       # if request.POST.has_key("_preview"):  # always happens 
     801       #     manipulator.do_html2python(new_data) 
    799802    else: 
    800803        # Populate new_data with a "flattened" version of the current data.