| @@ -2,7 +2,7 @@ web/app/__pycache__/ | |||
| .env.prod | |||
| .env.dev | |||
| .DS_Store | |||
| instance | |||
| database_functions_live.sh | |||
| old_database_schema | |||
| db_exports | |||
| db_imports | |||
| @@ -5,6 +5,8 @@ services: | |||
| container_name: python | |||
| expose: | |||
| - 5000 | |||
| volumes: | |||
| - ./web:/code | |||
| env_file: | |||
| - ./.env.prod | |||
| depends_on: | |||
| @@ -9,3 +9,16 @@ services: | |||
| - ./web:/code | |||
| env_file: | |||
| - ./.env.dev | |||
| db: | |||
| image: mariadb:latest | |||
| container_name: mariadb | |||
| restart: unless-stopped | |||
| env_file: | |||
| - ./.env.dev | |||
| volumes: | |||
| - dbdata:/var/lib/mysql | |||
| command: '--default-authentication-plugin=mysql_native_password' | |||
| volumes: | |||
| dbdata: | |||
| @@ -27,8 +27,12 @@ def create_resource(): | |||
| type = 'tool' | |||
| name = request.form.get('tool_name') | |||
| description = request.form.get('description') | |||
| developer = request.form.get('developer') | |||
| developerUrl = request.form.get('developerUrl') | |||
| projectUrl = request.form.get('projectUrl') | |||
| repositoryUrl = request.form.get('repositoryUrl') | |||
| license = request.form.get('license') | |||
| scriptingLanguage = request.form.get('scriptingLanguage') | |||
| expertiseToUse = request.form.get('expertiseToUse') | |||
| expertiseToHost = request.form.get('expertiseToHost') | |||
| dependencies = request.form.get('dependencies') | |||
| @@ -46,7 +50,7 @@ def create_resource(): | |||
| return redirect(url_for('create.create_resource',_external=True,_scheme=os.environ.get('SSL_SCHEME'))) | |||
| # create a new tool with the form data | |||
| new_tool = Resource(type=type, name=name, description=description, projectUrl=projectUrl, repositoryUrl=repositoryUrl, expertiseToUse=expertiseToUse, expertiseToHost=expertiseToHost, dependencies=dependencies, ingestFormats=ingestFormats, outputFormats=outputFormats, status=status) | |||
| new_tool = Resource(type=type, name=name, description=description, developer=developer, developerUrl=developerUrl, projectUrl=projectUrl, repositoryUrl=repositoryUrl, license=license, scriptingLanguage=scriptingLanguage, expertiseToUse=expertiseToUse, expertiseToHost=expertiseToHost, dependencies=dependencies, ingestFormats=ingestFormats, outputFormats=outputFormats, status=status) | |||
| # add the new tool to the database | |||
| db.session.add(new_tool) | |||
| @@ -6,7 +6,6 @@ | |||
| # @acknowledgements: | |||
| from flask import Blueprint, render_template, request, flash, redirect, url_for | |||
| from flask_login import login_required, current_user | |||
| from .models import Resource | |||
| from werkzeug.exceptions import abort | |||
| from . import db | |||
| @@ -19,6 +19,7 @@ | |||
| --bs-success-rgb: 25,135,84; | |||
| --bs-tool-rgb: 13,202,240; | |||
| --bs-practice-rgb: 255,193,7; | |||
| --bs-publisher-rgb: 150, 224, 167; | |||
| --bs-danger-rgb: 220,53,69; | |||
| --bs-light-rgb: 248,249,250; | |||
| --bs-dark-rgb: 33,37,41; | |||
| @@ -1058,6 +1059,11 @@ main > .container { | |||
| background-color: rgba(var(--bs-practice-rgb),var(--bs-bg-opacity))!important; | |||
| } | |||
| .bg-publisher { | |||
| --bs-bg-opacity: 1; | |||
| background-color: rgba(var(--bs-publisher-rgb),var(--bs-bg-opacity))!important; | |||
| } | |||
| .drop { | |||
| position: relative; | |||
| -webkit-user-select: none; | |||
| @@ -23,6 +23,16 @@ | |||
| <label for="description">Short description</label> | |||
| <textarea class="form-control" rows="4" type="text" name="description" placeholder="Tool description" autofocus=""></textarea> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="developer">Developer</label> | |||
| <input class="form-control" type="text" name="developer" placeholder="Developer" autofocus=""> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="developerUrl">Developer URL</label> | |||
| <input class="form-control" type="text" name="developerUrl" placeholder="Developer URL" autofocus=""> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="projectUrl">Project URL</label> | |||
| @@ -33,6 +43,16 @@ | |||
| <label for="repositoryUrl">Repository URL</label> | |||
| <input class="form-control" type="text" name="repositoryUrl" placeholder="Repository URL" autofocus=""> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="license">Software license</label> | |||
| <input class="form-control" type="text" name="license" placeholder="Software license" autofocus=""> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="scriptingLanguage">Software language</label> | |||
| <input class="form-control" type="text" name="scriptingLanguage" placeholder="Software language" autofocus=""> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="expertiseToUse">Expertise required to use</label> | |||
| @@ -2,8 +2,6 @@ | |||
| {% block content %} | |||
| {{linked_resources}} | |||
| <h1>{% block title %} Edit "{{ resource['name'] }}" {% endblock %}</h1> | |||
| <form method="post"> | |||
| @@ -22,6 +20,20 @@ | |||
| </div> | |||
| {% if resource['type'] == 'tool' %} | |||
| <div class="mb-3 mt-3"> | |||
| <label for="developer">Developer</label> | |||
| <input type="text" name="developer" placeholder="Developer" | |||
| class="form-control" | |||
| value="{{ request.form['developer'] or resource['developer'] }}"> | |||
| </input> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="developerUrl">Developer URL</label> | |||
| <input type="text" name="developerUrl" placeholder="Developer URL" | |||
| class="form-control" | |||
| value="{{ request.form['developerUrl'] or resource['developerUrl'] }}"> | |||
| </input> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="projectUrl">Project URL</label> | |||
| <input type="text" name="projectUrl" placeholder="Project URL" | |||
| @@ -36,6 +48,20 @@ | |||
| value="{{ request.form['repositoryUrl'] or resource['repositoryUrl'] }}"> | |||
| </input> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="license">Software license</label> | |||
| <input type="text" name="license" placeholder="Software license" | |||
| class="form-control" | |||
| value="{{ request.form['license'] or resource['license'] }}"> | |||
| </input> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="scriptingLanguage">Software language(s)</label> | |||
| <input type="text" name="scriptingLanguage" placeholder="Software language(s)" | |||
| class="form-control" | |||
| value="{{ request.form['scriptingLanguage'] or resource['scriptingLanguage'] }}"> | |||
| </input> | |||
| </div> | |||
| <div class="mb-3 mt-3"> | |||
| <label for="expertiseToUse">Expertise required to use</label> | |||
| <input type="text" name="expertiseToUse" placeholder="Expertise required to use" | |||
| @@ -147,4 +173,11 @@ | |||
| onclick="return confirm('Are you sure you want to delete this practice?')"> | |||
| </form> | |||
| {% endif %} | |||
| {% if resource['type'] == 'publisher' %} | |||
| <form action="{{ url_for('publisher.delete_publisher', publisher_id=resource['id']) }}" method="POST"> | |||
| <input type="submit" value="Delete" | |||
| class="btn btn-danger btn-sm" | |||
| onclick="return confirm('Are you sure you want to delete this publisher?')"> | |||
| </form> | |||
| {% endif %} | |||
| {% endblock %} | |||
| @@ -37,6 +37,7 @@ | |||
| {{ resource['created'].strftime("%Y-%m-%d %H:%M") }} UTC | |||
| </td> | |||
| </tr> | |||
| {% if resource['description'] %} | |||
| <tr> | |||
| <th> | |||
| Description: | |||
| @@ -45,6 +46,41 @@ | |||
| {{ resource['description'] }} | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% if resource['developer'] %} | |||
| <tr> | |||
| <th> | |||
| Developer | |||
| </th> | |||
| <td> | |||
| {% if resource['developerUrl'] %} | |||
| <a href="{{ resource['developerUrl'] }}">{{ resource['developer'] }}</a> | |||
| {% else %} | |||
| {{ resource['developer'] }} | |||
| {% endif %} | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% if resource['license'] %} | |||
| <tr> | |||
| <th> | |||
| Software license: | |||
| </th> | |||
| <td> | |||
| {{ resource['license'] }} | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% if resource['scriptingLanguage'] %} | |||
| <tr> | |||
| <th> | |||
| Software language(s): | |||
| </th> | |||
| <td> | |||
| {{ resource['scriptingLanguage'] }} | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% if resource['projectUrl'] %} | |||
| <tr> | |||
| <th> | |||
| @@ -29,6 +29,10 @@ | |||
| <a href="{{ url_for('practice.show_practice', practice_id=resource['id']) }}"> | |||
| <h3 class="card-title text-center text-dark">{{ resource['name'] }}</h3> | |||
| </a> | |||
| {% elif resource['type'] == 'publisher' %} | |||
| <a href="{{ url_for('publisher.show_publisher', publisher_id=resource['id']) }}"> | |||
| <h3 class="card-title text-center text-dark">{{ resource['name'] }}</h3> | |||
| </a> | |||
| {% endif %} | |||
| <p class="card-text"> | |||
| {{ resource['description']|truncate(100) }} | |||
| @@ -38,11 +42,14 @@ | |||
| <a href="{{ url_for('tool.edit_tool', tool_id=resource['id']) }}"> | |||
| <span class="badge bg-dark">Edit</span> | |||
| </a> | |||
| {% endif %} | |||
| {% if resource['type'] == 'practice' %} | |||
| {% elif resource['type'] == 'practice' %} | |||
| <a href="{{ url_for('practice.edit_practice', practice_id=resource['id']) }}"> | |||
| <span class="badge bg-dark">Edit</span> | |||
| </a> | |||
| {% elif resource['type'] == 'publisher' %} | |||
| <a href="{{ url_for('publisher.edit_publisher', publisher_id=resource['id']) }}"> | |||
| <span class="badge bg-dark">Edit</span> | |||
| </a> | |||
| {% endif %} | |||
| {% endif %} | |||
| </div> | |||
| @@ -41,8 +41,12 @@ def edit_tool(tool_id): | |||
| if request.method == 'POST': | |||
| name = request.form['name'] | |||
| description = request.form['description'] | |||
| developer = request.form['developer'] | |||
| developerUrl = request.form['developerUrl'] | |||
| projectUrl = request.form['projectUrl'] | |||
| repositoryUrl = request.form['repositoryUrl'] | |||
| license = request.form['license'] | |||
| scriptingLanguage = request.form['scriptingLanguage'] | |||
| expertiseToUse = request.form['expertiseToUse'] | |||
| expertiseToHost = request.form['expertiseToHost'] | |||
| dependencies = request.form['dependencies'] | |||
| @@ -58,8 +62,12 @@ def edit_tool(tool_id): | |||
| tool = Resource.query.get(tool_id) | |||
| tool.name = name | |||
| tool.description = description | |||
| tool.developer = developer | |||
| tool.developerUrl = developerUrl | |||
| tool.projectUrl = projectUrl | |||
| tool.repositoryUrl = repositoryUrl | |||
| tool.license = license | |||
| tool.scriptingLanguage = scriptingLanguage | |||
| tool.dependencies = dependencies | |||
| tool.expertiseToUse = expertiseToUse | |||
| tool.expertiseToHost = expertiseToHost | |||