o ckF[>@sddlZGdddeZzddlmZGdddeZWney-GdddeZYnwGdd d eZGd d d eZ Gd d d e Z Gddde Z Gddde Z GdddeZGdddeZGdddeZGdddeZGddde ZGddde ZGdddeZGd d!d!ee ZGd"d#d#eZGd$d%d%eZGd&d'd'eZGd(d)d)eZGd*d+d+eZGd,d-d-eZGd.d/d/eZGd0d1d1eZGd2d3d3eZGd4d5d5eZGd6d7d7eZ dS)8Nc@s.eZdZdZ d ddZd ddZdd ZdS) Questionz%(items)sFNcC|jt|`dSN__dict__updatevarsself)r identifiercontent answer_spec is_required display_namer5/usr/lib/python3/dist-packages/boto/mturk/question.py__init__szQuestion.__init__cC ||iSr get_as_xmlr labelrrr get_as_params! zQuestion.get_as_paramscCsftd|jtdt|j|j|jg}|jdur#|dtd|jd dd|D}|j t S)NQuestionIdentifier IsRequired DisplayNamecs|]}|VqdSrr.0itemrrr -z&Question.get_as_xml..) SimpleFieldr strr lowerr r rinsertjointemplaterr itemsrrrr$s   zQuestion.get_as_xml)FN)r)__name__ __module__ __qualname__r)rrrrrrrrs   r)etreec@eZdZddZdS) ValidatingXMLcCsDddl}||j}t|}t|}t|}||dS)Nr) urllib2urlopen schema_urlr/parse XMLSchema fromstringr assertValid)r r2schema_src_file schema_docschemadocrrrvalidate5s    ValidatingXML.validateNr,r-r.r=rrrrr13 r1c@r0)r1cCsdSrrr rrrr=?sr>Nr?rrrrr1=r@c@s8eZdZdZdZdeZddZd ddZdd Z d S) ExternalQuestionz: An object for constructing an External Question. z`http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsdz%%(external_url)s%%(frame_height)scCstjj||_||_dSr)xmlsaxsaxutilsescape external_url frame_height)r rGrHrrrrJs zExternalQuestion.__init__cCrrrrrrrrNrzExternalQuestion.get_as_paramscC|jt|Srr)rrArrrrQzExternalQuestion.get_as_xmlN)rB) r,r-r.__doc__r4rr)rrrrrrrrBCs   rBc@r0) XMLTemplatecCrIrrJrArrrrVrKzXMLTemplate.get_as_xmlN)r,r-r.rrrrrrMUs rMc@eZdZdZdZddZdS)r$z A Simple name/value pair that can be easily rendered as XML. >>> SimpleField('Text', 'A text string').get_as_xml() 'A text string' z <%(field)s>%(value)scC||_||_dSr)fieldvaluer rPrQrrrrc zSimpleField.__init__N)r,r-r.rLr)rrrrrr$Zs r$c@eZdZdZddZdS)Binaryz%(type)s%(subtype)s%(url)s%(alt_text)scCrrr)r typesubtypeurlalt_textrrrrkszBinary.__init__N)r,r-r.r)rrrrrrUhs rUc@rT)Listz?A bulleted list suitable for OrderedContent or Overview contentcCsddd|D}d|S)Nrcss|]}d|VqdS)z%sNrrrrrr"sr#z"List.get_as_xml..z%sr(r*rrrrrszList.get_as_xmlN)r,r-r.rLrrrrrrZps rZc@s,eZdZdZdZddZddZddZd S) Applicationz?<%(class_)s>%(content)sz-%(name)s%(value)scKs||_||_||_dSr)widthheight parameters)r r]r^r_rrrr{s zApplication.__init__cCsL|d|j|d|j|jD]\}}|jt}|d|qdS)NWidthHeightApplicationParameter) append_fieldr]r^r_r+parameter_templater)r r namerQrrrget_inner_contents  zApplication.get_inner_contentcCs,t}|||}|jj}|jtSr)OrderedContentrfr __class__r,r)r)r r class_rrrrs   zApplication.get_as_xmlN)r,r-r.r)rdrrfrrrrrr\ws  r\c@s4eZdZdZdeZddZd ddZddZd S) HTMLQuestionz\http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2011-11-11/HTMLQuestion.xsdz%%(html_form)s]]>%%(frame_height)scCrOr) html_formrH)r rkrHrrrrrSzHTMLQuestion.__init__cCrrrrrrrrrzHTMLQuestion.get_as_paramscCrIrrJrArrrrrKzHTMLQuestion.get_as_xmlN)rj) r,r-r.r4rr)rrrrrrrrjs    rjc(eZdZfddZfddZZS) JavaAppletcs&||_||_tt|j|i|dSr)pathfilenamesuperrmr)r rnroargskwargsrhrrrszJavaApplet.__init__cs6t}|d|j|d|jtt||dS)N AppletPathAppletFilename)rgrcrnrorprmrfr r rsrrrfszJavaApplet.get_inner_contentr,r-r.rrf __classcell__rrrsrrms rmcrl)Flashcs ||_tt|j|i|dSr)rXrpryr)r rXrqrrrsrrrszFlash.__init__cs(t}|d|jtt||dS)N FlashMovieURL)rgrcrXrpryrfrvrsrrrfszFlash.get_inner_contentrwrrrsrrys ryc@rN)FormattedContentzkhttp://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/FormattedContentXHTMLSubset.xsdz<cC ||_dSr)r rvrrrr zFormattedContent.__init__N)r,r-r.r4r)rrrrrr{s r{c@eZdZddZddZdS)rgcCs|t||dSr)appendr$rRrrrrczOrderedContent.append_fieldcCsddd|DS)Nrcsrrrrrrrr"r#z,OrderedContent.get_as_xml..r[rArrrrrzOrderedContent.get_as_xmlN)r,r-r.rcrrrrrrgs rgcs*eZdZdZdddZfddZZS)Overviewz %(content)scCrrrrrrrrrzOverview.get_as_paramsctt|}|jtSr)rprrr)rrvrsrrr zOverview.get_as_xml)r)r,r-r.r)rrrxrrrsrrs rc@s.eZdZdZdZdeZddZddZdS) QuestionForma From the AMT API docs: The top-most element of the QuestionForm data structure is a QuestionForm element. This element contains optional Overview elements and one or more Question elements. There can be any number of these two element types listed in any order. The following example structure has an Overview element and a Question element followed by a second Overview element and Question element--all within the same QuestionForm. :: [...] [...] [...] [...] [...] QuestionForm is implemented as a list, so to construct a QuestionForm, simply append Questions and Overviews (with at least one Question). z\http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionForm.xsdz>%%(items)scCs$tdd|Dotdd|DS)Ncss|]}t|tVqdSr) isinstancerrrrrr"sz(QuestionForm.is_valid..css|] }t|ttfVqdSr)rrrrrrrr"s)anyallrArrris_validszQuestionForm.is_validcCs0|sJdddd|D}|jtS)Nz&QuestionForm contains invalid elementsrcsrrrrrrrr"r#z*QuestionForm.get_as_xml..)rr( xml_templaterr*rrrrs zQuestionForm.get_as_xmlN) r,r-r.rLr4rrrrrrrrrs !  rc eZdZdZfddZZS)QuestionContentz.%(content)scrr)rprrr)rrvrsrrrrzQuestionContent.get_as_xmlr,r-r.r)rrxrrrsrrrc@ eZdZdZddZddZdS)AnswerSpecificationz3%(spec)scCr|r)specr rrrrrr}zAnswerSpecification.__init__cCs|j}|jtSr)rrr)rrrrrrs  zAnswerSpecification.get_as_xmlNr,r-r.r)rrrrrrr s rcr) Constraintsz&%(content)scrr)rprrr)rrvrsrrrrzConstraints.get_as_xmlrrrrsrrrrc@r~) ConstraintcC&t|j|j}ddd|D}|S)N cs(|]\}}|durd||fVqdS)Nz%s="%d"rr rerQrrrr"" z,Constraint.get_attributes..zipattribute_namesattribute_valuesr(r pairsattrsrrrget_attributes   zConstraint.get_attributescCs|}|jtSr)rr)r)r rrrrr)s zConstraint.get_as_xmlN)r,r-r.rrrrrrrs rc@eZdZdZdZdddZdS)NumericConstraint)minValuemaxValuezNcC||f|_dSrr)r min_value max_valuerrrr2rKzNumericConstraint.__init__NNr,r-r.rr)rrrrrr.rc@r)LengthConstraint) minLength maxLengthzNcCrrr)r min_length max_lengthrrrr:rKzLengthConstraint.__init__rrrrrrr6rrc@s&eZdZdZdZdddZddZdS) RegExConstraint)regex errorTextflagszNcCs|||f|_dSrr)r pattern error_textrrrrrBszRegExConstraint.__init__cCr)Nrcsr)Nz%s="%s"rrrrrr"Grz1RegExConstraint.get_attributes..rrrrrrErzRegExConstraint.get_attributesr)r,r-r.rr)rrrrrrr>s   rc@s"eZdZdZdddZddZdS) NumberOfLinesSuggestionz@%(num_lines)srcCr|r) num_linesr rrrrrRr}z NumberOfLinesSuggestion.__init__cCs|j}|jtSr)rr)rrrrrrUs z"NumberOfLinesSuggestion.get_as_xmlN)rrrrrrrOs  rc@s"eZdZdZdddZddZdS)FreeTextAnswerz*%(items)sNcCs,||_|dur t|_nt||_||_dSr)defaultr constraintsr)r rrrrrrr]s    zFreeTextAnswer.__init__cCsV|jg}|jr|td|j|jr|t|jddd|D}|jtS)N DefaultTextrcsrrrrrrrr"kr#z,FreeTextAnswer.get_as_xml..) rrrr$rrr(r)rr*rrrres zFreeTextAnswer.get_as_xml)NNNrrrrrrZs  rc@r)FileUploadAnswerz%(max_bytes)d%(min_bytes)dcCs6d|kr|krdksJJ||_||_dS)Nri5w) min_bytes max_bytes)r rrrrrrrs& zFileUploadAnswer.__init__cCrIrrJrArrrrwrKzFileUploadAnswer.get_as_xmlNrrrrrros rc@sFeZdZdZdZdZdZdZdZdZ gdZ d Z dddZ ddZ d S)SelectionAnswerzw A class to generate SelectionAnswer XML data structures. Does not yet implement Binary selection options. zB%s%s%szF%s%sz <%s>%sz%%sz)%sz)%s) radiobuttondropdowncheckboxlistcombobox multichooserOtherSelectionrNtextFcCs|dur|tjvr ||_ntd|dtjfd|_|dur$td||_||_||_t||jks;Jd|j||_ ||_ dS)Nz.style '%s' not recognized; should be one of %sz, z_SelectionAnswer.__init__(): selections must be a non-empty list of (content, identifier) tuplesz*# of selections is less than minimum of %d) rACCEPTED_STYLESstyle_suggestion ValueErrorr( selectionsmin_selectionsmax_selectionslenrVother)r minmaxstylerrVrrrrrs  zSelectionAnswer.__init__c Cs|jdkrd}n|jdkrd}n tdt|jd}|jD]}tj||d|f}tj|d|f}||7}q|jr[t|jd rWt |jt sKJd ||j d d 7}n|d 7}|j durgtj|j }nd}|j dkr}tj|j}|tj|j7}nd}tj|||f}|S)NrTextbinaryrUz3illegal type: %s; must be either 'text' or 'binary'rrrrz+OtherSelection can only be a FreeTextAnswerrrzr)rVrr%rrSELECTION_VALUE_XML_TEMPLATESELECTION_XML_TEMPLATErhasattrrrrreplacerSTYLE_XML_TEMPLATE MIN_SELECTION_COUNT_XML_TEMPLATEr MAX_SELECTION_COUNT_XML_TEMPLATErSELECTIONANSWER_XML_TEMPLATE) r TYPE_TAGselections_xmltpl value_xml selection_xml style_xml count_xmlretrrrrs0        zSelectionAnswer.get_as_xml)rrNNrF)r,r-r.rLrrrrrrrOTHER_SELECTION_ELEMENT_NAMErrrrrrr{s  r)!xml.sax.saxutilsrCobjectrlxmlr/r1 ImportErrorrBrMr$rUrrZr\rjrmryr{rgrrrrrrrrrrrrrrrrrs@      2