moschlar / sauce Goto Github PK
View Code? Open in Web Editor NEW⛔️ DEPRECATED - System for AUtomated Code Evaluation
License: GNU Affero General Public License v3.0
⛔️ DEPRECATED - System for AUtomated Code Evaluation
License: GNU Affero General Public License v3.0
Should be a simple ToscaWidgets widget with some useful validation.
Should show no value in forms and only change the passwort in the database when something is entered.
Sheet list probably not, too.
Granted to only the event teacher(s).
Allow students to submit submissions even if end_time of the event/assignment is reached.
This enables teachers to accept submissions (probably with some scoring penalty) in any case and it can lessen the impact of technical difficulties on heavy-duty submission times.
But it should be made sure that the last state of in-time submission is saved before the over-time submission is saved and the teacher get's to see a warning and the possibility to browse this kind of history.
Makes it easier to create a new line comments.
So that you can only view tests for a given assignment or sheet.
difflib can accept a custom linejunk, so we only need to separate the splitting from the comment parsing.
The issue occurs neither in other browsers or other OSes...
For educational purposes, tests have to be fail-suppressing (e.g. leave non-parsed chunks as they are) and need to return much more information about failures that occurred.
We could cumulate exceptions from parsing and store them. Then we can display educational hints based on the types of exceptions that happened.
It's propably not avoidable to grant access to all teachers (and students) in EventAdmin.
But that wouldn't be too severe, too.
In Addition to downloading the source code it would be nice to display it highlighted on a whole page without any other UI elements.
Due to some problems with sqlalchemy.url = sqlite:///:memory:
, the test suite is mostly broken atm.
For event teacher(s) and the lesson teacher(s).
The flash message after deleting a Submission says Resetted
where it should say something like Submission deleted
So that you can see which test it's about.
Simple mailto or mail form.
For uploading test data by both ways, while always keeping the data.
The model can surely be improved by using advanced SQLAlchemy techniques like hybrid attributes.
Static pages that need to be written with meaningful content:
/lesson/1/submissions
should be the primary place for a Teacher to see submissions and perform judgements, not his own profile page.
When using umlauts in a submission or uploading an utf-8 file, SAUCE gets broken.
Module weberror.errormiddleware:162 in __call__
>> app_iter = self.application(environ, sr_checker)
Module tg.configuration:877 in remover
>> return app(environ, start_response)
Module repoze.tm:24 in __call__
>> result = self.application(environ, save_status_and_headers)
Module repoze.who.middleware:107 in __call__
>> app_iter = app(environ, wrapper.wrap_start_response)
Module tw.core.middleware:46 in __call__
>> return self.wsgi_app(environ, start_response)
Module tw.core.middleware:72 in wsgi_app
>> resp = req.get_response(self.application)
Module webob.request:1053 in get_response
>> application, catch_exc_info=False)
Module webob.request:1022 in call_application
>> app_iter = application(self.environ, start_response)
Module tw.core.resource_injector:70 in _injector
>> resp = req.get_response(app)
Module webob.request:1053 in get_response
>> application, catch_exc_info=False)
Module webob.request:1022 in call_application
>> app_iter = application(self.environ, start_response)
Module beaker.middleware:73 in __call__
>> return self.app(environ, start_response)
Module beaker.middleware:152 in __call__
>> return self.wrap_app(environ, session_start_response)
Module routes.middleware:131 in __call__
>> response = self.app(environ, start_response)
Module pylons.wsgiapp:107 in __call__
>> response = self.dispatch(controller, environ, start_response)
Module pylons.wsgiapp:312 in dispatch
>> return controller(environ, start_response)
Module sauce.lib.base:61 in __call__
>> return TGController.__call__(self, environ, start_response)
Module pylons.controllers.core:211 in __call__
>> response = self._dispatch_call()
Module pylons.controllers.core:162 in _dispatch_call
>> response = self._inspect_call(func)
Module pylons.controllers.core:105 in _inspect_call
>> result = self._perform_call(func, args)
Module tg.controllers.dispatcher:258 in _perform_call
>> r = self._call(func, params, remainder=remainder)
Module tg.controllers.decoratedcontroller:120 in _call
>> output = controller_callable(*remainder, **dict(params))
Module sauce.controllers.submissions:289 in edit
>> (compilation, testruns, submitted, result) = self.submission.run_tests(submit)
Module sauce.model.submission:65 in run_tests
>> with Runner(self) as r:
Module sauce.lib.runner:233 in __init__
>> srcfd.write(submission.source)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 237: ordinal not in range(128)
and
Module weberror.errormiddleware:162 in __call__
>> app_iter = self.application(environ, sr_checker)
Module tg.configuration:877 in remover
>> return app(environ, start_response)
Module repoze.tm:24 in __call__
>> result = self.application(environ, save_status_and_headers)
Module repoze.who.middleware:107 in __call__
>> app_iter = app(environ, wrapper.wrap_start_response)
Module tw.core.middleware:46 in __call__
>> return self.wsgi_app(environ, start_response)
Module tw.core.middleware:72 in wsgi_app
>> resp = req.get_response(self.application)
Module webob.request:1053 in get_response
>> application, catch_exc_info=False)
Module webob.request:1022 in call_application
>> app_iter = application(self.environ, start_response)
Module tw.core.resource_injector:70 in _injector
>> resp = req.get_response(app)
Module webob.request:1053 in get_response
>> application, catch_exc_info=False)
Module webob.request:1022 in call_application
>> app_iter = application(self.environ, start_response)
Module beaker.middleware:73 in __call__
>> return self.app(environ, start_response)
Module beaker.middleware:152 in __call__
>> return self.wrap_app(environ, session_start_response)
Module routes.middleware:131 in __call__
>> response = self.app(environ, start_response)
Module pylons.wsgiapp:107 in __call__
>> response = self.dispatch(controller, environ, start_response)
Module pylons.wsgiapp:312 in dispatch
>> return controller(environ, start_response)
Module sauce.lib.base:61 in __call__
>> return TGController.__call__(self, environ, start_response)
Module pylons.controllers.core:211 in __call__
>> response = self._dispatch_call()
Module pylons.controllers.core:162 in _dispatch_call
>> response = self._inspect_call(func)
Module pylons.controllers.core:105 in _inspect_call
>> result = self._perform_call(func, args)
Module tg.controllers.dispatcher:258 in _perform_call
>> r = self._call(func, params, remainder=remainder)
Module tg.controllers.decoratedcontroller:142 in _call
>> response = self._render_response(controller, output)
Module tg.controllers.decoratedcontroller:331 in _render_response
>> **render_params)
Module tg.render:188 in render
>> kwargs['result'] = render_function(template_name, tg_vars, **kwargs)
Module tg.render:428 in render_mako
>> cache_type=cache_type, cache_expire=cache_expire)
Module tg.render:253 in cached_template
>> return render_func()
Module tg.render:425 in render_template
>> return literal(template.render_unicode(**globs))
Module mako.template:406 in render_unicode
>> as_unicode=True)
Module mako.runtime:764 in _render
>> **_kwargs_for_callable(callable_, data))
Module mako.runtime:796 in _render_context
>> _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
Module mako.runtime:822 in _exec_template
>> callable_(context, *args, **kwargs)
Module _home_paster_tg2env_SAUCE_sauce_templates_master_mak:100 in render_body
>> __M_writer(escape(self.body()))
Module _home_paster_tg2env_SAUCE_sauce_templates_submission_edit_mak:71 in render_body
>> __M_writer(c.form(c.options, child_args=c.child_args) )
Module tw.core.base:544 in __call__
>> return self.display(value, **kw)
Module tw.core.base:541 in display
>> return super(Widget, self).display(**kw)
Module tw.core.view:243 in display
>> return tw.framework.engines.display(self, **kw)
Module tw.core.view:36 in _renderer
>> output = renderer(info=kw, template=template)
Module tw.core.view:160 in _render_xhtml
>> return engine.render(**kw)
Module mako.ext.turbogears:56 in render
>> return template.render(**info)
Module mako.template:397 in render
>> return runtime._render(self, self.callable_, args, data)
Module mako.runtime:764 in _render
>> **_kwargs_for_callable(callable_, data))
Module mako.runtime:796 in _render_context
>> _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
Module mako.runtime:822 in _exec_template
>> callable_(context, *args, **kwargs)
Module _tw_forms_templates_table_form_mak:141 in render_body
Module tw.core.base:541 in display
>> return super(Widget, self).display(**kw)
Module tw.core.view:243 in display
>> return tw.framework.engines.display(self, **kw)
Module tw.core.view:36 in _renderer
>> output = renderer(info=kw, template=template)
Module tw.core.view:160 in _render_xhtml
>> return engine.render(**kw)
Module mako.ext.turbogears:56 in render
>> return template.render(**info)
Module mako.template:397 in render
>> return runtime._render(self, self.callable_, args, data)
Module mako.runtime:764 in _render
>> **_kwargs_for_callable(callable_, data))
Module mako.runtime:796 in _render_context
>> _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
Module mako.runtime:822 in _exec_template
>> callable_(context, *args, **kwargs)
Module _tw_forms_templates_textarea_mak:46 in render_body
Module tw.core.mako_util:37 in content
>> return escape(unicode(value))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 228: ordinal not in range(128)
This should work but is not tested in any way yet.
The administration items should be visible, of course.
This will be seperate for event_admins and lesson_admins.
(without using a student dummy account)
Make submitted source code files downloadable.
Including one especially for bulk-creation of teams/students for a lesson.
Atm its either broken or doesn't respect the additional flags like sorting (Issue #4)
Navigation has to be reworked again, since the CrudRestController stuff uses an own menu implementation on the left side.
There is no filtering by the lesson!
Should be customizable
The SelectFields in sproxed Forms do not respect the filters used for the respecting Tables.
At the moment, using Dojo formbases renders the TableForm too ugly.
Explain the meaning of the columns to the user.
A Teacher should always be able to test Submissions, regardless of activeness of Assignment.
SubmissionController flash messages must be more senseful and sometimes ignorable.
E.g. don't warn the teacher for his own submissions.
SubmissionWidget Submit button should be clickable with a javascript alert if tests not successful.
Make it possible to compare output and test data after sorting it.
Model has attribute since 34697e8 .
ATM, especially the model uses String and Text data types in text columns.
The application shall use unicode strings everywhere.
Currently, template code may contain something like
% if submission.assignment.sheet.event:
${submission.assignment.sheet.event}
% endif
I think it would be more appropriate to pass all needed top-level elements (at least in the main template, not necessarily in the included functions or master template) from the controller to perform all consistency checking there.
Then the template would only have to check
% if event:
Otherwise, obscure issues, where an assignment is created without a sheet can happen.
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.