Arches 6.2.0 release notes
------------------------
### Major enhancements

- Upgrade Django from 2.2 to 3.2.14 as well as several other Python dependencies #8140
- Allow creation of related resources in resource instance widget configured with search query #8588
- Track resource index status in the database to index resources after direct database import #8436
- Save resource instance descriptors to database rather than only in ES index #8436
- Update several JavaScript dependencies #8631
- Removes `django-revproxy` and adds `arches-django-revproxy` workaround #8941
- Allow graph editors to modify node alias #8622
- Improve load performance for resources with many relations #8619
- Notify when json-ld loader fails to load, adds `ignore-errors` flag #8666

### Additional Highlights
- Update resource-instance widget to allow for instance creation #8049
- Prevent error cause by missing module: 'django.contrib.postgres' #8141
- Notify when import using celery is done #8503
- During resource import, change print statements to logger statements #8558
- Fix bug in `Column Names in first row` switch in CSV importer #8562
- Add confirmation dialog to undo button in ETL Manager #8579
- Fix various UI bugs in Workflows / ETL Manager #8589
- Task Manager notifies user if Celery is unavailable #8587
- Minor updates to Image Service Manager UI #8595 #8946
- Adds check for celery load failure in ETL manager for both branch_csv and single_csv #8615
- Moves some concept and domain-specific logic from `csvfile.py` into respective datatype methods #8616
- Remove cache.py management command #8617
- Add visual cue to indicate that the application is in `DEBUG` mode #8637
- In the `Graph` model, add check for ontology_id rather than performing a database query #8672
- Improve error messaging around the excess tiles trigger #8690
- Add support for AJAX calls within datatables #8738
- Add reference to new and old values in bulk_index_queue insert references #8771
- Fix AJAX dataType setting in `datatypes.js` and `concept.js` #8805
- Update edit log to handle resources with tiles nested 2 levels or deeper #8880
- Improves how csv import handles invalid datatype values #8957
- Use `settings.MEDIA_UR`L for generated URL when uploading media #8961
- During the resource instance datatype validation, warn admin that related resource exists in db only when `strict` is used #8971
- On graph import, do not overwrite alias if it already exists #8984
- Adds all `params` to JavaScript card model #9003
- Update related resource pagination for resources with many relations #9011

### Dependency changes:
```
Python:
    Upgraded:
        Django 2.2.24 -> 3.2.15
        celery 4.4.4  -> 5.2.7
        django-celery-results 1.2.1 -> 2.4.0
        django-compressor 2.2 -> 3.1
        django-libsass 0.7 -> 0.9

    Added:
        arches-django-revproxy==0.10.0
    
    Removed:
        django-revproxy==0.9.15

Javascript:
    Upgraded:
        bootstrap 3.3.7 -> 3.4.1
        bootstrap-colorpicker 2.3.6 -> 2.5.3
        codemirror 5.24.0 -> 5.65.6
        datatables.net 1.10.22 -> 1.12.1
        datatables.net-bs 1.10.12 -> 1.12.1
        datatables.net-buttons 1.5.4 -> 2.2.3
        datatables.net-buttons-bs 1.5.4 -> 2.2.3
        datatables.net-responsive 2.1.0 -> 2.3.0
        datatables.net-responsive-bs 2.1.0 -> 2.3.0
        jquery 3.3.1 -> 3.6.1
        jquery-migrate 3.0.0 -> 3.4.0
        jquery-validation 1.17.0 -> 1.19.5
        moment 2.10.5 -> 2.29.4
        moment-timezone 0.5.0 -> 0.5.34
        underscore 1.9.1 -> 1.13.4

    Added:
        none
```


### Upgrading Arches
1. You must be upgraded to at least version 6.0 before proceeding.

2. Be sure to backup your database before proceeding

3. Remove django-revproxy `pip uninstall django-revproxy` 

4. Upgrade to Arches 6.2.0

        pip install --upgrade arches

5. Within your project with your Python 3 virtual environment activated:

        python manage.py migrate

6. **Important:** If you are maintaining an Arches package, be sure to export your graphs and resource instance data before re-importing or reloading your package. 

### Upgrading an Arches project

    
1. Update your JavaScript dependencies

    Your project's package.json file looks something like this (Yours maybe different, but only `arches` and packages supporting project customizations will be listed in the dependencies):

    ```    
    {
        "name": "myproject",
        "dependencies": {
            "arches": "archesproject/arches#stable/6.1.0",
        }
    }
    ```
    Change the arches version number to `#stable/6.2.0`

    **If your package.json does not have arches listed as a dependency**, follow the instructions of [step 1 here](https://github.com/archesproject/arches/blob/master/releases/5.1.0.md#upgrading-an-arches-project) to update your package.json file. Be sure to use #stable/6.2.0 as the version number for arches when you update your package.json file.
    
    Once your package.json file is updated, navigate to the directory where `package.json` is located and run: ```yarn install```

2. Ensure any references to `staticfiles` inside your project templates are changed to `static`
    - eg. `{% load staticfiles %}` -> `{% load static %}`

3. Ensure the item in `LANGUAGES` that matches `LANGUAGE_CODE` is enabled in your project's `settings.py` 
    ```
    LANGUAGE_CODE = "en"

    LANGUAGES = [
    #   ('de', _('German')),
        ('en', _('English')),
    #   ('en-gb', _('British English')),
    #   ('es', _('Spanish')),
    ]
    ```

4. If you are running Celery with `supervisord`, you may need to update your `celeryd.conf` file. The location of this file is dependent on your system:
```
# 6.1.0

command=/path/to/virtualenv/bin/celery worker -A [app].celery --loglevel=INFO
```
```
# 6.2.0

command=/path/to/virtualenv/bin/celery -A [app].celery worker  --loglevel=INFO
```

5. If you are running Arches on Apache, be sure to run:

    ```
    python manage.py collectstatic
    ```
    and restart your server.
    ```
    sudo service apache2 reload
    ```

6. Finally, If you are running Celery, you should also restart your Celery worker(s). The process for doing this depends on how Celery is being run.
