Martin Polanka 8 years ago
commit b44a866b89

@ -1587,7 +1587,7 @@ checking. Previous chapters implies, that each user has to have a role, which
corresponds to his/her privileges. Our research showed, that three roles are corresponds to his/her privileges. Our research showed, that three roles are
sufficient -- student, supervisor and administrator. The user role has to be sufficient -- student, supervisor and administrator. The user role has to be
checked with every request. The good points is, that roles nicely match with checked with every request. The good points is, that roles nicely match with
granuality of API endpoints, so the permission checking can be done at the granularity of API endpoints, so the permission checking can be done at the
beginning of each request. That is implemented using PHP annotations, which beginning of each request. That is implemented using PHP annotations, which
allows to specify allowed user roles for each request with very little of code, allows to specify allowed user roles for each request with very little of code,
but all the business logic is the same, together in one place. but all the business logic is the same, together in one place.
@ -1629,7 +1629,7 @@ jobs which failed on a worker hardware issue. These jobs are typically submitted
by different user than the author (an administrator for example), so the by different user than the author (an administrator for example), so the
original authors should be notified. In this case it is more reasonable to load original authors should be notified. In this case it is more reasonable to load
the results immediately and optionally send them a notification via an email. the results immediately and optionally send them a notification via an email.
This is exactely what we do. This is exactly what we do.
It seems with the benefit of hindsight that immediate loading of all jobs could It seems with the benefit of hindsight that immediate loading of all jobs could
simplify the code and it has no major drawbacks. In the next version of ReCodEx simplify the code and it has no major drawbacks. In the next version of ReCodEx
@ -1678,7 +1678,7 @@ etc. The easiest solution is to manage this information by hand, every instance
of the API server has to have an administrator which would have to fill them. of the API server has to have an administrator which would have to fill them.
This of course includes only the currently available workers and runtime This of course includes only the currently available workers and runtime
environments which does not change very often. The real-time statistics of the environments which does not change very often. The real-time statistics of the
backend cannot be made accesible this way in a reasonable way. backend cannot be made accessible this way in a reasonable way.
A better solution is to update this information automatically. This can be A better solution is to update this information automatically. This can be
done in two ways: done in two ways:
@ -1708,7 +1708,7 @@ One of the downsides is the large number of different web browsers (including
the older versions of a specific browser) and their different interpretation the older versions of a specific browser) and their different interpretation
of the code (HTML, CSS, JS). Some features of the latest specifications of HTML5 of the code (HTML, CSS, JS). Some features of the latest specifications of HTML5
are implemented in some browsers which are used by a subset of the Internet are implemented in some browsers which are used by a subset of the Internet
users. This has to be taken into account when choosing apropriate tools users. This has to be taken into account when choosing appropriate tools
for implementation of a website. for implementation of a website.
There are two basic ways how to create a website these days: There are two basic ways how to create a website these days:
@ -1734,7 +1734,7 @@ There are two basic ways how to create a website these days:
based on the data received from the API server. The script file is usually based on the data received from the API server. The script file is usually
quite large but it can be cached and does not have to be downloaded from the quite large but it can be cached and does not have to be downloaded from the
server again (until the cached file expires). Only the data from the API server again (until the cached file expires). Only the data from the API
server needs to be transfered over the Internet and thus reduce the volume of server needs to be transferred over the Internet and thus reduce the volume of
payload on each request which leads to a much more responsive user experience, payload on each request which leads to a much more responsive user experience,
especially on slower networks. Since the client-side code has full control especially on slower networks. Since the client-side code has full control
over the UI and a more sophisticated user interactions with the UI can be over the UI and a more sophisticated user interactions with the UI can be
@ -1914,9 +1914,9 @@ instance have own group hierarchy, so you can choose only those from your
instance. That is why list of groups is available from instance link located in instance. That is why list of groups is available from instance link located in
sidebar. This link brings you to instance detail page. sidebar. This link brings you to instance detail page.
In there you can see a description of the intance and most importantly in In there you can see a description of the instance and most importantly in
"Groups hierarchy" box there is a hierarchical list of all public groups in the "Groups hierarchy" box there is a hierarchical list of all public groups in the
instance. Please note that groups with plus sign are collapsable and can be instance. Please note that groups with plus sign are collapsible and can be
further extended. If you successfully located group you would like to join, further extended. If you successfully located group you would like to join,
continue by clicking on "See group's page" link following with "Join group" continue by clicking on "See group's page" link following with "Join group"
link. link.
@ -1928,9 +1928,9 @@ link.
On the group detail page there are multiple interesting things for you. First On the group detail page there are multiple interesting things for you. First
one is brief overview with information describing the group, there is list with one is brief overview with information describing the group, there is list with
supervisors and also hierarchy of subgroups. Most importantly there is supervisors and also hierarchy of subgroups. Most importantly there is
"Student's dasboard" section. This section contains list of assignments and list "Student's dashboard" section. This section contains list of assignments and
of fellow students. If supervisors of groups allowed students to see each others list of fellow students. If supervisors of groups allowed students to see each
statistics there will also be points which particular students gained. others statistics there will also be points which particular students gained.
In the "Assignments" box on the group detail page there is list of assigned In the "Assignments" box on the group detail page there is list of assigned
exercises which students are supposed to solve. The assignments are displayed exercises which students are supposed to solve. The assignments are displayed
@ -1968,9 +1968,9 @@ submitter name (supervisor can submit solution on your behalf), further there
are files which were uploaded on submission and most importantly "Evaluation are files which were uploaded on submission and most importantly "Evaluation
details" and "Test results" boxes. details" and "Test results" boxes.
Evalation details contains overall results of your solution. There are Evaluation details contains overall results of your solution. There are
information such as if solution was provided before deadlines, if the evaluation information such as if solution was provided before deadlines, if the evaluation
process succesfully finished or if compilation succeeded. After that you can process successfully finished or if compilation succeeded. After that you can
find a lot of values, most important one is the last, "Total score", consisting find a lot of values, most important one is the last, "Total score", consisting
of your score, slash and the maximum number of points for this assignment. of your score, slash and the maximum number of points for this assignment.
Interestingly the your score value can be higher than the maximum, which is Interestingly the your score value can be higher than the maximum, which is
@ -2019,7 +2019,7 @@ of the matching group box.
### Manage group ### Manage group
Locate group you supervise and you want to manage. All your supervised groups Locate group you supervise and you want to manage. All your supervised groups
are available in sidebar under "Groups -- supervisor" collapsable menu. If you are available in sidebar under "Groups -- supervisor" collapsible menu. If you
click on one of those you will be redirected to group detail page. In addition click on one of those you will be redirected to group detail page. In addition
to basic group information you can also see "Supervisor's controls" section. In to basic group information you can also see "Supervisor's controls" section. In
this section there are lists of current students and assignments. this section there are lists of current students and assignments.
@ -2088,7 +2088,9 @@ In meta information form you can fill these options:
can find some very simple one already in here, description of score can find some very simple one already in here, description of score
configuration can be found further in "Writing score configuration" chapter configuration can be found further in "Writing score configuration" chapter
- first submission deadline - first submission deadline
- maximum gainable points before first deadline - maximum gainable points before first deadline; if you want to manage all
points manually, set here 0 and then use concept of bonus points, which is
described in the next subchapter
- second submission deadline, after that students still can submit exercises but - second submission deadline, after that students still can submit exercises but
no points for them (must be after the first deadline) no points for them (must be after the first deadline)
- maximum gainable points after first deadline and before second deadline - maximum gainable points after first deadline and before second deadline
@ -2121,24 +2123,42 @@ runtime environment and another nested tabbed box. In there you can find all
hardware groups which are available for exercise and set limits for all test hardware groups which are available for exercise and set limits for all test
cases. The time limits have to be filled in seconds (float), memory limits are cases. The time limits have to be filled in seconds (float), memory limits are
in bytes (int). If you are interested in some reference values to particular in bytes (int). If you are interested in some reference values to particular
test case then you can take a peek on collapsable "Reference solutions' test case then you can take a peek on collapsible "Reference solutions'
evaluations" items. If you are satisfied with changes you made to the limits, evaluations" items. If you are satisfied with changes you made to the limits,
save form with "Change limits" button right under environments box. save form with "Change limits" button right under environments box.
### Students' solutions management ### Students' solutions management
@todo Describe where all the students solutions for a given assignment One of the most important tasks for a group supervisor is checking student
can be found, where to look for all solutions of a given student, how to solutions. As automatic evaluation of them cannot catch all aspects of source
see results of a specific students solutions evaluation result. code, it is suitable to do a brief manual review of student's coding style and
reflect that in assignment bonus points.
@todo Can I assign points to my students solutions manually instead of depending on automatic scoring? If and how to change the score of a solution assignment
settings, setting points, bonus points, accepting a solution (*not On "Assignment detail" page there is an "View student results" button near top
implemented yet!*). Describe how the student and supervisor will still of the page (next to "Edit assignment settings" button). This will redirect you
be able to see the percentage received from the automatic scoring, but to a page where is a list of boxes, one box per student. Each student box
the awarded points will be overridden. contains a list of submissions for this assignment. The row structure of
submission list is the same as the structure in student's "Submitted solution"
@todo: Describe the comments thread behavior (public/private comments), box. More information about every solution can be showed by clicking on "Show
who else can see the comments -- same as from the student perspective details" link on the end of solution row.
This page is the same as for students with one exception -- there is an
additional collapsed box "Set bonus points". In unfolded state, there is an
input field for one number (positive or negative integer) and confirmation
button "Set bonus points". After filling intended amount of points and
submitting the form, the data in "Evaluation details" box get immedialely
updated. To remove assigned bonus points, submit just the zero number. The bonus
points are not additive, newer value overrides older values.
It is useful to give a feedback about the solution back to the user. For this
can be nicely used the "Commens and notes" box. Make sure that the messages are
not private, so the student can see them. More detailed description of this box
is available in student part of user documentation.
One of the discussed concept was marking one solution as accepted. However, due
to lack of frontend developers it is not yet prepared in user interface. We
hope, it will be ready as soon as possible. The button for accepting a solution
will be most propably also on this page.
### Creating exercises ### Creating exercises
@ -2183,7 +2203,7 @@ during execution according to job configuration.
Files can be uploaded either by drag and drop mechanism or by standard "Add a Files can be uploaded either by drag and drop mechanism or by standard "Add a
file" button. In opened dialog window choose file which should be uploaded. All file" button. In opened dialog window choose file which should be uploaded. All
chosen files are immediatelly uploaded to server but to save supplementary files chosen files are immediately uploaded to server but to save supplementary files
list you have to hit "Save supplementary files" button. All previously uploaded list you have to hit "Save supplementary files" button. All previously uploaded
files are visible right under drag and drop area, please note that files are files are visible right under drag and drop area, please note that files are
stored on fileserver and cannot be deleted after upload. stored on fileserver and cannot be deleted after upload.
@ -2227,7 +2247,7 @@ get the up-to-date information).
## Group administrator ## Group administrator
Group administrator is the group supervisor with some additional permissions in Group administrator is the group supervisor with some additional permissions in
particular group. Namely group administator is capable of creating a subgroups particular group. Namely group administrator is capable of creating a subgroups
in managed group and also adding and deleting supervisors. Administrator of the in managed group and also adding and deleting supervisors. Administrator of the
particular group can be only one person. particular group can be only one person.
@ -2239,7 +2259,7 @@ sidebar and choose the right group detail page. If you are there you can see
"Administrator controls" section, here you can either add supervisor to group or "Administrator controls" section, here you can either add supervisor to group or
create new subgroup. create new subgroup.
Form for creatingi a subgroup is present right on the group detail page in "Add Form for creating a subgroup is present right on the group detail page in "Add
subgroup" box. Group can be created with following options: subgroup" box. Group can be created with following options:
- name which will be visible in group hierarchy - name which will be visible in group hierarchy
@ -2268,35 +2288,35 @@ particular supervisor should not to be supervisor of the group anymore.
## Instance administrator ## Instance administrator
Administrator of instance can be only one per instance. In addition to previous Instance administrator can be only one person per instance. In addition to
roles instance admin should be able to modify instance details, manage licences previous roles this administrator should be able to modify the instance details,
and take care of groups which belong to instance. manage licenses and take care of top level groups which belong to the instance.
### Instance management ### Instance management
List of all instances in system can be found under "Instances" link in sidebar. List of all instances in the system can be found under "Instances" link in the
On the mentioned page there is a table of instances with their respective sidebar. On that page there is a table of instances with their respective
admins. If you are admin of one of them you can visit its page by clicking on admins. If you are one of them, you can visit its page by clicking on the
the instance name. On instance details page you can find some description of instance name. On the instance details page you can find a description of the
instance, current groups hierarchy and form for creating new group. instance, current groups hierarchy and a form for creating a new group.
If you want to change some of the instance settings follow "Edit instance" link If you want to change some of the instance settings, follow "Edit instance" link
on instance details page. This will take you to instance editation page with on the instance details page. This will take you to the instance editation page
corresponding form. In there you can fill following information: with corresponding form. In there you can fill following information:
- name of the instance which will be visible to every other user - name of the instance which will be visible to every other user
- brief description of instance and for whom it is intended - brief description of instance and for whom it is intended
- checkbox if instance is open or not which means public or private (hidden from - checkbox if instance is open or not which means public or private (hidden from
potentional users) potential users)
If you are done with editation, save filled information by clicking on "Update If you are done with your editation, save filled information by clicking on
instance" button. "Update instance" button.
If we go back to the instance details page you can find here "Create new group" If you go back to the instance details page you can find there a "Create new
box which is able to add group to instance. This form is the same as the one for group" box which is able to add a group to the instance. This form is the same
creating subgroup in already existing group so we can skip description of form as the one for creating subgroup in already existing group so we can skip
fields. After successful creation of group it should appear in "Groups description of the form fields. After successful creation of the group it will
hierarchy" box at the top of the page. appear in "Groups hierarchy" box at the top of the page.
### Licenses ### Licenses
@ -2305,29 +2325,29 @@ hierarchy" box at the top of the page.
## Superadministrator ## Superadministrator
Superadmin is user with the most priviledges and as such superadmin should be Superadministrator is a user with the most privileges and as such superadmin
quite unique role. Ideally there should be only one of this kind, used with should be quite a unique role. Ideally, there should be only one user of this
special caution and adequate security. With this stated it is obvious that kind, used with special caution and adequate security. With this stated it is
superadmin can perform any action the API is capable of. obvious that superadmin can perform any action the API is capable of.
### Users management ### Users management
There are only few roles to which users can belong in ReCodEx. Basically there There are only a few user roles in ReCodEx. Basically there are only three:
are only three: _student_, _supervisor_, and _superadmin_. Base role is student _student_, _supervisor_, and _superadmin_. Base role is student which is
which is assigned to every registered user. Roles are stored in database assigned to every registered user. Roles are stored in database alongside other
alongside other information about user. One user always has only one role at the information about user. One user always has only one role at the time. At first
time. At first startup of ReCodEx administrator should create his account and startup of ReCodEx, the administrator has to change the role for his/her account
then change role in database by hand. After that manual intervention into manually in the database. After that manual intervention into database should
database should never be needed. never be needed.
There is a little catch in groups and instances management. Groups can have There is a little catch in groups and instances management. Groups can have
admins and supervisors. This setting is valid only per one particular group and admins and supervisors. This setting is valid only per one particular group and
has to be separated from basic role system. This implies that supervisor in one has to be separated from basic role system. This implies that supervisor in one
group can be student in another and simultaneously have global supervisor role. group can be student in another and simultaneously have global supervisor role.
Changing role from student to supervisor and back is done automatically by Changing role from student to supervisor and back is done automatically when the
application and should not be managed by hand in database! Previously stated new privileges are granted to the user, so managing roles by hand in database is
information can be applied to instances as well, but instances can only have not needed. Previously stated information can be applied to instances as well,
admins. but instances can only have admins.
Roles description: Roles description:

Loading…
Cancel
Save