Coder Social home page Coder Social logo

opendataservices / cove Goto Github PK

View Code? Open in Web Editor NEW
43.0 43.0 12.0 5.43 MB

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

Home Page: http://cove.opendataservices.coop

License: Other

Python 56.97% HTML 20.23% Shell 0.65% Gherkin 3.62% SCSS 18.25% Dockerfile 0.27%

cove's People

Contributors

andylolz avatar bibianac avatar bjwebb avatar bobharper1 avatar caprenter avatar duncandewhurst avatar edugomez avatar idlemoor avatar kindly avatar lathrisk avatar michaelwood avatar odscjames avatar requires avatar rhiaro avatar robredpath avatar stevieflow avatar timgdavies avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cove's Issues

Error page should look more like an error

There's various classes we can use from twitter bootstrap to make our error page look more like an error.

(To get an error page currently, you can upload a file that is not JSON or XLSX).

Share these results

Once a file has been successfully accepted and converted, the 'explore' page has a unique URL, allowing for that page to be shared with others.

We could make this a feature of the 'explore' page.

Note also that the page may cease to exists (e.g. if and when a file is deleted)
See: #38

RemovedInDjango19Warning

When I spin up the server locally I see:

lib/python3.4/site-packages/django/templatetags/future.py:25: RemovedInDjango19Warning: Loading the url tag from the future library is deprecated and will be removed in Django 1.9. Use the default url tag instead.
RemovedInDjango19Warning)

It should be possible to pass the URL as a GET parameter

This will allow other sites to link to Cove's view of a particular file.

This is about constructing a link using the URL of the data, instead of pasting the URL into the box on the input page (rather than being about Cove's own shareable URL).

How should cove fetch/store schemas?

Currently schemas are fetched from external urls each time they are needed. This has overhead each time they are used, and will cause the application to break if GitHub or the OCDS standard website go down.

I think the alternatives are:

  • Have the application fetch the schemas from remote urls, but cache them. The tricky bit here is knowing if/when the schemas need updating.
  • Include the schemas in the GitHub repository. This is messy, but may be the easiest option, and the most obvious way to ensure that the application will work offline.

Whichever mechanism we choose should also be used by the tests, see #16

Manual delete on uploaded file

Once a user has uploaded a file, they may want it removed from our servers immediately.

We could provide a 'Delete' button (on the 'explore' page?) to enable this.

This needs more thought as e.g.
users are not logged in (they might want to come back later to delete)
Anyone can visit the explore URL and delete it

Not all strings are set up to be translateable

django-template-i18n-lint may be a useful tool to check for this:

$ pip install django-template-i18n-lint
$ django-template-i18n-lint cove
cove/templates/explore.html:14:46:XLSX (
cove/templates/explore.html:15:45:JSON (
cove/templates/explore.html:19:45:XLSX (
cove/templates/explore.html:20:41:JSON (
cove/templates/base.html:38:45:Go
cove/templates/base.html:63:29:Footer text here. Running version

We could think about whteher we want this to run automatically, e.g. as part of our tests.

Dates as python dates not strings

On the explore pages we are just printing out strings of dates at the moment.
We should turn these into date objects so we can manipulate them.

File input is not marked as required in the html

The other two inputs have required=required, which enables the html5 prompts to fill the field in. The file input doesn't have this, only Django's prompt once the page has actually been submitted.

Add conversion to CSV support

We need to think about whether it's possible to offer a single CSV download sometime, or whether this should always be multiple downloads, or a zip of CSVs etc.

Do we want to keep google translated translations?

In order to test the multilingual functionality, I created a Spanish translation using google translate (there's an option to upload a .po file and machine translate all of that).

There's also a French translation, which is similar, but with slightly more manual translations that are likely to be wrong (#19 (comment)).

Do we want to keep the google translated translations as a starting point, or remove them for release, and wait until we have manually translated copies?

Log what users are doing with the application

We should be able to generate a report that gives us some idea about:

  • How many 'files' have been uploaded/pasted/fetched via URL (recently, in the last week, etc)
  • What kind of conversions have people been requesting?

Other things we might want to think about:
Average size of files, time to process, number of subsequent downloads of converted files.

We can use this thread to add more ideas.

Test should not call external urls

Where possible we should be using URLs created locally, so that running the tests doesn't depend on having an internet connection, and the availability of third party services.

Perform a 1-day security audit on CoVE

Spend some time considering what further steps might be taken around securing the application as it is an application that accepts file input. (e.g. file size, rate limits, server resources)

Auto delete files

When people submit data to us (upload, paste, url) we should delete that data (and the derived converted data) after a period of x days (lets choose 7).

We will retain meta-data about that file e.g. was it an upload, url, or paste, when did it occur, did it convert or error, and maybe more...

BUT 7 days after upload/paste/pull from URL it (and it's derivatives) will be deleted from our server.

Once successfully uploaded, a page is created with a unique URL with 'explore' information and links to downloads. This URL could be used by people to share the results. After 7 days I expect that this page/URL will 404 (will it?)

Files that are uploaded, but fail to convert will also need to be deleted. (should this be immediately, or also after 7 days?)
(I expect that there is no easily discoverable URL for these files, although if you know the filename and the code for this application it can easily be deduced)

Associated with this are the following tasks:

  • We need to tell people of our deletion policy in Terms and conditions
  • We need to tell people about our deletion policy on the front page/footer i.e. be explicit somewhere!
  • We need to put a message on the 'explore' page showing when a file will be deleted (and that that URL/page will be come a 404 once the file is deleted) ( we might also show 'time until deletion', but this is not necessary)
  • Provide a 404 message for that URL when the file is gone

A failed conversion should show a custom error page

Currently this is Django's default error page.

The traceback should still be accessible for debugging purposes. For now, it is probably easiest to emit this to stdout.

Additionally, it would be useful to display extra information for a JSON file, even if the conversion to spreadsheet failed, so maybe the error should be part of the explore.html template.

Set application name

We're currently using:
Open Contracting Data Explorer

We have one suggestion of: Open Contracting Data Tool

We also have a faked up French translation in place that needs altering or removing, which could be done at the same time

Add support for multiple CSV input

This is multiple CSV "sheets" describing the data, not upload of multiple different datasets (e.g. for comparison) which would be a seperate issue.

We could provide a series of upload boxes for people to do this, or ask them to be uploaded in a zip archive.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.