diff options
| -rw-r--r-- | archaeological_operations/tests.py | 1 | ||||
| -rw-r--r-- | ishtar_common/admin.py | 6 | ||||
| -rw-r--r-- | ishtar_common/migrations/0217_auto_20211019_2242.py (renamed from ishtar_common/migrations/0217_auto_20211018_1741.py) | 21 | ||||
| -rw-r--r-- | ishtar_common/models_rest.py | 21 | 
4 files changed, 35 insertions, 14 deletions
| diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index ee1f2645c..409ee5079 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -4686,7 +4686,6 @@ class ApiTest(OperationInitTest, APITestCase):          params["action"] = "generate_match_document"          response = self.client.post(url, params, follow=True) -        #src_doc = source.generate_match_document()          zip_file = zipfile.ZipFile(BytesIO(response.content))          self.assertIsNone( diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 8124bbeed..761d07b4d 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -2217,6 +2217,8 @@ def update_types_from_source(modeladmin, request, queryset):          )      return response +update_types_from_source.short_description = _("Update types from source") +  def generate_match_document(modeladmin, request, queryset):      return_url = ( @@ -2251,6 +2253,9 @@ def generate_match_document(modeladmin, request, queryset):          return response +generate_match_document.short_description = _("Generate match document") + +  class ApiExternalSourceAdmin(admin.ModelAdmin):      model = models_rest.ApiExternalSource      actions = [update_types_from_source, generate_match_document] @@ -2272,4 +2277,5 @@ class ApiKeyMatchAdmin(admin.ModelAdmin):          change_value("do_not_match", True, _("Disable match")),      ] +  admin_site.register(models_rest.ApiKeyMatch, ApiKeyMatchAdmin) diff --git a/ishtar_common/migrations/0217_auto_20211018_1741.py b/ishtar_common/migrations/0217_auto_20211019_2242.py index d79224b5a..4a0851691 100644 --- a/ishtar_common/migrations/0217_auto_20211018_1741.py +++ b/ishtar_common/migrations/0217_auto_20211019_2242.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.24 on 2021-10-18 17:41 +# Generated by Django 2.2.24 on 2021-10-19 22:42  from django.conf import settings  import django.contrib.postgres.fields @@ -10,8 +10,8 @@ import django.db.models.deletion  class Migration(migrations.Migration):      dependencies = [ -        ('auth', '0011_update_proxy_permissions'),          ('contenttypes', '0002_remove_content_type_name'), +        ('auth', '0011_update_proxy_permissions'),          ('ishtar_common', '0216_auto_20210805_1703'),      ] @@ -23,10 +23,11 @@ class Migration(migrations.Migration):                  ('url', models.URLField(verbose_name='URL')),                  ('name', models.CharField(max_length=200, verbose_name='Name')),                  ('key', models.CharField(max_length=40, verbose_name='Key')), +                ('match_document', models.FileField(blank=True, help_text='First use the "Update types from source" action. Then use the action "Generate match document" action to create a default match document. Complete it and attach it back to the source to finally use the action "Modify association from match document".', null=True, upload_to='', verbose_name='Match document')),              ],              options={ -                'verbose_name': 'API - External source', -                'verbose_name_plural': 'API - External sources', +                'verbose_name': 'API - Search - External source', +                'verbose_name_plural': 'API - Search - External sources',              },          ),          migrations.CreateModel( @@ -36,8 +37,8 @@ class Migration(migrations.Migration):                  ('ip', models.GenericIPAddressField(verbose_name='IP')),              ],              options={ -                'verbose_name': 'API - User', -                'verbose_name_plural': 'API - Users', +                'verbose_name': 'API - Remote access - User', +                'verbose_name_plural': 'API - Remote access - Users',              },          ),          migrations.AlterField( @@ -184,8 +185,8 @@ class Migration(migrations.Migration):                  ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ApiUser')),              ],              options={ -                'verbose_name': 'API - Search model', -                'verbose_name_plural': 'API - Search models', +                'verbose_name': 'API - Remote access - Search model', +                'verbose_name_plural': 'API - Remote access - Search models',              },          ),          migrations.CreateModel( @@ -203,8 +204,8 @@ class Migration(migrations.Migration):                  ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ishtar_common.ApiExternalSource')),              ],              options={ -                'verbose_name': 'API - Key match', -                'verbose_name_plural': 'API - Keys matches', +                'verbose_name': 'API - Search - Key match', +                'verbose_name_plural': 'API - Search - Keys matches',              },          ),      ] diff --git a/ishtar_common/models_rest.py b/ishtar_common/models_rest.py index bb260c30d..61b3ce042 100644 --- a/ishtar_common/models_rest.py +++ b/ishtar_common/models_rest.py @@ -55,6 +55,17 @@ class ApiExternalSource(models.Model):      url = models.URLField(verbose_name=_("URL"))      name = models.CharField(verbose_name=_("Name"), max_length=200)      key = models.CharField(_("Key"), max_length=40) +    match_document = models.FileField( +        _("Match document"), +        blank=True, +        null=True, +        help_text=_( +            'First use the "Update types from source" action. Then use the action ' +            '"Generate match document" action to create a default match document. ' +            "Complete it and attach it back to the source to finally use the action " +            '"Modify association from match document".' +        ), +    )      class Meta:          verbose_name = _("API - Search - External source") @@ -146,10 +157,14 @@ class ApiExternalSource(models.Model):          for idx, tpe in enumerate(types):              self._generate_match_page(idx, tpe, uno, calc, lst_sheet)          tmpdir = tempfile.mkdtemp(prefix="ishtar-matches-") -        dest_filename = "{}{}{}-{}.ods".format(tmpdir, os.sep, -                                               datetime.date.today().isoformat(), -                                               slugify(self.name)) +        base = "{}-{}.ods".format(datetime.date.today().isoformat(), slugify(self.name)) +        dest_filename = "{}{}{}".format(tmpdir, os.sep, base)          uno.save_calc(calc, dest_filename) +        from django.core.files import File + +        with open(dest_filename, "rb") as fle: +            self.match_document = File(fle, base) +            self.save()          return dest_filename      def _generate_match_page(self, page_number, tpe, uno, calc, lst_sheet): | 
