Arches 6.1.0 release notes
------------------------


### Major enhancements
- Add node name alias for human readable node identification, PR #8132
- Multiprocessing option for ES commands, PR #8004
- Update dev 6.1.x with custom primary descriptors, PR #8298
- Allow custom popups in map, PR #8428
- Cache user permissions for faster search and report loading for non-superusers, PR #8019
- Show map popup info for overlapping features, PR #8038
- Add image comparison slider for iiif viewer, PR #8017
- Add make online account creation optional, PR #8102
- Edtf datatype widget shows edtf value and validates edtf input, PR #8327
- Filter instances from search results when all nodegroups are restricted, PR #8466

### Additional highlights

- Increase advanced search facet click area, PR #8175
- Add graph icon to resource instance widget, PR #8305
- Allow card to override default map popup, PR #8390
- Add exact match to top of concept search list, PR #8378
- Load mask opacity removal for faster page loads, PR #8100
- Add task to async update custom indices, PR #8145 
- Lazy load portions of knockout components for faster page loads, PR #8104
- Fix timeouts caused by inefficient timewheel range processing, PR #8304
- Call graph endpoint only when graph list needed, PR #8514
- Update search export zip file name, PR #8020
- Fix issue with node-value node mis-configuration, PR #8095
- Fix broken reference issue with resource instance select widget, PR #8093
- Fixes issue with default concept values not showing up in graph designer, PR #8129
- Filter hidden nodes in resource json endpoint, PR #8121
- Updates resource json endpoint to properly identify valid semantic nodes, PR #8150
- Fix GeoJSON Export when instance has no geometry, PR #8262
- Fix map layer manager scrolling, PR #8308
- Add a colon to a timezone to ensure elastic can index, PR #8329
- Fixe request object not being passed to tile save from nodevalue api causing unexpected function behaviour, PR #8472
- Fix hard coded permissions url, PR #8425
- Disable popup when creating geometry, PR #8465

### Dependency changes:
```
Python:
    Upgraded:
        elasticsearch 7.0.0 -> 7.11.0

    Added:
        filetype==1.0.13
        defusedxml==0.7.1

Javascript:
    Upgraded:
        datatables.net: 1.10.12 -> 1.10.22

    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. Upgrade to Arches 6.1.0

        pip install --upgrade arches

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

        python manage.py migrate

5. **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 CACHES setting. In your project's settings.py file **add** the following CACHE to your CACHES setting. Be sure to do this in your settings_local.py file if that is where you have your CACHES setting:
    
    ``` 
    "user_permission": {
        "BACKEND": "django.core.cache.backends.db.DatabaseCache",
        "LOCATION": "user_permission_cache",
    },
    ```
    You can, of course, modify the BACKEND to use the caching backend of your choice.

2. If you are using the DatabaseCache for "user_permission" cache BACKEND (default), run the following:
   ```
   python manage.py createcachetable
   ```

3. In 6.1 the order of the AUTHENTICATION_BACKENDS setting has changed slightly with the ['guardian.backends.ObjectPermissionBackend' moved to the end](https://github.com/archesproject/arches/blob/e412a4c44347df0cfee1c84de8bad2d88b6a45c3/arches/settings.py#L339).  
   In the unlikely case that you have overridden this setting in your project's settings.py or settings_local.py file, then you'll need to update this setting to reflect this change.

    
4. 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.0.1",
        }
    }
    ```
    Change the arches version number from to `#stable/6.1.0`\
    Then cd to your project's package.json file directory and run: `yarn install`

    **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.1.0 as the version number for arches when you update your package.json file.
    
    Once your package.json file is updated, run:

    ```yarn install```


5. Optionally add the following settings to your project (defaults will be used otherwise):

    ```
    ENABLE_USER_SIGNUP = True
    # If True, allows for user self creation via the signup view. If False, users can only be created via the Django admin view.
    ```

    ```
    FORCE_USER_SIGNUP_EMAIL_AUTHENTICATION = True
    # If True, users must authenticate their account via email to complete the account creation process.
    ```

    ```
    FILE_TYPE_CHECKING = False
    # If True, only the file types listed in FILE_TYPES can be uploaded to Arches
    ```

    ```
    FILE_TYPES = ["bmp", "gif", "jpg", "jpeg", "pdf", "png", "psd", "rtf", "tif", "tiff", "xlsx", "csv", "zip"]
    # File types that can be uploaded to Arches if FILE_TYPE_CHECKING is True.
    ```

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

    ```
    python manage.py collectstatic
    ```
    and restart your server.
    ```
    sudo service apache2 reload
    ```
    
7. 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.
