Code Monkey home page Code Monkey logo

utu-schooner's Introduction

Schooner - Simple Course Management System

Simple enrollment roster that manages deadlines, tasks, and scoring.

Dependencies

Current version of setup.py is NON-FUNCTIONAL and needs to be re-written!

  • PostgreSQL (tested with version 11)
  • Psycopg3 (PostgreSQL connector, pre-release version dev2)

Design Goals

  • Simplicity and minimal effort (in implementation, site structure, usage...). And where not achievable, good and clear documentation.
  • Minimal dependencies.
  • Two-step principle. All actions (primary use cases) should be accomplished in no more than two clicks. One to choose the relevant subpage, another to open a folding information container (if necessary).
  • Integration-friendly Architecture. Basically meaning that the backend is a REST API and none of the client pages are dynamically parsed.

Functional Specifications (project goals)

Parenthesis document status for RC1 (version 0.4.0)

  • UTU SSO authentication. (OK)
  • Student can register GitHub account name. (OK)
  • Student can view course progress and score. (NOK)
  • Model course curriculum in "requirements". (Mostly OK, as Assignments)
  • Exam privilege tracking (when earned, date and time recorded). (NOK)
  • Free-form text for each student-course-year allowing special considerations. (NOK)
  • Can import ViLLE/A+ quizz scores. (NOK)
  • Can import exam.utu.fi exports. (NOK)
  • MS Teams integration, automatic course group addition, messages, etc. (NOK)
  • Asset (component kit) management (OK)
  • Automated notifications and per-student notification settings (very basic)
  • Assistant workqueue system (OK)
  • Assistant Virtual Machine / submission evaluation transfers (OK)
  • Student score calculator and grader (NOK)

GDPR

Database stores personal information and GDPR policy compliance document will be created, outlining responsible persons and practises, as required by the directive.

Third-party components

Frontend

Backend

  • Nginx ver.1.14.0+
  • Python 3.6.8+ (Ubuntu Server 18.04.3 LTS, offered by IT-Services)
  • Flask 1.1.1+ (2021-08-16, version: 2.0.1 is the newest)
  • UWSGI 2.0.15+
  • PostgreSQL 11.12+
  • Psycopg3 dev2 (will be updated to release version, when it is released)

utu-schooner's People

Contributors

jasata avatar

Watchers

 avatar

utu-schooner's Issues

Rewrite SSO module

Next year, the SSO module should change from core schema to system schema tables and start supporting a list of roles.

Hierarchical roles should be considered especially, since PostgreSQL seems to support similar hierarchical queries that Oracle's does.

Access checking member functions for hierarchical roles need to be created for the application.

Remove collaboration when student submits a new GitHub account

When student submits a GitHub account in /register.html, possible previous submissions should be checked and the course GitHub account should leave from a possible redundant repository.

Covers both cases:

  • Student submits a new account, the previous collaboration is not needed.
    solution: remove collaboration
  • Student submits the same account again but cannot send new invite if the course account is already collaborating.
    solution: remove collaboration

Prerequisite testing

Integrate prerequisite testing into this system. Follow the existing manual implementation.

Assignments to support NULL deadline

This is especially important, if the system is to support on-going and own-pace courses. But this is equally useful for things like lending out component kits, which can (and usually will) be returned after the course period has ended.

Generalize Git repositories

We currently work exclusively with GitHub, but should look into supporting GitLab, at least the university's own instance.

This however, is a low priority issue, since this system currently has no other users except the embedded courses.

Group Work features

System should support group forming (by students grouping themselves) and automated division into groups.

This feature should be open to data from prerequisite test results that gauge each students strengths and weaknesses, to form groups that would have at least one person to cover each area.

Change core.handler assignment type

"Handler" is not a very good way to classify assignments as some are handled by number of subprocesses, instead of just one ("HUBBOT", for example).

Type is not reserved word and can be used as a column name.

Table (core.handler) existed mostly for descriptive purposes, but may not actually be necessary - or at least, not until teacher UI is being created. Until such time, perhaps it is better to go with just a CONSTRAINT assignment_type_chk CHECK (type IN ('MANUAL', 'GIT_REGISTER', 'GIT_SUBMISSION', 'APLUS_QUIZZ', 'ASSET_LOAN'))
Column: type VARCHAR NOT NULL DEFAULT 'MANUAL'

Exercise download archival fails on file submissions

Download failed: status code 500 Internal server error - see logs! Path '/srv/schooner/submissions/DTEK0002-3002/jasata/E04/accepted' either does not exist or is not a directory!

When the trigger is of type "file", archival should be handled differently. (Note: file-type is necessary to facilitate reports and other monolith submissions like installable distribution packages 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.