Cannot use field type twice #34

Closed
opened 2022-01-02 00:00:56 +01:00 by nik · 6 comments
nik commented 2022-01-02 00:00:56 +01:00 (Migrated from edugit.org)

Trying to import two phone numbers, one into phone_number and one into mobile, fails, because the field type is used as column name when calling Pandas.

Exception:

[2022-01-01 22:58:31,711: ERROR/ForkPoolWorker-1] Task aleksis.apps.csv_import.util.process.import_csv[60fb9044-10d7-4d5d-a0c3-fde4fd6df2eb] raised unexpected: IntegrityError('duplicate key value violates unique constraint "django_celery_results_taskresult_task_id_key"\nDETAIL:  Key (task_id)=(60fb9044-10d7-4d5d-a0c3-fde4fd6df2eb) already exists.\n')
Traceback (most recent call last):
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/celery/app/trace.py", line 409, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/celery/app/trace.py", line 701, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/aleksis/core/util/celery_progress.py", line 158, in _inject_recorder
    return orig(*args, **kwargs, recorder=recorder)
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/aleksis/apps/csv_import/util/process.py", line 62, in import_csv
    data = pandas.read_csv(
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 586, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 479, in _read
    _validate_names(kwds.get("names", None))
  File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 460, in _validate_names
    raise ValueError("Duplicate names are not allowed.")
ValueError: Duplicate names are not allowed.

Template snippet:

    - field_type: phone_number                                                                                                                         
      db_field: mobile                                                                                                                                 
    - phone_number

The db_field should be overridable for all field types. Probably, args should simply be loaded verbatim and set on the class (using setattr) verbatim.

Trying to import two phone numbers, one into `phone_number` and one into `mobile`, fails, because the field type is used as column name when calling Pandas. Exception: ```plain [2022-01-01 22:58:31,711: ERROR/ForkPoolWorker-1] Task aleksis.apps.csv_import.util.process.import_csv[60fb9044-10d7-4d5d-a0c3-fde4fd6df2eb] raised unexpected: IntegrityError('duplicate key value violates unique constraint "django_celery_results_taskresult_task_id_key"\nDETAIL: Key (task_id)=(60fb9044-10d7-4d5d-a0c3-fde4fd6df2eb) already exists.\n') Traceback (most recent call last): File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/celery/app/trace.py", line 409, in trace_task R = retval = fun(*args, **kwargs) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/celery/app/trace.py", line 701, in __protected_call__ return self.run(*args, **kwargs) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/aleksis/core/util/celery_progress.py", line 158, in _inject_recorder return orig(*args, **kwargs, recorder=recorder) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/aleksis/apps/csv_import/util/process.py", line 62, in import_csv data = pandas.read_csv( File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/util/_decorators.py", line 311, in wrapper return func(*args, **kwargs) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 586, in read_csv return _read(filepath_or_buffer, kwds) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 479, in _read _validate_names(kwds.get("names", None)) File "/home/nik/AlekSIS/AlekSIS/apps/official/AlekSIS-App-CSVImport/.venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 460, in _validate_names raise ValueError("Duplicate names are not allowed.") ValueError: Duplicate names are not allowed. ``` Template snippet: ```yaml - field_type: phone_number db_field: mobile - phone_number ``` The `db_field` should be overridable for all field types. Probably, args should simply be loaded verbatim and set on the class (using setattr) verbatim.
nik commented 2022-01-02 00:00:56 +01:00 (Migrated from edugit.org)

assigned to @hansegucker

assigned to @hansegucker
nik commented 2022-01-02 00:17:22 +01:00 (Migrated from edugit.org)

mentioned in merge request !139

mentioned in merge request !139
nik commented 2022-01-08 11:00:02 +01:00 (Migrated from edugit.org)

changed the description

changed the description
hansegucker commented 2022-01-08 16:04:24 +01:00 (Migrated from edugit.org)

created merge request !146 to address this issue

created merge request !146 to address this issue
hansegucker commented 2022-01-08 16:04:24 +01:00 (Migrated from edugit.org)

mentioned in merge request !146

mentioned in merge request !146
nik commented 2022-01-08 17:01:00 +01:00 (Migrated from edugit.org)

mentioned in commit f00523a89c

mentioned in commit f00523a89ce1ad1961c89824ba37bda02e453b84
nik (Migrated from edugit.org) closed this issue 2022-01-08 17:01:00 +01:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aleksis/AlekSIS-App-CSVImport#34
No description provided.