Skip to content

Instantly share code, notes, and snippets.

@ralphbean
Forked from moschlar/submission.py
Created May 30, 2012 20:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ralphbean/2838863 to your computer and use it in GitHub Desktop.
Save ralphbean/2838863 to your computer and use it in GitHub Desktop.
A ToscaWidgets2 widget that needs a dynamic SelectField and does not work :(
# -*- coding: utf-8 -*-
'''
Created on 17.03.2012
@author: moschlar
'''
import tw2.core as twc
import tw2.forms as twf
import tw2.sqla as twsa
import tw2.bootstrap as twb
from sauce.model import Language, Assignment
class DbSelectionField(twf.SelectionField):
entity = twc.Param('SQLAlchemy mapped class to use', request_local=False)
query = twc.Param(request_local=False)
def prepare(self):
self.options = [(x.id, unicode(x)) for x in self.query.all()]
super(DbSelectionField, self).prepare()
class LanguageSelectField(twb.SingleSelectField, DbSelectionField):
@classmethod
def post_define(cls):
if getattr(cls, 'entity', None):
cls.validator = twsa.RelatedValidator(entity=cls.entity)
class SubmissionForm(twb.HorizontalForm):
assignment_id = twf.HiddenField()
submission_id = twf.HiddenField()
filename = twb.TextField()
source = twb.TextArea()
source_file = twb.FileField()
language_id = LanguageSelectField(entity=Language)
def prepare(self):
#self.language_id.query = Language.query.filter(
self.child.c.language_id.query = Language.query.filter(
Language.id.in_(Assignment.query.get(self.value.assignment_id).allowed_languages))
super(SubmissionForm, self).prepare()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment