Skip to content

Commit

Permalink
V1.0.8 (#475)
Browse files Browse the repository at this point in the history
* Incrementing version number for next set of minor updates.

* Pin dependencies (#461)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Update dependency @types/jest to v28.1.8 (#462)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Support backend settings in config (#482)

* enable settings on the backend for urls

* add the settings for workflow

* add missing import

* add newline

* Update react monorepo to v18 (#478)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Pin dependencies (#477)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Fixed tiny flake8 complaint

* hotfix to the last update so that local containers have the required environment variables. Otherwise local build of backend will fail.

* Update .django

* Updating a few dependencies in the backend

* Updating the Flake8 pre-commit config file to see if that resolves pre-commit issues...

* Fixed typo in .coveragerc which caused migrations to be included in tests. Removed unneccessary type checking in the import headers of the test models. Updated coverage for some files that didn't have 100% coverage. Updated some django dependencies after testing to make sure nothing broke. Updated some deprecated imports to remove warnings. Updated pytest and coverage libraries.

* Upgraded to Django 4.1.7, along with some other python packages.

* Upgraded more python packages while testing to make sure nothing breaks.

* Reverted dj-rest-auth as it caused issues with tests failing (although the application from users perspective was working fine)

* Updated dj-rest-auth to latest (before breaking changes)

* Updating front-end to use the latest react-router-dom major version 6

* Removed some comments and updated some tests. Tests still failing, need to troubleshoot.

* Updated tests to use memory router to account for the useNavigate changes that came with react-router-dom v6. Tests are passing now.

* Updated some more frontend packages, however a few updates are breaking and will cause errors, so ignored those.

* Updated yarn.lock file to see if tests pass.

* Feature/500 info notifications (#520)

* Refactored the joyrideTutorials in order to reduce the chances for errors with misspelling target names. Created unique target calssnames to simplify the process of adding and using targets. Removed the chance of duplicate target names causing errors etc. Added a test startup component that should show when first opening metagrid. Startup window still needs some work to improve visuals.

* Added a welcome and changelog template component to use with thh startup display. Made the startup display change based on existing version so that a new changelog will appear when version is changed. Modified the startup component behavior to hadle a welcome and changelog template based on whether its first-time startup or not.

* Updated django-all-auth to 0.54.0

* Upgraded the antd library to latest version. Updated components to work with the latests antd library and added some styling to correct some undesired changes. Added a temporary drawer component which can be opened by clicking a new message button in the top-right navbar. Fixed some styling issues with window resizing to make the top navbar work better with smaller windows and improve visual behavior. Removed redundant components that are no longer needed with the new antd library (which is now working with typescript well). Created a popup window that shows at the start for new users. Created a startup template system that allows different templates to be used for displaying popup messages. More fixed needed for tests and the welcome popup tutorials need work.

* Worked to correct issues with tests hanging by reverting back the antd library. Also updated to node version 18. Restored previously deleted files and will remove them later when all tests are passing. Still need to correct tests to pass. Still need to complete messaging feature and update tutorial.

* Updated tests so that they pass, coverage will still be needed.

* Updated the Startup template functionality and added actions that can be triggered by the templates. Updated the welcome message buttons to work properly and select between pages to start tutorials.

* Removed redundant and unneccessary components as they are now directly taken from antd library. Removed commented out import statements.

* Refactored some names and added messages for the right drawer. Added ability to create messages for the message bar and provide content from markdown files. Updated the changelog to have useful information on latest changes. Need to troubleshoot tests and complete coverage.

* Added markdown file support for the messages. Did refactoring so messages on the right drawer and popups will show the markdown. Created new markdown files with version info and example message. Added flexibility to popup so that styles can be modified on a per message basis. Modified the changelog template and types.

* Created a new welcome tour which will show users the help buttons to encourage them to use them if they have issues. Updated the navbar tour to include the new news button. Created new test files and updated tests to bring back 100% text coverage. Removed obsolete tour target related files, as they've been updated with target object class. Troubleshooted and ran tests to fix some bugs and added more functionality for jest tests. Deleted test markdown files and updated message markdown slightly.

* modify the messages for release (#522)

---------

Co-authored-by: Sasha Ames <sashakames@users.noreply.github.com>

* Feature/500 info notifications (#523)

* Refactored the joyrideTutorials in order to reduce the chances for errors with misspelling target names. Created unique target calssnames to simplify the process of adding and using targets. Removed the chance of duplicate target names causing errors etc. Added a test startup component that should show when first opening metagrid. Startup window still needs some work to improve visuals.

* Added a welcome and changelog template component to use with thh startup display. Made the startup display change based on existing version so that a new changelog will appear when version is changed. Modified the startup component behavior to hadle a welcome and changelog template based on whether its first-time startup or not.

* Updated django-all-auth to 0.54.0

* Upgraded the antd library to latest version. Updated components to work with the latests antd library and added some styling to correct some undesired changes. Added a temporary drawer component which can be opened by clicking a new message button in the top-right navbar. Fixed some styling issues with window resizing to make the top navbar work better with smaller windows and improve visual behavior. Removed redundant components that are no longer needed with the new antd library (which is now working with typescript well). Created a popup window that shows at the start for new users. Created a startup template system that allows different templates to be used for displaying popup messages. More fixed needed for tests and the welcome popup tutorials need work.

* Worked to correct issues with tests hanging by reverting back the antd library. Also updated to node version 18. Restored previously deleted files and will remove them later when all tests are passing. Still need to correct tests to pass. Still need to complete messaging feature and update tutorial.

* Updated tests so that they pass, coverage will still be needed.

* Updated the Startup template functionality and added actions that can be triggered by the templates. Updated the welcome message buttons to work properly and select between pages to start tutorials.

* Removed redundant and unneccessary components as they are now directly taken from antd library. Removed commented out import statements.

* Refactored some names and added messages for the right drawer. Added ability to create messages for the message bar and provide content from markdown files. Updated the changelog to have useful information on latest changes. Need to troubleshoot tests and complete coverage.

* Added markdown file support for the messages. Did refactoring so messages on the right drawer and popups will show the markdown. Created new markdown files with version info and example message. Added flexibility to popup so that styles can be modified on a per message basis. Modified the changelog template and types.

* Created a new welcome tour which will show users the help buttons to encourage them to use them if they have issues. Updated the navbar tour to include the new news button. Created new test files and updated tests to bring back 100% text coverage. Removed obsolete tour target related files, as they've been updated with target object class. Troubleshooted and ran tests to fix some bugs and added more functionality for jest tests. Deleted test markdown files and updated message markdown slightly.

* modify the messages for release (#522)

* Updated the node status information alert so that text displays if there is an api error.

* Updated Django to 4.1.9

* Fixed a test regarding the changes to the error message.

---------

Co-authored-by: Sasha Ames <sashakames@users.noreply.github.com>

* Added mip_era and data_node facets to the input4mips project.

* Updated the general facet order for input 4 mips

* Minor format fix applied to help resolve pre-commit error.

* Updated the requests package to latest to resolve pyup.io/safety issue...

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Sasha Ames <sashakames@users.noreply.github.com>
  • Loading branch information
3 people committed Jun 9, 2023
1 parent 8bb7aa9 commit 8b6a989
Show file tree
Hide file tree
Showing 85 changed files with 3,047 additions and 1,223 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ env:
KEYCLOAK_REALM: metagrid
KEYCLOAK_CLIENT_ID: backend
DATABASE_URL: pgsql://postgres:postgres@localhost:5432/postgres
REACT_APP_ESGF_NODE_URL: https://esgf-node.llnl.gov/esg-search/search
REACT_APP_WGET_API_URL: https://greyworm1-rh7.llnl.gov/wget
REACT_APP_ESGF_NODE_STATUS_URL: https://aims4.llnl.gov/prometheus/api/v1/query?query=probe_success%7Bjob%3D%22http_2xx%22%2C+target%3D~%22.%2Athredds.%2A%22%7D


jobs:
build:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Use Node.js 17.x
- name: Use Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "17.x"
node-version: "18.x"

- name: Cache node modules
uses: actions/cache@v2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
uses: actions/checkout@v2

# Required to run the local ESLint hook
- name: Use Node.js 17.x
- name: Use Node.js 18.x
uses: actions/setup-node@v2
with:
node-version: "17.x"
node-version: "18.x"

- name: Cache node modules
uses: actions/cache@v2
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ repos:

# Back-end
# ------------------------------------------------------------------------------
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.0
- repo: https://github.com/pycqa/flake8
rev: 3.9.2
hooks:
- id: flake8
args: ["--config=backend/setup.cfg"]
Expand Down
4 changes: 2 additions & 2 deletions backend/.coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ omit =
*urls.py,
*manage.py,
*wsgi.py*,
*docs/*
*migrations/*,
*docs/*,
*/migrations/*,
*settings*,
*postgres-data/*,
*tests/*,
Expand Down
12 changes: 12 additions & 0 deletions backend/.envs/.django
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,15 @@ CORS_ORIGIN_WHITELIST=http://localhost:3000
KEYCLOAK_URL=http://keycloak:8080/auth
KEYCLOAK_REALM=metagrid
KEYCLOAK_CLIENT_ID=backend

# ESGF wget API
# https://github.com/ESGF/esgf-wget
REACT_APP_WGET_API_URL=https://nimbus3.llnl.gov/wget

# ESGF Search API
# https://esgf.github.io/esg-search/ESGF_Search_RESTful_API.html
REACT_APP_ESGF_NODE_URL=https://esgf-node.llnl.gov/esg-search/search

# ESGF Node Status API
# https://github.com/ESGF/esgf-utils/blob/master/node_status/query_prom.py
REACT_APP_ESGF_NODE_STATUS_URL=https://aims2.llnl.gov/metagrid-backend/proxy/status
5 changes: 5 additions & 0 deletions backend/config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,3 +296,8 @@
# https://github.com/adamchainz/django-cors-headers#setup
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = env.list("CORS_ORIGIN_WHITELIST")


SEARCH_URL = env("REACT_APP_ESGF_NODE_URL")
WGET_URL = env("REACT_APP_WGET_API_URL")
STATUS_URL = env("REACT_APP_ESGF_NODE_STATUS_URL")
25 changes: 20 additions & 5 deletions backend/metagrid/api_proxy/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from urllib.parse import urlparse

import requests
from django.conf import settings
from django.http import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_http_methods
Expand All @@ -10,8 +11,12 @@
@require_http_methods(["GET", "POST"])
@csrf_exempt
def do_search(request):

return do_request(request, "https://esgf-node.llnl.gov/esg-search/search")
esgf_host = getattr(
settings,
"REACT_APP_SEARCH_URL",
"https://esgf-node.llnl.gov/esg-search/search",
)
return do_request(request, esgf_host)


@require_http_methods(["POST"])
Expand Down Expand Up @@ -49,9 +54,12 @@ def do_citation(request):
@require_http_methods(["GET", "POST"])
@csrf_exempt
def do_status(request):
resp = requests.get(
"https://aims4.llnl.gov/prometheus/api/v1/query?query=probe_success%7Bjob%3D%22http_2xx%22%2C+target%3D~%22.%2Athredds.%2A%22%7D"
status_url = getattr(
settings,
"REACT_APP_ESGF_NODE_STATUS_URL",
"https://aims4.llnl.gov/prometheus/api/v1/query?query=probe_success%7Bjob%3D%22http_2xx%22%2C+target%3D~%22.%2Athredds.%2A%22%7D",
)
resp = requests.get(status_url)
if resp.status_code == 200: # pragma: no cover
return HttpResponse(resp.text)
else: # pragma: no cover
Expand All @@ -61,7 +69,14 @@ def do_status(request):
@require_http_methods(["GET", "POST"])
@csrf_exempt
def do_wget(request):
return do_request(request, "https://esgf-node.llnl.gov/esg-search/wget")
return do_request(
request,
getattr(
settings,
"REACT_APP_WGET_API_URL",
"https://esgf-node.llnl.gov/esg-search/wget",
),
)


def do_request(request, urlbase):
Expand Down
7 changes: 4 additions & 3 deletions backend/metagrid/cart/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# Generated by Django 3.2.13 on 2022-06-01 02:13

from django.conf import settings
import uuid

import django.contrib.postgres.fields
from django.db import migrations, models
import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
4 changes: 2 additions & 2 deletions backend/metagrid/cart/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class JSONFactory(factory.DictFactory):

@classmethod
def _generate(cls, create, attrs):
obj = super()._generate(create, attrs)
return json.dumps(obj)
obj = super()._generate(create, attrs) # pragma: no cover
return json.dumps(obj) # pragma: no cover


class CartFactory(factory.django.DjangoModelFactory):
Expand Down
6 changes: 1 addition & 5 deletions backend/metagrid/cart/tests/test_models.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
from typing import TYPE_CHECKING

from metagrid.cart.models import Cart, Search
from metagrid.cart.tests.factories import CartFactory, SearchFactory

if TYPE_CHECKING:
from metagrid.cart.models import Cart, Search


class TestCart:
def test__str__(self):
Expand Down
7 changes: 6 additions & 1 deletion backend/metagrid/initial_projects_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,12 @@
"project_url": "https://esgf-node.llnl.gov/projects/input4mips/",
"description": "input4MIPS (input datasets for Model Intercomparison Projects) is an activity to make available via ESGF the boundary condition and forcing datasets needed for CMIP6. Various datasets are needed for the pre-industrial control (piControl), AMIP, and historical simulations, and additional datasets are needed for many of the CMIP6-endorsed model intercomparison projects (MIPs) experiments. Earlier versions of many of these datasets were used in the 5th Coupled Model Intercomparison Project (CMIP5).",
"facets_by_group": {
GROUPS[0]: ["target_mip_list", "dataset_status"],
GROUPS[0]: [
"mip_era",
"target_mip_list",
"dataset_status",
"data_node",
],
GROUPS[1]: [
"institution_id",
"source_id",
Expand Down
2 changes: 1 addition & 1 deletion backend/metagrid/projects/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2022-05-13 03:10

from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@
ProjectFacet,
)


from metagrid.initial_projects_data import (
projects,
group_descriptions,
)
from metagrid.initial_projects_data import group_descriptions, projects


def insert_data(apps, schema_editor):
Expand Down
7 changes: 1 addition & 6 deletions backend/metagrid/projects/tests/test_models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from typing import TYPE_CHECKING

import pytest

from metagrid.projects.models import ProjectFacet
from metagrid.projects.models import Facet, FacetGroup, Project, ProjectFacet
from metagrid.projects.tests.factories import (
FacetFactory,
FacetGroupFactory,
Expand All @@ -12,9 +10,6 @@

pytestmark = pytest.mark.django_db

if TYPE_CHECKING:
from metagrid.projects.models import Facet, FacetGroup, Project


class TestProjectModel:
@pytest.fixture(autouse=True)
Expand Down
2 changes: 1 addition & 1 deletion backend/metagrid/users/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _

from .models import User

Expand Down
6 changes: 4 additions & 2 deletions backend/metagrid/users/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Generated by Django 3.2.13 on 2022-06-01 02:56

from django.db import migrations, models
import uuid

import django.utils.timezone
from django.db import migrations, models

import metagrid.users.models
import uuid


class Migration(migrations.Migration):
Expand Down
2 changes: 1 addition & 1 deletion backend/metagrid/users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from django.contrib.auth.models import AbstractUser, BaseUserManager
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import gettext_lazy as _

from metagrid.cart.models import Cart

Expand Down
36 changes: 18 additions & 18 deletions backend/requirements/base.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
# Core
# ------------------------------------------------------------------------------
pytz==2022.1 # https://github.com/stub42/pytz
django==3.2.15 # https://www.djangoproject.com/
django-environ==0.8.1 # https://github.com/joke2k/django-environ
pytz==2022.7.1 # https://github.com/stub42/pytz
django==4.1.9 # https://www.djangoproject.com/
django-environ==0.9.0 # https://github.com/joke2k/django-environ
gunicorn==20.1.0 # https://github.com/benoitc/gunicorn
newrelic==7.6.0.173 # https://pypi.org/project/newrelic/
argon2-cffi==20.1.0 # https://github.com/hynek/argon2_cffi
requests==2.27.1 # https://github.com/psf/requests
whitenoise==5.3.0 # https://github.com/evansd/whitenoise
newrelic==8.7.0 # https://pypi.org/project/newrelic/
argon2-cffi==21.3 # https://github.com/hynek/argon2_cffi
requests==2.31.0 # https://github.com/psf/requests
whitenoise==6.4.0 # https://github.com/evansd/whitenoise

# Database
# ------------------------------------------------------------------------------
psycopg2-binary==2.9.3 # https://github.com/psycopg/psycopg2
psycopg2-binary==2.9.5 # https://github.com/psycopg/psycopg2

# REST API
# ------------------------------------------------------------------------------
djangorestframework==3.13.1 # https://github.com/encode/django-rest-framework
Markdown==3.3.6 # https://pypi.org/project/Markdown/
django-filter==2.4.0 # https://github.com/carltongibson/django-filter
django-cors-headers==3.11.0 # https://github.com/adamchainz/django-cors-headers
django-allauth==0.47.0 # https://github.com/pennersr/django-allauth
dj-rest-auth==2.2.2 # https://github.com/jazzband/dj-rest-auth
djangorestframework-simplejwt==4.8.0 # https://github.com/SimpleJWT/django-rest-framework-simplejwt/
drf-yasg==1.20.0 # https://github.com/axnsan12/drf-yasg
djangorestframework==3.14.0 # https://github.com/encode/django-rest-framework
Markdown==3.4.1 # https://pypi.org/project/Markdown/
django-filter==22.1 # https://github.com/carltongibson/django-filter
django-cors-headers==3.14.0 # https://github.com/adamchainz/django-cors-headers
django-allauth==0.54.0 # https://github.com/pennersr/django-allauth
dj-rest-auth==2.2.8 # https://github.com/jazzband/dj-rest-auth
djangorestframework-simplejwt==5.2.2 # https://github.com/SimpleJWT/django-rest-framework-simplejwt/
drf-yasg==1.21.5 # https://github.com/axnsan12/drf-yasg

# Code quality
# ------------------------------------------------------------------------------
pre-commit==2.17.0 # https://github.com/pre-commit/pre-commit
pre-commit==3.1.1 # https://github.com/pre-commit/pre-commit

# Model Tools
# ------------------------------------------------------------------------------
django-model-utils==4.2.0 # https://github.com/jazzband/django-model-utils
django-model-utils==4.3.1 # https://github.com/jazzband/django-model-utils
django_unique_upload==0.2.1 # https://github.com/agconti/django-unique-upload
22 changes: 11 additions & 11 deletions backend/requirements/local.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@

# Code quality
# ------------------------------------------------------------------------------
flake8==3.9.2 # https://github.com/PyCQA/flake8
flake8-isort==4.1.1 # https://github.com/gforcada/flake8-isort
black==20.8b1 # https://github.com/ambv/black
mypy==0.931 # https://github.com/python/mypy
flake8==6.0.0 # https://github.com/PyCQA/flake8
flake8-isort==6.0.0 # https://github.com/gforcada/flake8-isort
black==23.1.0 # https://github.com/ambv/black
mypy==1.0.1 # https://github.com/python/mypy

# Testing
# ------------------------------------------------------------------------------
django-stubs==1.9.0 # https://github.com/typeddjango/django-stubs
pytest==6.2.5 # https://github.com/pytest-dev/pytest
pytest-cov==2.12.1 # https://github.com/pytest-dev/pytest-cov
django-stubs==1.15.0 # https://github.com/typeddjango/django-stubs
pytest==7.2.1 # https://github.com/pytest-dev/pytest
pytest-cov==4.0.0 # https://github.com/pytest-dev/pytest-cov
pytest-django==4.5.2 # https://github.com/pytest-dev/pytest-django
pytest-sugar==0.9.4 # https://github.com/Frozenball/pytest-sugar
pytest-sugar==0.9.6 # https://github.com/Frozenball/pytest-sugar
pytest-watch==4.2.0 # https://github.com/joeyespo/pytest-watch
factory-boy==3.2.1 # https://github.com/FactoryBoy/factory_boy

# Developer Tools
# ------------------------------------------------------------------------------
ipdb==0.13.9 # https://github.com/gotcha/ipdb
ipython==7.31.1 # https://github.com/ipython/ipython
django-extensions==3.1.5 # https://github.com/django-extensions/django-extensions
ipdb==0.13.11 # https://github.com/gotcha/ipdb
ipython==8.11.0 # https://github.com/ipython/ipython
django-extensions==3.2.1 # https://github.com/django-extensions/django-extensions
2 changes: 1 addition & 1 deletion docs/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
mkdocs==1.3.1 # https://www.mkdocs.org/
mkdocs==1.4.2 # https://www.mkdocs.org/
mdx_truly_sane_lists==1.3 # https://github.com/radude/mdx_truly_sane_lists
Loading

0 comments on commit 8b6a989

Please sign in to comment.