cove
CoVE is an web application to Convert, Validate and Explore data following certain open data standards - including 360Giving, Open Contracting Data Standard, IATI and the Beneficial Ownership Data Standard
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.7%) to scientific vocabulary
Last synced: 11 months ago
·
JSON representation
Repository
CoVE is an web application to Convert, Validate and Explore data following certain open data standards - including 360Giving, Open Contracting Data Standard, IATI and the Beneficial Ownership Data Standard
Basic Info
- Host: GitHub
- Owner: OpenDataServices
- License: other
- Language: Python
- Default Branch: live
- Homepage: http://cove.opendataservices.coop
- Size: 5.31 MB
Statistics
- Stars: 46
- Watchers: 21
- Forks: 13
- Open Issues: 105
- Releases: 0
Created about 11 years ago
· Last pushed over 1 year ago
Metadata Files
Readme
Contributing
README.rst
CoVE - Convert Validate & Explore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: https://coveralls.io/repos/OpenDataServices/cove/badge.png?branch=master
:target: https://coveralls.io/r/OpenDataServices/cove?branch=master
.. image:: https://img.shields.io/badge/license-AGPLv3-blue.svg
:target: https://github.com/OpenDataServices/cove/blob/master/AGPLv3.txt
Development work on CoVE by Open Data Services is carried out in sprints. The issues for each sprint can be found at https://github.com/OpenDataServices/cove/projects . Other work is carried out from time to time, and contributions from the community are welcome. Outstanding issues for CoVE can be found at https://github.com/OpenDataServices/cove/issues . Please report any bugs!
Introduction
============
CoVE is an web application to Convert, Validate and Explore data following certain open data standards:
* 360Giving Data Standard - https://dataquality.threesixtygiving.org/
* Open Contracting Data Standard (OCDS) - https://standard.open-contracting.org/review/
* Open Contracting for Infrastructure Data Standard (OC4IDS) - https://standard.open-contracting.org/infrastructure/review/
* IATI Standard - https://iati.cove.opendataservices.coop/
* Beneficial Ownership Data Standard (BODS) - https://datareview.openownership.org/
Why convert data?
+++++++++++++++++
The W3C `Data on the Web Best Practices `_ recommend making open data available in a range of formats to meet the needs of different users. Developers may want JSON, researchers might prefer a spreadsheet format.
CoVE manages the process of converting between JSON, Excel and CSV formats for structured data.
Validate and Explore
++++++++++++++++++++
CoVE presents key validation information during the process, and can be configured to display information about the contents of a data file, so that it can be easily inspected.
Supported formats
+++++++++++++++++
CoVE currently supports conversion from:
* JSON to multi-tabbed Excel files
* Excel to JSON (it uses the `flatten-tool `_ for conversion)
If a JSON schema is supplied, CoVE can use either field names or user-friendly column titles.
User Flows
==========
Overviews of how users flow through the application are maintained at https://docs.google.com/drawings/d/1pVbEu6dJaVk8t3NctjYuE5irsqltc9Th0gVQ_zeJyFA/edit and https://docs.google.com/drawings/d/1wFH4lZlBZWso7Tj_g7CyTF3YaFfnly59sVufpztmEg8/edit
Putting code live
=================
There are live instances at:
https://dataquality.threesixtygiving.org/
http://standard.open-contracting.org/review/
https://iati.cove.opendataservices.coop/
Code is deployed to live when it is merged into the master branch. (Instructions on how to do this at https://cove.readthedocs.io/en/latest/deployment/).
Feature requests, bugs, questions and answers etc are all handled via GitHub.
Requirements
============
This application is built using Django and Python 3.5
Installation
============
Steps to installation:
* Clone the repository
* Change into the cloned repository
* Create a virtual environment (note this application uses python3)
* Activate the virtual environment
* Install dependencies
* Set up the database (sqlite3) (you need to pass the django settings for the module (ie. iati) you want to run)
* Compile the translations
* Run the development server
The following steps are for Ubuntu but equivalent packages are available for other distros.
.. code:: bash
sudo apt-get install build-essential libxml2-dev libxslt1-dev python3-dev
Run:
.. code:: bash
git clone https://github.com/OpenDataServices/cove.git
cd cove
python3 -m venv .ve
source .ve/bin/activate
pip install -r requirements_dev.txt
python manage.py migrate
python manage.py compilemessages
Then run the development server:
.. code:: bash
python manage.py runserver
Installation with Docker
========================
Docker is used in production, so sometimes you may want to run locally with Docker to debug issues:
docker compose -f docker-compose.dev.yml down # (if running)
docker compose -f docker-compose.dev.yml build --no-cache
docker compose -f docker-compose.dev.yml up # (to restart)
Run commands:
docker compose -f docker-compose.dev.yml run iati-cove-app-dev python manage.py migrate
docker compose -f docker-compose.dev.yml run iati-cove-app-dev python manage.py collectstatic --noinput
Deployment
==========
See https://cove.readthedocs.io/en/latest/deployment/
Run tests
=========
`Set up chromedriver `_, then run:
.. code:: bash
./run_tests.sh
To run functional tests with a different browser:
.. code:: bash
BROWSER=Chrome ./run_tests.sh
See http://selenium-python.readthedocs.io/api.html for browser options.
To generate a coverage report (in the htmlcov directory):
.. code:: bash
py.test --cov cove --cov-report html
The tests include functional tests (actually interacting with the website in selenium). These can also be run against a deployed copy of the website:
.. code:: bash
CUSTOM_SERVER_URL=http://dev.cove.opendataservices.coop py.test fts
We also use flake8 to test code quality, see https://github.com/OpenDataServices/developer-docs/blob/master/tests.md#flake8
The development requirements include xdist to allow running tests in parallel:
.. code:: bash
py.test -n2
Translations
============
| We use Django's translation framework to provide this application in different languages.
| We have used Google Translate to perform initial translations from English, but expect those translations to be worked on by humans over time.
Translations for Translators
++++++++++++++++++++++++++++
Translators can provide translations for this application by becomming a collaborator on Transifex https://www.transifex.com/OpenDataServices/cove
Translations for Developers
+++++++++++++++++++++++++++
For more information about Django's translation framework, see https://docs.djangoproject.com/en/1.8/topics/i18n/translation/
If you add new text to the interface, ensure to wrap it in the relevant gettext blocks/functions.
In order to generate messages and post them on Transifex:
First check the `Transifex lock `_, because only one branch can be translated on Transifex at a time.
Make sure you are set up as a maintainer in Transifex. Only maintainers are allowed to update the source file.
Install `gettext `_ library. (The following step is for Ubuntu but equivalent packages are available for other distros.)
.. code:: bash
sudo apt-get install gettext
Then:
.. code:: bash
python manage.py makemessages -l en
tx push -s
In order to fetch messages from transifex:
.. code:: bash
tx pull -a
In order to compile them:
.. code:: bash
python manage.py compilemessages
Keep the makemessages and pull messages steps in thier own commits seperate from the text changes.
To check that all new text is written so that it is able to be translated you could install and run `django-template-i18n-lint`
.. code:: bash
pip install django-template-i18n-lint
django-template-i18n-lint cove
Adding and updating requirements
================================
Add a new requirements to ``requirements.in`` or ``requirements_dev.in`` depending on whether it is just a development requirement or not.
Then, run ``pip-compile requirements.in && pip-compile requirements_dev.in`` this will populate ``requirements.txt`` and ``requirements_dev.txt`` with pinned versions of the new requirement and its dependencies.
``pip-compile --upgrade requirements.in && pip-compile --upgrade requirements_dev.in`` will update all pinned requirements to the latest version. Generally we don't want to do this at the same time as adding a new dependency, to make testing any problems easier.
Command Line Interface
======================
**IATI**
.. code:: bash
./iati-cli --options file-name
``file-name`` can be a XML or an Excel/CSV file.
Options:
``--output-dir -o`` Directory where the output will be created, defaults to the name of the file.
``--exclude-file -e`` Do not include the file in the output directory.
``--delete -d`` Delete the output directory if it already exists.
``--orgids -i`` Run org-ids rule check for IATI identifier prefixes.
``--openag -a`` Run ruleset checks for IATI OpenAg data.
If the file is in spreadsheet format, the output directory will contain a *unflattened.xml* file converted from Excel or CSV to XML format
**OpenaAg** rulesets check that the data contains the XML elements ```` and ````, and that they include the right attributes expected for OpenAg data. Please read `OpenAg ruleset feature files `_ (written in `Gerkhin `_ style) for more information.
**Org-ids** rulesets check that all organisation identifiers are prefixed with a registered `org-ids `_ prefix. Please read `Org-ids ruleset feature file `_ for more information
**Non Embedded Codelists**
Non embedded codelists need to be periodically downloaded and committed to this repo. To do this run in the virtualenv:
.. code:: bash
python get_iati_non_embedded_codelists.py
Owner
- Name: Open Data Services
- Login: OpenDataServices
- Kind: organization
- Email: code@opendataservices.coop
- Website: http://opendataservices.coop/
- Repositories: 104
- Profile: https://github.com/OpenDataServices
We help people publish and use open data.
GitHub Events
Total
- Issues event: 1
- Watch event: 4
- Delete event: 1
- Issue comment event: 3
- Push event: 4
- Pull request review event: 2
- Pull request event: 6
- Create event: 4
Last Year
- Issues event: 1
- Watch event: 4
- Delete event: 1
- Issue comment event: 3
- Push event: 4
- Pull request review event: 2
- Pull request event: 6
- Create event: 4
Committers
Last synced: over 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Ben Webb | b****b@o****p | 523 |
| Eduardo Gomez | e****z@h****k | 456 |
| David Raznick | k****y@g****m | 151 |
| Bibiana Cristofol Amat | b****l@g****m | 129 |
| Ben Webb | b****7@g****m | 108 |
| David Carpenter | c****r@g****m | 54 |
| James Baster | j****r@o****p | 53 |
| rhiaro | a****y@r****k | 40 |
| Rob Redpath | r****h@o****p | 40 |
| David Carpenter | d****r@o****p | 28 |
| Andy Lulham | a****m@g****m | 14 |
| Jared Parnell | j****l@o****p | 14 |
| Michael Wood | m****d@o****p | 7 |
| Rob Redpath | r****b@r****k | 6 |
| BobHarper1 | b****7@g****m | 5 |
| James McKinney | j****s@s****m | 4 |
| Duncan Dewhurst | d****t@o****p | 4 |
| David Spencer | b****h@g****m | 2 |
| Rob Redpath | r****b@d****m | 2 |
| Steven Flower | s****r@o****p | 2 |
| Tim Davies | t****s@o****p | 2 |
| Tim Davies | t****m@t****k | 1 |
| Bob Harper | b****r@o****p | 1 |
| James (ODSC) | 3****s | 1 |
| requires.io | s****t@r****o | 1 |
Committer Domains (Top 20 + Academic)
opendataservices.coop: 10
requires.io: 1
timdavies.org.uk: 1
digital-saints.com: 1
slashpoundbang.com: 1
robredpath.co.uk: 1
rhiaro.co.uk: 1
hotmail.co.uk: 1
Issues and Pull Requests
Last synced: 11 months ago
All Time
- Total issues: 67
- Total pull requests: 45
- Average time to close issues: over 3 years
- Average time to close pull requests: 14 days
- Total issue authors: 16
- Total pull request authors: 8
- Average comments per issue: 2.76
- Average comments per pull request: 0.49
- Merged pull requests: 33
- Bot issues: 0
- Bot pull requests: 9
Past Year
- Issues: 1
- Pull requests: 3
- Average time to close issues: N/A
- Average time to close pull requests: 20 days
- Issue authors: 1
- Pull request authors: 1
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 1
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- stevieflow (25)
- robredpath (13)
- Bjwebb (11)
- siemvaessen (4)
- odscjames (3)
- caprenter (2)
- mrshll1001 (1)
- notshi (1)
- IsabelBirds (1)
- timgdavies (1)
- ekoner (1)
- OlushoreOdude (1)
- edugomez (1)
- Julianlstar (1)
- jpmckinney (1)
Pull Request Authors
- Bjwebb (21)
- odscjames (12)
- dependabot[bot] (9)
- jarofgreen (3)
- michaelwood (1)
- kindly (1)
- BibianaC (1)
- OlushoreOdude (1)
Top Labels
Issue Labels
360Giving (32)
IATI (21)
bug (5)
roundtripping (3)
enhancement (2)
Bitesize (2)
OCDS (1)
In a PR (1)
Pull Request Labels
dependencies (9)
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 3
- Total versions: 1
- Total maintainers: 2
pypi.org: cove
UNKNOWN
- Homepage: https://github.com/OpenDataServices/cove
- Documentation: https://cove.readthedocs.io/
- License: GNU Affero General Public License v3 or later (AGPLv3+)
-
Latest release: 0.0.0
published almost 3 years ago
Rankings
Dependent repos count: 9.0%
Average: 10.0%
Dependent packages count: 10.0%
Forks count: 10.5%
Stargazers count: 10.5%
Maintainers (2)
Last synced:
11 months ago
Dependencies
requirements.in
pypi
- CommonMark *
- Django >3.2,<3.3
- bleach *
- cached-property *
- dealer *
- django-bootstrap3 *
- django-debug-toolbar *
- django-environ *
- flattentool >=0.17.2
- json-merge-patch *
- jsonschema *
- libcove *
- libcoveweb *
- openpyxl *
- python-dateutil *
- rangedict *
- requests *
- requests-cache *
- rfc3987 *
- rfc6266 *
- sentry-sdk *
- strict-rfc3339 *
- xmltodict *
- zipp *
requirements.txt
pypi
- appdirs ==1.4.4
- asgiref ==3.5.1
- attrs ==21.4.0
- backports-datetime-fromisoformat ==1.0.0
- bleach ==5.0.0
- btrees ==4.10.0
- cached-property ==1.5.2
- cattrs ==1.10.0
- certifi ==2021.10.8
- cffi ==1.15.0
- charset-normalizer ==2.0.12
- commonmark ==0.9.1
- contextlib2 ==21.6.0
- dealer ==2.1.0
- defusedxml ==0.7.1
- django ==3.2.13
- django-bootstrap3 ==21.2
- django-debug-toolbar ==3.4.0
- django-environ ==0.8.1
- et-xmlfile ==1.1.0
- flattentool ==0.17.2
- idna ==3.3
- ijson ==3.1.4
- json-merge-patch ==0.2
- jsonref ==0.2
- jsonschema ==3.2.0
- lepl ==5.1.3
- libcove ==0.27.0
- libcoveweb ==0.24.2
- lxml ==4.8.0
- odfpy ==1.4.1
- openpyxl ==3.0.9
- persistent ==4.9.0
- pycparser ==2.21
- pyrsistent ==0.18.1
- python-dateutil ==2.8.2
- pytz ==2022.1
- rangedict ==0.1.7
- requests ==2.27.1
- requests-cache ==0.9.4
- rfc3339-validator ==0.1.4
- rfc3987 ==1.3.8
- rfc6266 ==0.0.4
- schema ==0.7.5
- sentry-sdk ==1.5.11
- six ==1.16.0
- sqlparse ==0.4.2
- strict-rfc3339 ==0.7
- transaction ==3.0.1
- uc-rfc6266-parser ==0.1.0
- url-normalize ==1.4.3
- urllib3 ==1.26.9
- webencodings ==0.5.1
- werkzeug ==1.0.1
- xmltodict ==0.12.0
- zc-lockfile ==2.0
- zc-zlibstorage ==1.2.0
- zconfig ==3.6.0
- zipp ==3.8.0
- zodb ==5.7.0
- zodbpickle ==2.3
- zope-interface ==5.4.0
requirements_dev.in
pypi
- Sphinx * development
- coveralls * development
- flake8 * development
- hypothesis * development
- libsass * development
- pytest * development
- pytest-cov * development
- pytest-django * development
- pytest-localserver * development
- pytest-xdist * development
- recommonmark * development
- selenium * development
- sphinx_rtd_theme * development
- transifex-client * development
requirements_dev.txt
pypi
- 120 dependencies
.github/workflows/lint.yml
actions
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
.github/workflows/test.yml
actions
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
.github/workflows/branch-deploy.yml
actions
- actions/checkout v2 composite
- actions/setup-python v2 composite
- oNaiPs/secrets-to-env-action v1 composite
- shimataro/ssh-key-action v2 composite
.github/workflows/branch-destroy.yml
actions
- actions/setup-python v2 composite
- shimataro/ssh-key-action v2 composite
.github/workflows/live-deploy.yml
actions
- actions/checkout v2 composite
- actions/setup-python v2 composite
- oNaiPs/secrets-to-env-action v1 composite
- shimataro/ssh-key-action v2 composite
Dockerfile
docker
- python 3.11-bullseye build
docker-compose.dev.yml
docker
setup.py
pypi