Giter Site home page Giter Site logo

gateway4labs / labmanager Goto Github PK

View Code? Open in Web Editor NEW
13.0 9.0 9.0 17.31 MB

Go-Lab / Next-Lab Smart Gateway. Translator to integrate remote labs in Learning tools.

Home Page: http://gateway4labs.readthedocs.org

License: BSD 2-Clause "Simplified" License

Python 69.06% Mako 0.06% HTML 20.69% JavaScript 9.75% CSS 0.19% Shell 0.25%

labmanager's Introduction

https://travis-ci.org/gateway4labs/labmanager.svg?branch=master

Labmanager

The documentation of the labmanager is available here:

http://gateway4labs.readthedocs.org/en/latest/

This project counts with countributions developed by:

In addition to a list of individual contributors and institutions:
  • University of Deusto (initially and as part of Go-Lab and Next-Lab)
  • UNED (initially and later as part of Go-Lab)
  • MIT (initial support of the LTI platform, the plug-in for MIT iLabs)

labmanager's People

Contributors

accaminero avatar antonioirizar avatar dgzutin avatar gabimart avatar iemejia avatar ilequerica avatar nhocki avatar porduna avatar sergiobuj avatar shurikenz avatar zstars avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

labmanager's Issues

Be able to enable/disable labs from the RLMS management

Do something like "disable this lab" (for maintenance or whatever) and automatically it will not be available by any School. In OpenSocial, it would be interesting that this was propagated to the widget, showing something like a message or so (e.g., "The lab is down at this moment" or similar). In the RLMS Registered Labs tab, it should be a tick or something in a new column that you can toggle.

Rename "LMS" related classes

In the beginning, we were talking about LMSs all the time. However, now that we support PLEs and CMSs, we should change the name of that concept.

Proposals:

  • "Institution" (in Graasp, one "LMS" instance actually refers to a school, for instance. It may happen that there is more than one LMS in a single institution, but I'd rather say that it's still fine)
  • "LT" (Learning Tool; which could be LMS, CMS, or PLE, even if in Graasp it does not refer to Graasp itself but to each school running on Graasp)

Delete user

If the database has only one user and this user is deleted. It is impossible to log-in.
It is said we mustn't allow that when he is registered and logged and it is the unique count in the database (become this database has not any count).

Common storage layer

RLMSs should provide access data in a unified format so the Learning Tool can later retrieve this information and do some analytics on it.

Policy based authorization

It should be possible to give a certain user access over an LMS or RLMS and to manage the permissions that are granted.

This policy based authorization should allow a user with a different 'role' or 'access level' to access or edit only a subset of the information on the Labmanager.

i18n in the opensocial version

Right now in one branch there are translations of the system itself. But there is no translation of the texts inside the "Reserve" gadget. This should be treated.

Labs RLMS in admin

We have a few issues in page http://localhost:5000/admin/rlms/labs/ :

  1. When you put a lab availability in public or local and you remove it. It doesn't remove the data from database.
  2. Problems when you use id = "", in few cases i can use this id, and we shouldn't use it. It can be solved by changing the order the if sentences in functions change_accessibility and change_public_availability
  3. I can put only blanks in form. I think we should reject it.
  4. The form remembers the last id. Because we didn't clean the var lab.public_identifier in functions public_availability_formatter and accessibility_formatter.

New REST API for RLMSs

Right now, RLMS plug-in developers must implement it in Python. It would be useful to support a RESTful interface so they can develop it in other languages.

"Fake" RLMS for web virtual labs

There should be a special plug-in for loading widgified simulators. This plug-in would use the RLMS plug-in API but would support that the creator defines a set of laboratories and what widgets are present in each laboratory.

Support experiment results

As we've been talking, we need to figure out a way to support experiment results. The approach we are proposing right now is the following:

Each RLMS module will have an interface (similar to the ManagerClass) that will query the results of an experiment (given an experiment id - or equivalent unique id inside the RLMS). The modules will then process this information and present it to the Labmanager in a standard format. Hopefully something like Activity Streams.

For now, teachers and students would be able to see the results of an experiment and manually enter the grades in the LMS. Or contact the student. Or do whatever they want with the results. This way we are not depending on LMS functionality for results.

Also, we are not depending on the LTI standard that can only send a grade (v 1.1.1). If in the future the standard gets mature enough, we will have all our data in the Activity Stream format and we can convert from that to the standard.

Problems with this approach

There may be some problems with this approach. One being the actual translations from the experiments to our standard format. This may get tricky when the information stored in the labs is different. For example, in iLabs, each lab has it's own data and is not a standardised across iLabs. This is something we're working on and we hope to fix soon.

About this issue, I think that while iLabs work on this, we could start defining how to do this in other lab systems.

Implementation

We need to define the standard format we'll accept. When we have this we could start working on a dashboard that accepts the JSON data and build's itself up. We could look into Dashing. Even though it's in ruby, we could copy the way it works, it is Batman.js underneath.

/cc @porduna @sergiobuj @phbailey

Add and maintain unit tests

Right now, all the tests of Lettuce are not working, and they should. It might be simpler to use Selenium directly without Lettuce, but in any case, we must do something to keep track of what we've managed.

Add registration form for Graasp

