### Arches 4.1.0 release notes
January 22, 2018
The Arches team has been busy trying to improve Arches and fix a several bugs as well.
Below you'll find a listing of all the changes that are included in the latest release.
Some of the highlights:
- Upgraded django to 1.11 (LTS)
- Added the ability for users to self signup to Arches
- Added a page for users to manage their profile
- Improved the loading speed of reports and forms
- Added the node-value datatype
- Many other small improvements
#### Upgrading Arches
Users are encouraged to update at their earliest convenience. Completely re-installing Arches is the easiest way to accomplish this.
If you can't completely re-install Arches (because you have data in the system that you want to preserve) then you'll need to upgrade by running the following commands in your activated virtual environment:
```
pip install arches --upgrade --no-binary :all:
python manage.py migrate
```
As always the documentation can be found at http://arches4.readthedocs.io/en/stable/
#### Upgrading an Arches project
If you already have a project created with Arches 4.0 and you want to continue using that project, you will need to make a few changes so that it is compatible with 4.1.
When making changes, be sure to replace 'your_projects_name' in the code examples below with your project's actual name.
Required Changes:
1. Add the following lines to the bottom of your projects 'wsgi.py' file:
```
from arches.app.models.system_settings import settings
settings.update_from_db()
```
2. The following changes were made to the 'urls.py' file:
- These imports have been added:
```
from django.conf import settings
from django.conf.urls.static import static
```
- The media urls are concatenated to the list of urls:
```+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)```
- The admin import line was removed:
```from django.contrib import admin```
- The admin urls line was removed:
```url(r'^admin/', admin.site.urls),```
- Assuming that you haven't made any changes to the urls.py file your 4.1 urls.py file should look like this:
```
from django.conf.urls import include, url
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^', include('arches.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
```
3. You must add the following setting to your project's 'settings.py' file:
```ROOT_URLCONF = 'your_projects_name.urls'```
4. In your index.htm file you will need to change the following lines:
This line:
```
{% trans "Welcome" %} {{ user.username }}
```
... should be changed to this:
```
{% trans "Welcome" %} {{ user.first_name|default:user.username }}
```
This line:
```
{% trans 'Change Password' %}
```
... should be changed to this:
```
{% trans 'User Profile' %}
```
Optional:
1. Add the following settings to your 'settings_local.py' file. These are commented out and only listed in your 'settings_local.py' file so that you can easily find them if you want to modify their values:
```
#ELASTICSEARCH_PREFIX = ''
#INSTALLED_APPS = (
# django.contrib.admin,
# django.contrib.auth,
# django.contrib.contenttypes,
# django.contrib.sessions,
# django.contrib.messages,
# django.contrib.staticfiles,
# django.contrib.gis,
# arches,
# arches.app.models,
# arches.management,
# guardian,
# captcha,
#)
#EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
#EMAIL_HOST = 'localhost'
#EMAIL_HOST_PASSWORD = ''
#EMAIL_HOST_USER = ''
#EMAIL_PORT = 25
#EMAIL_USE_TLS = False
#AUTH_PASSWORD_VALIDATORS = [
# {
# "NAME": "arches.app.utils.password_validation.NumericPasswordValidator"
# },
# {
# "NAME": "arches.app.utils.password_validation.SpecialCharacterValidator",
# "OPTIONS": {
# "special_characters": [
# "!",
# "@",
# "#",
# ")",
# "(",
# "*",
# "&",
# "^",
# "%",
# "$"
# ]
# }
# },
# {
# "NAME": "arches.app.utils.password_validation.HasNumericCharacterValidator"
# },
# {
# "NAME": "arches.app.utils.password_validation.HasUpperAndLowerCaseValidator"
# },
# {
# "NAME": "arches.app.utils.password_validation.MinLengthValidator",
# "OPTIONS": {
# "min_length": 9
# }
# }
#]
```
#### Changes
- Fixed automatic loading of system settings local
- Change in which custom arches projects are initialzed (at same level as arches root, instead of within), re #2547 (#2550)
- Making related resources readable by guest users, re #2376
- Added esri vector tiles example
- Added user profile manager , re #2452
- Added password validators to settings.py including custom validators for requiring upper and lower case characters, numeric characters and special characters, re #2454
- Added the ability for users to self signup, re #2453
- Add ability to export multiple graphs at once re #1361
- Upgrade to django 1.11.6, re #2355
- Allow users to use their email or username to login, re #2453
- Email users that their profile settings have changed, re #2453
- Improve display of filtered nodes in graph manager, re #2593
- Update CSS to better display nodes in related resources
- Standardize access to app settings in templates
- Add ability to create concepts on import for the `concept` and `concept-list` datatype, re #2427
- Add support for domain-value and domain-value-list datatypes, re #2427
- Add the ability to prefix elasticsearch index names, re #2612
- Improve styling and UX for Map Manager layer type selector links
- Improve UX for Arches Designer Models/Branches buttons
- Bump psycopg2 from 2.7.3.1 to 2.7.3.2 in /arches/install
- Improved removal of duplicate parent cards from flat card list, #2580
- Adds card container name as a card name prefix in cases when a card has a container. re #2580
- Add tests for required node import, re #2732
- Fix to prevent duplicate elements appearing after dragging and dropping. re #2580
- Improves JSONSerializer performance.
- Streamline installation steps, and reference the wiki for repo installation
- Added ability to import functions and widgets with functionids and widgetids respectively.
- Added the ability to disable input for a node/widget/datatype
- Added the ability to set a default value for a node/widget/datatype
- Added the ability to authenticate based on a token, re #2773
- Added configs to the number widget allowing a graph editor to define units (as a prefix or suffix), specify the increment, and set the max number of values behind the decimal place. re #2591
- Added ability to reorder values in domain widget, re #2806
- Added ability to have single quotes in concept labels, re #2830
- Added the node-value datatype
- Scrolls a form back to its top when a user switches menus, re #2600
- Replace all pyshp and shapely operations with django.contrib.gis.gdal, re #2689
- Adds migration to change geocoder from mapzen to mapbox where cards use mapzen. re #2901
- Add the user who signs up via the web ui to a default group, re #2936