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
Atm its either broken or doesn't respect the additional flags like sorting (Issue #4)
So that you can only view tests for a given assignment or sheet.
Make it possible to compare output and test data after sorting it.
Model has attribute since 34697e8 .
Explain the meaning of the columns to the user.
The model can surely be improved by using advanced SQLAlchemy techniques like hybrid attributes.
Simple mailto or mail form.
Granted to only the event teacher(s).
(without using a student dummy account)
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:
In Addition to downloading the source code it would be nice to display it highlighted on a whole page without any other UI elements.
For uploading test data by both ways, while always keeping the data.
difflib can accept a custom linejunk, so we only need to separate the splitting from the comment parsing.
So that you can see which test it's about.
Due to some problems with sqlalchemy.url = sqlite:///:memory:
, the test suite is mostly broken atm.
Otherwise, obscure issues, where an assignment is created without a sheet can happen.
There is no filtering by the lesson!
/lesson/1/submissions
should be the primary place for a Teacher to see submissions and perform judgements, not his own profile page.
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.
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.
Make submitted source code files downloadable.
Static pages that need to be written with meaningful content:
For event teacher(s) and the lesson teacher(s).
Makes it easier to create a new line comments.
This should work but is not tested in any way yet.
ATM, especially the model uses String and Text data types in text columns.
The application shall use unicode strings everywhere.
Should be customizable
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.
The issue occurs neither in other browsers or other OSes...
Including one especially for bulk-creation of teams/students for a lesson.
The SelectFields in sproxed Forms do not respect the filters used for the respecting Tables.
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.
The administration items should be visible, of course.
This will be seperate for event_admins and lesson_admins.
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)
At the moment, using Dojo formbases renders the TableForm too ugly.
The flash message after deleting a Submission says Resetted
where it should say something like Submission deleted
Sheet list probably not, too.
Navigation has to be reworked again, since the CrudRestController stuff uses an own menu implementation on the left side.
It's propably not avoidable to grant access to all teachers (and students) in EventAdmin.
But that wouldn't be too severe, too.
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.