Right now, it is the LabManager owner the one who has to create schools. They should be able to register themselves in a form, and get permissions to some default labs.

create new user

I can create a new user, it having a password with only one blank. It should reject it.

Enable "lab requests" in the LabManager

Teachers from schools should be able to see what laboratories are available, select them, and request access to them, so later the LabManager admin might grant permission on them.

Show what laboratories are available in a LabManager

This should be optional (e.g., a new column in the Laboratory table stating that it can be publicly shown). There should be at least two levels: one completely public (displaying them in the front page), and other for registered users (e.g., teachers in a registered school).

Tell the RLMS which widget is the master one

Right now, when the user clicks on "Reserve" on a widget, it actually defines that this one is the master one. However, the RLMS is not aware of this, and it would be very interesting so as to make things such as avoiding that more than one widget manages the polling systems or so. This message should be communicated through all the layers.

Support more responses

There are no responses for:
When an LMS is not recognised on the Labmanger.
When a Student/Learner tries to launch a Tool.
When an Instructor launches a tool and has no access for it.

Basically, for every 400 range errors, there are no responses in the LTI schema.

Standardize database names

Right now, we have things like 'LMSs', 'lmss', 'LabmanagerUsers',e tc. We should have the same types of names for all the tables.

Documentation has to be updated

There is no documentation or tutorial about the steps needed to reproduce the LTI interaction between the LMS and the Labmanager

Model cleanup and integration

Some models were duplicated for the purpose of supporting LTI. This different models have to be merged and the resulting models have to support the both the 'SCORM+Basic Auth' way and the LTI.

Find a different name

Right now, lms4labs supports CMSs (Joomla), and it's in its way to support PLEs (Graasp). It doesn't make sense that it keeps the name of lms4labs anymore.

I'd like to use a name such as "plumber" or whatever that recalls the tube-based design of the system. But I would also be fine with RLabGateway or labs4contents.

Create RLMS: Translate spanish

Page create RLMS don't have correct translation in spanish. We have a few itms in spanish and others in english.
We ca see in this image:
image

Create LMS-level users

The LMS admin must be able to log in the LabManager as a LMS admin and detail who has permissions on what laboratories. This way, the LMS admin can create users for teachers and let them grant on courses permissions on their labs.

Improve the Graasp URL parsing

Right now, we only check if it has the format "item=space_NUMBER", but we should support URLs such as "#url=wlwidget".

Make that a particular LT (and not all) can have automatic access to all the registered labs

By default, labs can be public to all LTs, or they can be assigned to particular LTs. It would be interesting to support that a LT has a particular property that enables it for access to all registered labs. This way, a university with a RLMS may say "I want to support all labs to my local LT, while I only provide access to certain labs", and no process of permission granting is required in those labs.

Invalid session path

Right now, if there is more than one labmanager installed in the same domain or subdomain, it uses the same session cookie, and bad results occur (not a security problem as long as both use different secrets). For this reason, we should configure the SESSION_COOKIE_PATH or the APPLICATION_ROOT variables, although I'm not still sure to what value.

Page that forces reload

Make a page that forces the reload of related widgets (widgets of the same lab), so whenever one widget says "finish", it can go back to that page, and this page forces the rest of the related widgets to be reloaded.

Provide wrapper on top of WTForms

The RLMS API right now is highly coupled to WTForms. A change that breaks compatibility in WTForms would invalidate all the RLMS plug-ins. Given that the source code is easily wrappable, should we create a form generator which basically generates WTForms classes so as to decouple it or should we just decide to be fine with this coupling? I ๐Ÿ‘ for either option.

Support moving to HTTPs

Right now if you open the widget xml in http, everything is in http, and if you load it in https, everything is in https. We need to load the widget in http and the resources in https when https is supported.

Support alembic

Right now it's always a pain to make changes in the database. We should support alembic so as to make this process automatic.

Define RLMS interface

When creating a new RLMS client, a developer has to override some methods (such as reserve, and the named Manager class) and has to support certain types of calls. This is not clearly defined.

Replace "Create" forms by custom forms in certain scenarios

The UI of the admin panel for adding credentials is not very intuitive. If you select "Basic", it still requests "key" and "secret", instead of something like "username" and "password" or so. Maybe we should have custom forms for this type of stuff (or different tables, whatever is easier to maintain).

For instance, in WebLab-Deusto we use the default "Create" with small customizations (hashing, etc.), but for permissions we created new forms from scratch. You can see them here.

In the same way, I did some tricks when adding a new ReLMS which I'm not comfortable with, since it is strongly coupled with the internal implementation of wtforms. Using different panels would be easier, and it would not require changing the API.

Migrate to Flask-SQLAlchemy

In the app composer we had serious problems with using scope sessions in multithread mode as we're doing in the LabManager. While this might not happen with Flask-Admin interfaces, there are some parts where this could be an issue. We should adopt Flask-SQLAlchemy

i18n

Right now, all the messages are hardcoded both in the templates and in the python code. i18n libraries for Flask should be used instead.

Add unit tests

The code right now is broken. We should add several unit tests. I'll start and once we have a small base we should all add tests of what we're doing.

Find a better logo

I did it in 5 minutes, and I feel that every time it is rendered in a screen or printed on a paper, a kitten dies.

Any ideas?

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.