diff options
| -rw-r--r-- | ishtar_common/admin.py | 68 | 
1 files changed, 32 insertions, 36 deletions
| diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 26ceb01cd..a321a6690 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -297,11 +297,11 @@ class MergeActionAdmin:              if form.is_valid():                  merge_in = items[form.cleaned_data['merge_in']]                  merged = [] -                for key in items.keys(): +                for key, value in items.items():                      if key == str(merge_in.pk):                          continue -                    merge_model_objects(merge_in, items[key]) -                    merged.append(str(items[key])) +                    merge_model_objects(merge_in, value) +                    merged.append(str(value))                  messages.add_message(                      request, messages.INFO,                      str(_("{} merged into {}.")).format(' ; '.join(merged), @@ -503,17 +503,11 @@ class ImportActionAdmin(admin.ModelAdmin):                              continue                          if isinstance(field, CharField):                              if not value: -                                value = u"" -                        if isinstance(field, IntegerField): -                            if not value: -                                value = None -                            else: -                                value = int(value) +                                value = "" +                        elif isinstance(field, IntegerField): +                            value = None if not value else int(value)                          elif isinstance(field, FloatField): -                            if not value: -                                value = None -                            else: -                                value = float(value) +                            value = None if not value else float(value)                          elif isinstance(field, BooleanField):                              if value in ('true', 'True', '1'):                                  value = True @@ -522,9 +516,7 @@ class ImportActionAdmin(admin.ModelAdmin):                              else:                                  value = None                          elif isinstance(field, ForeignKey): -                            if not value: -                                value = None -                            else: +                            if value:                                  model = field.rel.to                                  try:                                      value = model.objects.get( @@ -533,6 +525,8 @@ class ImportActionAdmin(admin.ModelAdmin):                                  except model.DoesNotExist:                                      missing_parent.append(row.pop(k))                                      continue +                            else: +                                value = None                          row[k] = value                      values = {                          slug_col: slug, @@ -540,11 +534,11 @@ class ImportActionAdmin(admin.ModelAdmin):                      }                      obj, c = self.model.objects.get_or_create(                          **values) -                    if not c: +                    if c: +                        created += 1 +                    else:                          updated += 1                          self.model.objects.filter(pk=obj.pk).update(**row) -                    else: -                        created += 1                  if created:                      self.message_user(                          request, @@ -704,11 +698,9 @@ class ImportGEOJSONActionAdmin(object):                  tempdir = tempfile.mkdtemp()                  tmpfilename = tempdir + os.sep + "dest_file" -                tmpfile = open(tmpfilename, 'wb+') -                for chunk in json_file_obj.chunks(): -                    tmpfile.write(chunk) -                tmpfile.close() - +                with open(tmpfilename, 'wb+') as tmpfile: +                    for chunk in json_file_obj.chunks(): +                        tmpfile.write(chunk)                  json_filename = None                  if zipfile.is_zipfile(tmpfilename):                      zfile = zipfile.ZipFile(tmpfilename) @@ -736,8 +728,6 @@ class ImportGEOJSONActionAdmin(object):                                                       None) or '',                      "surface_unit": int(request.POST.get('surface_unit'))                  } -                created = 0 -                updated = 0                  with open(json_filename) as json_file_obj:                      json_file = json_file_obj.read()                      try: @@ -750,6 +740,8 @@ class ImportGEOJSONActionAdmin(object):                              request, error, base_dct, tempdir)                      error_count = 0 +                    created = 0 +                    updated = 0                      for idx, feat in enumerate(dct['features']):                          trace_error = True                          if error_count == 6: @@ -1145,9 +1137,11 @@ class ProfileTypeSummaryAdmin(admin.ModelAdmin):          profile_types = list(              qs.order_by("label")          ) -        rights = {} -        for profile_type in profile_types: -            rights[profile_type.pk] = [g.pk for g in profile_type.groups.all()] +        rights = { +            profile_type.pk: [g.pk for g in profile_type.groups.all()] +            for profile_type in profile_types +        } +          groups = []          ok = mark_safe(              u'<img src="{}admin/img/icon-yes.svg" alt="True">'.format( @@ -1283,12 +1277,12 @@ serialize_importer_action = serialize_action("common_imports",  serialize_importer_action.short_description = SERIALIZE_DESC +@admin.register(models.ImporterType, site=admin_site)  class ImporterTypeAdmin(ImportJSONActionAdmin):      list_display = ('name', 'associated_models', 'available')      actions = importer_type_actions + [serialize_importer_action] - - -admin_site.register(models.ImporterType, ImporterTypeAdmin) +    form = make_ajax_form(models.ImporterType, {'users': 'ishtaruser'}) +    prepopulated_fields = {"slug": ("name",)}  class RegexpAdmin(admin.ModelAdmin): @@ -1568,11 +1562,13 @@ def get_choices_form():      cache_key, value = get_cache(models.CustomForm, ['associated-forms'])      if value:          return value -    forms = [] -      register, register_fields = models.CustomForm.register() -    for slug in register.keys(): -        forms.append((slug, models.CustomForm._register[slug].form_admin_name)) +    forms = [ +        (slug, models.CustomForm._register[slug].form_admin_name) +        for slug in register.keys() +    ] + +      forms = sorted(forms, key=lambda x: x[1])      cache.set(cache_key, forms, settings.CACHE_TIMEOUT)      return forms | 
