diff options
Diffstat (limited to 'ishtar_common')
-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 |