markusproject / markus Goto Github PK
View Code? Open in Web Editor NEWGit repository of MarkUs
License: MIT License
Git repository of MarkUs
License: MIT License
When add a line in csv file as “category_name, annotation_text, annotation_text ...”, all text added in annotation category and no text for that category even though separated by comma.
Later, I checked that uploading is not a problem. The format of comma separated confuses me. When add column wise, I was able to get the category with annotation text.
For the next version, we may want to use a better role-based access control approach.
Suggested approach is a new table, with two columns: role, capability.
Role would be something like 'admin', and capability would be something like 'can_create_assignment'.
Then we'd just to a before_filter on all Controllers, which would run on each Controller method call, checking to see if the user performing the action has a role, which has the capability to do what is being done.
Step: 1.Create an Assignment with Group Limit :1 2.Select Groups and Graders 3. Try adding more than 1 member Result: System don't warns the user about Group Limit.
Test Environment:Firefox browser URL: http://www.markusproject.org/markus-test/ logged in as an Instructor.
Modified by reid 1 year ago:
Might want to generate a warning, but we still want to all the instructor to violate the group properties.
If a student tries to upload a file with the same name as a file they have already uploaded to MarkUs, they get a "500 Internal Server Error" page. The error is ActionController::Session::CookieStore::CookieOverflow.
Modified by g9browni 1 month ago:
The cause of this error seems to be an extra long flash message that exceeds the cookie size limit. Apparently we are storing flash messages in the cookie.
This is similar to what we did with the Grader View. Talk to Mike if you need info on how to do this.
g6mandi :
If a user tries to upload a rubric file in YAML and it has bad syntax, the error message displayed is not very user friendly. Right now it just displays the chunk of bad yaml. I couldn't figure out a (good) way to display these error messages.
Documentation in configuration files:
* config/environment.rb
* config/environments/production.rb
* config/environments/development.rb
* config/environments/test.rb
might need some clean-up.
There is a test failure due to commit 9c3df4d
No exception is raised anymore since authenticators (i.e. external programs) may write something to stderr regardless of the fact if it's executable or not. We simply need to update the test.
It appears there is only master. IMO we should have branches for released versions (0.5, 0.6, 0.7, 0.8).
The size of MarkUs continues to grow. At the moment we are at 15Mb for the whole trunk folder. Of these 15Mb, 6.9Mb has the folder /vendor and inside "vendor" /vendor/selenium-rc 5.4Mb. I don't know if people installing MarkUs in production would need all of our testing libraries. Also, we have 4.9Mb for folder /public of which 4.1Mb are images. We have an extensive icon library, but we are using only some of them. There is also room to save space.
Stripping MarkUs down for release would approximately result in a 3Mb installation for production as compared to a 15Mb development bubble (creating a tar-archive would probably make it < 1Mb, which would be nice).
Maybe at some point creating a script, which turns a development svn export into a trimmed down version for release would be nice.
The average grade for an assignment gets reported to the student but the instructor doesn't see it. The best place to put it is probably on the submissions page at the top.
When an Admin is correcting a student's work and with the « display grader's name to student » option activated, the student can't see the name of the corrector.
It works fine when the corrector is a grader.
We seem to be of two minds here (symptomatic of the turnover on this project) - Graders are also referred to as TAs. Admins are also referred to as Instructors.
These models should probably just be renamed to be Grader and Instructor.
When I click on the reuse groups link, the dialog appears but the submit button does nothing. (Firefox and Safari)
I notice the link seems to be missing from the sandbox instance.
For example, take a look at GroupsController.bulk_action. It's absolutely massive, and violates single responsibility principle.
Maybe break this off into chunks, using the GroupsHelper or something.
Same with SubmissionsController.update_submissions. Yeesh.
Modified by g9browni 2 months ago:
GroupsController.global_actions has been broken up as best I could manage. SubmissionsController.update_submissions still needs to be worked on.
Right now, MarkUsLogger strings go through i18n.
Nelle rightly pointed out:
"I really don't think it is a good idea. From my point of view, logging systems should never be translated. If someone, one day, translates Markus into Russian, and some guy has problem with the installation, and the only logs we have are in Russian, there's a high chance that no one will be able to see what was going on."
This is a relatively easy fix - might be good as a "getting my feet wet" ticket.
Byron writes:
"We've had several instance in version 0.7.1 where a grader has flagged a submission as "complete" when they haven't given a mark for at least one rubric element. It seems like that shouldn't be allowed."
When editing a criteria (main/rubrics/index) it is possible to clear all the level fields (name and description) then "save changes" and it will pass.
I would recommend prohibiting empty entry (name at least)
Trying to load a file in the grader view we get the error message: "Could not render this file in the code viewer. Click on the Download button to download this file instead."
After clicking OK, we get the message "redundant UTF-8 sequence" and the Loading Code... wheel continue to show.
Clicking on Download leads to the trace given below.
Checking out the file through svn and checking the file type shows "ISO-8859 English text, with CRLF line terminators" There are non-ASCII characters in the file.
ActiveRecord::RecordNotFound in ResultsController#download
Couldn't find SubmissionFile without an ID
RAILS_ROOT: /data/markus/instance/csc108-2009-09 Application Trace | Framework Trace | Full Trace
/u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1567:in find_from_ids' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:616:infind' /data/markus/instance/csc108-2009-09/app/controllers/results_controller.rb:116:in `download'
/u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1567:in find_from_ids' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:616:infind' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in send' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:inperform_action_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:617:in call_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-
2.3.4/lib/action_controller/filters.rb:610:inperform_action_without_benchmark' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:inms' /usr/lib/ruby/1.8/benchmark.rb:308:in realtime' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:inms' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/rescue.rb:160:inperform_action_without_flash' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/flash.rb:146:in perform_action' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:insend' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in process_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:606:inprocess' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:391:in process' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:386:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:437:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:87:indispatch' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:121:in _call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:130:inbuild_middleware_stack' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/params_parser.rb:15:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/session/abstract_store.rb:122:in call' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:incall' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in cache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:9:incache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:28:in call' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/failsafe.rb:26:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in synchronize' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-
2.3.4/lib/action_controller/dispatcher.rb:106:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/cgi_process.rb:44:indispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:101:in dispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:27:indispatch' /usr/lib/ruby/1.8/mongrel/rails.rb:76:in process' /usr/lib/ruby/1.8/mongrel/rails.rb:74:insynchronize' /usr/lib/ruby/1.8/mongrel/rails.rb:74:in process' /usr/lib/ruby/1.8/mongrel.rb:159:inprocess_client' /usr/lib/ruby/1.8/mongrel.rb:158:in each' /usr/lib/ruby/1.8/mongrel.rb:158:inprocess_client' /usr/lib/ruby/1.8/mongrel.rb:285:in run' /usr/lib/ruby/1.8/mongrel.rb:285:ininitialize' /usr/lib/ruby/1.8/mongrel.rb:285:in new' /usr/lib/ruby/1.8/mongrel.rb:285:inrun' /usr/lib/ruby/1.8/mongrel.rb:268:in initialize' /usr/lib/ruby/1.8/mongrel.rb:268:innew' /usr/lib/ruby/1.8/mongrel.rb:268:in run' /usr/lib/ruby/1.8/mongrel/configurator.rb:282:inrun' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:in each' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:inrun' /usr/lib/ruby/1.8/mongrel/command.rb:212:in `run'
/u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1567:in find_from_ids' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:616:infind' /data/markus/instance/csc108-2009-09/app/controllers/results_controller.rb:116:in download' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:insend' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:1331:in perform_action_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:617:incall_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:610:in perform_action_without_benchmark' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:inperform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in ms' /usr/lib/ruby/1.8/benchmark.rb:308:inrealtime' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.4/lib/active_support/core_ext/benchmark.rb:17:in ms' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/benchmarking.rb:68:inperform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/rescue.rb:160:in perform_action_without_flash' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/flash.rb:146:inperform_action' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:in send' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:532:inprocess_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/filters.rb:606:in process' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:391:inprocess' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/base.rb:386:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:437:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:87:in dispatch' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:121:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-
2.3.4/lib/actioncontroller/dispatcher.rb:130:in build_middleware_stack' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/params_parser.rb:15:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/session/abstract_store.rb:122:incall' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:29:in call' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/query_cache.rb:34:incache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:9:in cache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/query_cache.rb:28:incall' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/failsafe.rb:26:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:insynchronize' /u/drprj/.gem/ruby/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:106:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/cgi_process.rb:44:in dispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:101:indispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.4/lib/action_controller/dispatcher.rb:27:in dispatch' /usr/lib/ruby/1.8/mongrel/rails.rb:76:inprocess' /usr/lib/ruby/1.8/mongrel/rails.rb:74:in synchronize' /usr/lib/ruby/1.8/mongrel/rails.rb:74:inprocess' /usr/lib/ruby/1.8/mongrel.rb:159:in process_client' /usr/lib/ruby/1.8/mongrel.rb:158:ineach' /usr/lib/ruby/1.8/mongrel.rb:158:in process_client' /usr/lib/ruby/1.8/mongrel.rb:285:inrun' /usr/lib/ruby/1.8/mongrel.rb:285:in initialize' /usr/lib/ruby/1.8/mongrel.rb:285:innew' /usr/lib/ruby/1.8/mongrel.rb:285:in run' /usr/lib/ruby/1.8/mongrel.rb:268:ininitialize' /usr/lib/ruby/1.8/mongrel.rb:268:in new' /usr/lib/ruby/1.8/mongrel.rb:268:inrun' /usr/lib/ruby/1.8/mongrel/configurator.rb:282:in run' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:ineach' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:in run' /usr/bin/mongrel_rails:129:inrun' /usr/lib/ruby/1.8/mongrel/command.rb:212:in `run' /usr/bin/mongrel_rails:282
Request
Parameters:
{"commit"=>"Download", "authenticity_token"=>"HqzHOx3y4CQj1JdVTwxzvwbteaI/UD7RN0bAX/77xuI="}
Show session dump
Response
Headers:
{"Content-Type"=>"", "Cache-Control"=>"no-cache"}
Modified by c6conley 5 months ago:
Seems to be a Rails issue - see: https://rails.lighthouseapp.com/projects/8994/tickets/1112-redundant-utf-8-sequence-in-stringto_json
There are errors when upload a rubric file generated by markus.
There are also problems with the errors messages (as it was never tested with yml files, the errors messages displayed concern only CSV file. Therefor, when there is a problem uin a YML file upload, it displays information on how CSV file should be formatted)
I have an assignment set up to be no web submit, and work alone I asked students to log in to find out their repo path. For most students, the repo name is their user id, but for a small number it is group_XXXX? This is puzzling, and a bit problematic.
There doesn't seem to be a way to delete Assignments in the UI. This is pretty low priority, but probably necessary.
Error information for saving the Mark can't pop up correctly.
TypeError (can't convert ActiveRecord::Errors into String): app/controllers/results_controller.rb:208:in update_mark' -e:2:inload' -e:2
Modified by g9jerboa 5 months ago:
I think this has been fixed.
Modified by g9browni 2 months ago:
It is not fixed, I just noticed it happening when I run functional tests with some code modified... makes it hard to figure out what the actual error was!
Git added the possibility to add tags to releases.
Check the file NAMED_REVISIONS to know which commit to tag.
From Byron:
Building lists of submissions, students, etc. is really slow. Speeding them up would be really nice! Do some profiling to find the bottlenecks, build some more indices, ... I don't see anything inherent that should make it this slow.
Modified by anonymous 2 months ago:
loading of submissions view was improved significantly in revision 1376
There doesn't seem to be a way to delete Assignments in the UI. This is pretty low priority, but probably necessary.
Right now, groups are listed as valid, or invalid. We may want to give more feedback on why a particular group is valid - for example, they have been approved by the administrator.
It seems Rails 3 will be going with Bundler. Also, we are getting deprecation warnings for time-warp and db_populate Rails plug-ins. For those 2 plug-ins gems exist, which we can use. Once we use the gems we shouldn't get deprecation warnings anymore.
I think it would be a good idea to use Bundler in future to do gem installation. See http://gembundler.com/rails23.html and http://gembundler.com/rails3.html.
This will also mean to "break" our existing deployment documentation. We should have brand new deployment instructions once MarkUs 1.0 is out. Provided we use sqlite3 as initial developer database setup we should be able to make it easier for new developers to get started, too.
Removing files (the ones we suggest the student to commit) on the assignment page is not possible.
We can add as many files as we want but we can't remove them.
The project page, and all installation documentation assumes that developers know how to use Subversion. This is not always the case - especially when novice developers come on board.
It might be a good idea to include some documentation on how to check out the code - for Linux, Windows, and Mac.
If a user tries to upload a rubric file in YAML and it has bad syntax, the error message displayed is not very user friendly. Right now it just displays the chunk of bad yaml. I couldn't figure out a (good) way to display these error messages.
If the repositories are not created by MarkUs, we currently need to upload a file to create the groups. It would be nice to add all that information in using the add group button to add additional groups.
Are groups without any members supposed to be displayed in the submission view?
See markusproject.org . Each method should have at least some short description as to what it does.
From Byron:
INSTALL DOCUMENTATION:
The config/environments/production.rb file needs to be configured earlier than indicated in the installation documentation. Specifically, you need to decide on the storage location before creating the instructor. You also need to make the directory for the svn storage.
The "secret" is in config/environment.rb, not in config/environments/production.rb as indicated by the install doc.
production.rb/development.rb:
REPOSITORY_EXTERNAL_BASE_URL "only makes sense" if you're using external commits. We should make it more clear that you can just leave it blank, or comment it out if you're never using external commits.
REPOSITORY_PERMISSION_FILE documentation lists two scenarios. In the second one, I think the 'true' should be 'false'.
OTHER:
More help on configuring the mongrel cluster would be nice (ie: comments in the config file).
Create the Graders view:
This will let an instructor assign one or more TAs to a grade entry form.
It may be interesting to display the hour of the server at least to the students.
Evan's suggestion :
Displaying the server time would certainly help deal with students who might complain that according to “their clock” they handed it in on time ;) It could be a good idea...
Here is Severin's answer :
IMO anything more frequent than once a minute would be overkill. But
I don't expect too much overhead for such requests (XHR), since they
wouldn't require DB-queries.
The only thing that didn't appear to work was creating annotations - this is due to Microsoft's implementation of window.getSelection() - might not be able to get around this for a while.
Modified by reid 1 year ago:
It would be useful to know what the problems are on different browsers.
Modified by c6conley 1 year ago:
MarkUs in IE6 is garbled, and essentially useless.
MarkUs in IE7 is surprisingly OK - everything looks box-y, but that's just styling. The only thing that didn't appear to work was creating annotations - this is due to Microsoft's implementation of window.getSelection() - might not be able to get around this for a while.
Modified by c8gehwol 1 year ago:
summary changed from OLM needs to be tested extensively using Internet Explorer to MarkUs needs to be tested extensively using Internet Explorer.
Modified by g9jerboa 1 year ago:
summary changed from MarkUs needs to be tested extensively using Internet Explorer to Make grader view work in IE.
The goal was to have MarkUs working with all major browsers when logged in as a student. That works so far.
The grader view still works in Firefox only. This isn't as easy as plain testing. The aim is to get the grader view working in IE 7+. I'll change the title and leave it unassigned for now.
Modified by g9jerboa 5 months ago:
priority_name changed from medium to high.
This is a cross-browser issue. I think this is important enough to be a high priority ticket.
Modified by benjaminvialle 2 months ago:
milestone changed from someday to June 2010.
Is it working correctly with IE8, which is the latest stable version of Internet Explorer ?
Modified by g9browni 2 months ago:
It doesn't work with IE8, and I envision that it is going to be a lot of work to get around the issue...
Modified by c6conley 9 months ago:
-The detailed view should also have the Grace Credits Used column in it, so move it from the basic Submissions Table to the Detailed Submissions Table when you can.
Steps to reproduce: Select Group and Graders -> Create a new Group-> Expand Graders ->Select one or more Graders and Click on Randomly Assign Graders.
Expected:A pop up confirmation that this action will Assign Graders to Groups without members(Not Valid yet) similar to a warning message when clicks on Valid for a group with no members.
Modified by reid 1 year ago:
A warning message would be nice
At various places in our controllers different flash[] notices are used. For example, there are at least
* flash[:fail_notice]
* flash[:upload_notice]
* flash[:invalid_lines]
* flash[:users_not_found]
* flash[:edit_notice]
I think it would be beneficial if we could come up with a sort of standard set, which we document on the wiki as to how what to use when and how. Have a short description of each and what it does, etc.
This is especially useful for UI refactoring. Assume MarkUs will be undertaken, yet another UI redesign. The person in charge of the UI would know that the documented set has to be implemented. What's more, developers have a place to look at for controller development.
Formatting is not preserved in annotations, so lists of things like:
-This -Is -A -List
Just show up in a line (which is how it'll show up in Dr. Project too, until you look at the text of this comment)
Check out public/javascripts/SourceCodeGlower/AnnotationTextDisplayer.js - this file defines the class that handles the displaying of AnnotationTexts.
Note the displayCollection method, and how it just wraps everything up with
. Here's where the changes should be made.
Possible solutions:
-Instead of modifying AnnotationTextDisplayer, style the annotation_text_display class so that text is preformatted. Then, remove the
's from AnnotationTextDisplayer.
-Do some search/replace in AnnotationTextDisplayer, and replace n with
In #markus on Sept 30th (3:30PM), mikeg1a wrote:
In fact, if you wanted to gnaw on that more from a code standpoint, I'd probably push you to eliminate this whole idea of retrieving a bunch of stuff into an array and then deleting the ones you don't want
Looking at the results_controller code, what I'd probably like to see in the controller is
if current_user.admin? groupings = @assignment.groupings.unmarked end
And then add an unmarked named scope to groupings which would both shove the work down to the database layer, and make the code easier to read
I've noticed that there are large chunks of commented out code at various places of our code base. It's a little confusing to have that code there.
What's more, it might be a bad idea to keep it like that and hand the code over to new developers. It'll definitely improve quality of our code.
Here is the scenario: For A0, Paul wants the students to work alone, but he wants to populate their repositories with some starter code. Students will not be using the web interface to commit files.
The question is when do the repos get created? Shouldn't they get created when the groups are created?
Paul used the following format for uploading a csv groups file: repo_c0foo,repo_c0foo,c0foo repo_c0bar,repo_c0bar,c0bar
However, checking out the repositories doesn't work (403 forbidden). Also clicking on the repo name to get to the repo view yield a MarkUs error.
RuntimeError in SubmissionsController#repo_browser
Repository not found and MarkUs not in authoritative mode! RAILS_ROOT: /data/markus/instance/csc207-2010-09
Application Trace | Framework Trace | Full Trace /data/markus/instance/csc207-2010-09/app/models/group.rb:113:in repo' /data/markus/instance/csc207-2010-09/app/controllers/submissions_controller.rb:70:inrepo_browser'
Request
Parameters:
{"id"=>"1"} Show session dump
Response
Headers:
{"Content-Type"=>"",
"Cache-Control"=>"no-cache"}
RuntimeError in SubmissionsController#repo_browser
Repository not found and MarkUs not in authoritative mode! RAILS_ROOT: /data/markus/instance/csc207-2010-09
Application Trace | Framework Trace | Full Trace /data/markus/instance/csc207-2010-09/app/models/group.rb:113:in repo' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/associations/association_proxy.rb:215:insend' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/associations/association_proxy.rb:215:in method_missing' /data/markus/instance/csc207-2010-09/app/controllers/submissions_controller.rb:70:inrepo_browser' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:1331:in send' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:1331:inperform_action_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/filters.rb:617:in call_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/filters.rb:610:inperform_action_without_benchmark' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:inms' /usr/lib/ruby/1.8/benchmark.rb:308:in realtime' /u/drprj/.gem/ruby/1.8/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:inms' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in perform_action_without_rescue' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:160:inperform_action_without_flash' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/flash.rb:151:in perform_action' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:insend' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:in process_without_filters' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/filters.rb:606:inprocess' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:391:in process'
/u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:386:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/routing/route_set.rb:438:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:87:indispatch' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:121:in _call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:130:inbuild_middleware_stack' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:29:in call' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:29:incall' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in cache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:9:incache' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:28:in call' /u/drprj/.gem/ruby/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/string_coercion.rb:25:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/head.rb:9:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/params_parser.rb:15:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/session/cookie_store.rb:99:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/failsafe.rb:26:incall' /u/drprj/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in call' /u/drprj/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:insynchronize' /u/drprj/.gem/ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in call' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:106:incall' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/cgi_process.rb:44:in dispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:101:indispatch_cgi' /u/drprj/.gem/ruby/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:27:in dispatch' /usr/lib/ruby/1.8/mongrel/rails.rb:76:inprocess' /usr/lib/ruby/1.8/mongrel/rails.rb:74:in synchronize' /usr/lib/ruby/1.8/mongrel/rails.rb:74:inprocess' /usr/lib/ruby/1.8/mongrel.rb:159:in process_client' /usr/lib/ruby/1.8/mongrel.rb:158:ineach' /usr/lib/ruby/1.8/mongrel.rb:158:in process_client' /usr/lib/ruby/1.8/mongrel.rb:285:inrun' /usr/lib/ruby/1.8/mongrel.rb:285:in initialize' /usr/lib/ruby/1.8/mongrel.rb:285:innew' /usr/lib/ruby/1.8/mongrel.rb:285:in run' /usr/lib/ruby/1.8/mongrel.rb:268:ininitialize' /usr/lib/ruby/1.8/mongrel.rb:268:in new' /usr/lib/ruby/1.8/mongrel.rb:268:inrun' /usr/lib/ruby/1.8/mongrel/configurator.rb:282:in run' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:ineach' /usr/lib/ruby/1.8/mongrel/configurator.rb:281:in run' /usr/bin/mongrel_rails:129:inrun' /usr/lib/ruby/1.8/mongrel/command.rb:212:in `run' /usr/bin/mongrel_rails:282
Request
Parameters:
{"id"=>"1"} Show session dump
Modified by reid 2 weeks ago:
This turned out to be mostly a misunderstanding. MarkUs was configured to use external repos, but they hadn't been created yet. There was also some kind of issue on the server unrelated to MarkUs.
It would be nice to have a sensible error message in this case however.
For example, different colours for Criteria that have been marked, different colour for the selected Criteria, etc.
...because right now there's only developer documentation.
Some ideas:
* Perhaps it's a good idea to segment the documentation by user type - Student, Grader, Instructor...
* Documentation should be hosted on markusproject.org, and linked to from installations
views/results/view_marks.html.erb and views/results/edit.html.erb contain a lot of duplicated code for loading annotation/syntaxhighlighter javascript.
This should probably be put in a single place.
Ordering of CSV upload files is configurable for Admin and Students upload, but not for other CSV uploads:
We have file-uploads for:
* Users (Students, TAs, Admins)
* Groups (upload group formations)
* TA-Mapping (upload TAs)
* Rubrics (upload rubrics for marking)
The order in which we expect things is configurable for Admins and Students but not for others. We should probably implement this.
Currently, active and inactive Students are denoted by the "hidden" flag in the User table.
For consistency, this column should really be called "inactive".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.