Coder Social home page Coder Social logo

uzh / ddm Goto Github PK

View Code? Open in Web Editor NEW
17.0 4.0 1.0 7.58 MB

Data Donation Module: A Django application to setup and manage data donation projects.

Home Page: https://datadonation.uzh.ch

License: GNU General Public License v3.0

Python 55.30% CSS 3.47% JavaScript 5.67% HTML 20.53% Vue 14.96% Shell 0.06%
django social-science

ddm's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar nico-ap avatar witlox avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

ddm's Issues

Download Functionality

Provide researchers with download functionalities to retrieve and decrypt the data related to one of their projects.

Possibly provide small R- and Python-packages for this.

Participant API test fails when using DDM on a site together with internationalized wagtail urls

If you use DDM on a Django site together with wagtail (tested with v4.1) and you have internationalization enabled for your wagtail urls, we recommend to use the prefix_default_language=False for the i18n_patterns:

urlpatterns += i18n_patterns(
    path('', include(wagtail_urls)),
    prefix_default_language=False
)

Not doing this will cause ddm.tests.test_apis.test_participant_deletion_with_regular_login to fail.
In practice, the participant API still seems to work properly despite the test failing, however, unexpected behaviour cannot be ruled out at this point.

Encryption

All data stored in the database should be encrypted.
Encryption is handled on a project basis so only the researcher that owns a project will be able to decrypt the data associated with a project.
For this, a researcher must define a secret key on project creation.

Audit Trail

Implement an audit trale to secure reproducibility of a project.

Upload Form

Implement a reactive, easy-to-use upload form used by donators to upload and consent to the submsision of their data donations.

Should also include easily understandable error messages if something goes worng during UL (e.g. wrong file submitted, no entries within defined filter range) etc.

Questionnaire Flow

Define questionnaire flow consisting of a static and a varibale part.

Static part (part of every project):

  • Introduction
  • Instructions
  • Upload Form
  • Farewell

Variable (can be independently designed for every project):

  • different Questions (with or without relations to the uploaded data)

Parser

Implement a javascript parser function that can be configured by a researcher in the project admin panel.
Core configuration options include:

  • Expected File Type
  • Validation Fields
  • Fields to extract

Additional configuration options include:

  • filter criteria
  • anonymization machanisms
  • ...

User Structure

Implement a user structure consisting of different roles:

  • Admin (System administrator that has access to project specifications, but not the related data)
  • Researcher (can setup projects)
  • Collaborator (can be added to a project)
  • Donator (implicit role, the participants of a project)

multilang support

messages from the system are currently hardcoded, add i18n and l10n and add translations

Unspecified dependencies & issues with STATIC_ROOT

Hello,

I try to set up the DDM and run into some issues. I am very much a newbie to this stuff (so far stayed happily within jupyter notebooks), so the issues might be just caused due to some mistake on my side. Therefore, Id be happy to get help to get the DDM up and running :).

When following the Documentation, everything is more or less smooth until "Apply Database Migrations".

For the urls.py it is not specified that one has to add the following imports:

  • from django.urls import include, path
  • from django.contrib.auth import views as auth_views
    ... but Google/the script-comments helped - so I just mention it since, for me, as an inexperienced user, it took some time to figure out.

The bigger issue seems to be caused by the settings.py & webpack_loader:

  • caused by the WEBPACK_LOADER one has to insert into settings.py, the import of 'os' is needed.
  • when solving this via import os, a new error message complains that STATIC_ROOT is not defined, which indeed it is not.
  • I added STATIC_ROOT in accordance with this link: STATIC_ROOT = os.path.join(BASE_DIR, "static")

python manage.py migrate works out now.

When running python manage.py test ddm, five Errors persist that all are seemingly connected to the WEBPACK_LOADER.
Due to length, I attached the terminal Output regarding the Errors as a txt: errors_ddm.txt

  • instead of defining STATIC_ROOT as os.path.join(BASE_DIR, "static") I also tried out replacing it with BASE_DIR directly - same Error messages in the test run.
  • I tried the set-up on a Server with a pyenv virtualenv and locally with a conda env - in both cases the same issue where prevalent.

The solution might be evident for someone with Django experience - which I am lacking completely :).
Please let me know how to solve this.

Let me know if any other information is needed & thanks in advance :)

EDIT: figured the issues out by myself.

Timezones

the project is currently hardcoded to CHTZ, set as default but make configurable

Project Statistics

Implement informative statistics that inform researchers about the progress of their projects.

Statistics could include:

  • Number of participants/responses
  • Number of successful donations
  • Number of partial donations
  • Number of failed donations
  • Time spent
  • etc.

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.