Giter VIP home page Giter VIP logo

lore's People

Contributors

amir-qayyum-khan avatar bdero avatar blarghmatey avatar carsongee avatar ferdi avatar giocalitri avatar jamiefolsom avatar justinabrahms avatar noisecapella avatar pdpinch avatar pwilkins avatar requires avatar shawnmilo avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lore's Issues

Importer app

Importer module is responsible for providing the APIs for :

  • Import course content as tarball file that users can generate by a) exporting the course from studio or b) clicking “download” repository from github
  • Parse each item of the course (chapter, sequential, vertical, problem etc.), extract the relevant metadata and the XML representation of the item and insert them in LORE database.
  • Assign each item a universal unique identifier (UUID) if it does not have one.

Uses the interface provided by #3

Roles and permissions

  • #129 Members REST API for managing users in repositories
  • #160 Roles and permissions: Create a lore_admin role
  • #132 Add authorizations to the taxonomy APIs

screenshot 2015-05-18 11 00 25

cleanup welcome page

Just logging a couple of issues ..

Moved to #75:

  • change /lore/create_repo to repositories/new
  • change /lore/welcome to /home

Moved to #76:

  • When user clicks "Add repo" (at the lore/create_repo page) , it should redirect to the newly created repository (listing page). Currently it redirect to the welcome page

Bug: Import does not accept studio exported course tar.gz files

Currently the import upload will only accept tar.gz files that have a single folder in their root, and then import the course in that folder. This misses on a major OLX convention that if the root folder contains a course.xml file, the tar file should be imported as a single course, and if there are folders in the tar.gz file without a course.xml file, each folder should be imported as a separate course.

As a user, I'd like URLs that contain my repo name

Gathering related items from #73 and #74

  • change the url of the listing page from /lore/listing/3/1 to /repositories/repo_slug
  • change /lore/create_repo to repositories/new
  • Change "import" url from importer/upload/repo_id to repositories/repo_slug/import or repositories/repo_id/import
  • change /lore/welcome to /home

When creating a repository, also create a slug

This will give us nice URLs for repositories.

And this will give us human-readables names for authorization groups -- although if we use the slug for that purpose we will have to change the group-name whenever a repository is renamed.

Authentication

  • Allow users to authenticate using MIT certificate authentication via CAS
  • MIT auth should be pluggable , easily enabled / disabled in any LORE instance.

As a user, I want a stable production app

One of the takeaways from our demo today is that the physics team needs a production system by the time our next demo ~6/29.

Please add a checklist to this issue to identify any decisions that need to be made.

  • It needs to be fast (responsive to users)
  • What's the name?
  • Where will it be deployed?
  • How will it be backed up?
  • How will we scale?
  • How much do we think it will cost?

LearningObjects listing page 2

Continue the work done on #24

  • Move "import" link to the top of the page (see [2])
  • Apply new template to the listing (as much as we can ) [3]
  • Apply new template to the left navigation ( just the look and feel more than the functionality) [4]

mitlore

Items moved to #75

  • change the url of the listing page from /lore/listing/3/1 to /repositories/repo_slug or /repositories/repo_id (see [1] below)
  • Change "import" url from importer/upload/repo_id to repositories/repo_slug/import or repositories/repo_id/import

"Learning Objects" app

Is the core component responsible for defining, storing, managing and providing the relevant APIs for managing learning objects and the repositories they belong to.

  • This version should simply implement basic models for Repository, LearningObject and Course
    (https://goo.gl/gmpedb)
  • It will be used by the "import" app to store records parsed from the XML doc.

Taxonomy app

Provides the APIs for a) defining the taxonomy system, managing vocabularies and taxonomy terms and adding them for each repository and b) assigning taxonomy terms to learning objects.

See also https://goo.gl/gmpedb

"Create repository" page

Create a page / view in the UI app ( #5 ) that allows users to create repositories

02_create

Authentication / Authorization is not important - Anyone can create repos at this point.

Test import with 8.MReV and 8.MechCx

There are two additional courses from Dave Pritchard's group that we should include in the initial release. The "AB experiments" in the 8.MReV example may be troublesome.

For testing purpose, I would recommend starting with the latest version of 8.MechCx, which is the course that we just finished running.

Also, here's a link to the summer 8.MReV course tar ball with all the AB experiments. It contains some more irregularities caused by inconsistent authoring method over the years (as well as using early beta version of BACKSTAGE), and might be a good challenge for LORE's capability.

These are now in the archive repo as well, at

https://github.mit.edu/edX-Archives/edX-Archive-8.MReVx-2T2014
https://github.mit.edu/edX-Archives/edX-Archive-8.MechCx-1T2015

Add modernize to automatic checks

Add python modernize to the build as well as fix any outstanding python six problems we currently have. Especially look at unicode literals in tests/test_settings.py

Rename "learning object" to "learning resource"

From the meeting with Dept. of Physics :

The name “Learning Object” is potentially highly confusing. We strongly suggest using a different name > for resources, perhaps “Learning Resource”, which is unambiguous.

Renaming the app and the model are 2 things that come in mind.

Learning Resource static asset dependencies

Each learning resource can in principle have its own dependencies. For example, videos have transcript files, problems have images, HTML will often have javascript and CSS files, to name but a few. Links to these dependencies should be stored with each learning resource.

Furthermore, resources like CSS files and javascript libraries should be noted as library objects which are common to multiple learning resources. Upon export, only one copy of each library resource should be exported.

Provide a "home" link for repositories

When users import courses, add vocabularies etc. there should be a link for them to get back to the repository home page (listing page)

  • Change lable from "Viewing Repository" to "Repository"
  • Make the repository name a link

lorelistinghome

Asynchronous Course Import

As a user, I would like to not have my course imports timeout when I either have a slow Internet connection, a large course, or a bit of both. Dependent on #4

fix uniqueness constraints

It appears that #39 is being caused by constraints in the models that aren't in the migrations, probably caused by typos reported by @noisecapella, where Meta was spelled meta, and therefore didn't result in the migration file containing the appropriate constraints.

Deleting and recreating the migration file results in this diff:

@@ -76,4 +74,12 @@ class Migration(migrations.Migration):
             name='repository',
             field=models.ForeignKey(to='learningresources.Repository'),
         ),
+        migrations.AlterUniqueTogether(
+            name='learningresource',
+            unique_together=set([('course', 'uuid')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='course',
+            unique_together=set([('repository', 'org', 'course_number', 'run')]),
+        ),
     ]

This requires a decision. Right now, the courses do not have UUIDs in the LearningResources, which means we have to create them. However, creating a universally unique value is already going to guarantee uniqueness, so the database constraint seems unnecessary.

So do we remove the unique_together or do we leave it and generate UUIDs?

If we decide to leave the constraint in, we will have to regenerate the initial migration again, so dev and Heroku databases will need to be deleted again to prevent errors.

AdminModels for All Models

As a Django application administrator I would like to have a Django admin interface for each model that allows me to manipulate data directly without direct shell access to the system running the application to resolve real time problems with data integrity caused by internal (our django code), external (caused by issues in postgresql), to restart celery jobs that have failed due to operational issues, or other miscellaneous issues caused directly by users.

Create API documentation using Sphinx autodoc

Add Sphinx documentation tools to generate API docs from code docstrings. Uses Google doc style through Napoleon and the Sphinx Bootstrap theme.

  1. Add Sphinx autodoc tooling

. Create TOX env to create Sphinx doc

. Create ReadTheDocs site for LORE documentation

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.