def get_operation_list_schema(): """ Build a schema listing operations """ schema = BaseListsSchema().clone() del schema['search'] schema.insert( 0, colander.SchemaNode( colander.Boolean(), name='include_associated', title="", label=u"Inclure les opérations associées à une entreprise", default=True, missing=colander.drop, ) ) schema.insert( 0, colander.SchemaNode( colander.String(), name='analytical_account', title="", widget=deferred_analytical_account_widget, missing=colander.drop, ) ) schema.insert( 0, colander.SchemaNode( colander.String(), name='general_account', title="", widget=deferred_general_account_widget, missing=colander.drop, ) ) schema.insert( 0, colander.SchemaNode( colander.Integer(), name='company_id', title="", widget=deferred_company_id_widget, missing=colander.drop ) ) return schema
class ListCommentSchema(PaginatedSchema, SearchableSchema): """An API schema for bodhi.server.services.comments.query_comments().""" updates = Updates( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) packages = Packages( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) user = Users( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) update_owner = Users( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) ignore_user = Users( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) anonymous = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), location="querystring", missing=None, ) since = colander.SchemaNode( colander.DateTime(), location="querystring", missing=None, )
class ExpenseConfig(colander.MappingSchema): """ Schema for the configuration of different expense types """ id = forms.id_node() active = colander.SchemaNode( colander.Boolean(), title=u"Actif", default=True, description=u"En décochant cette entrée, elle n'apparaîtra plus dans \ l'interface, mais restera associée aux notes de frais existantes.") label = colander.SchemaNode(colander.String(), title=u"Libellé", validator=colander.Length(max=50)) code = colander.SchemaNode(colander.String(), title=u"Compte de charge de la dépense", validator=colander.Length(max=15)) code_tva = colander.SchemaNode(colander.String(), title=u"Code TVA (si nécessaire)", missing="", validator=colander.Length(max=15)) compte_tva = colander.SchemaNode(colander.String(), title=u"Compte de TVA déductible", missing="", validator=colander.Length(max=15)) contribution = colander.SchemaNode( colander.Boolean(), title=u"Contribution", description=u"Ce type de frais est-il intégré dans la contribution \ à la CAE ?", )
def __init__(self, *args, **kw): super().__init__(*args, **kw) self.available_types: List[str] = [] self._add_value_node("string", colander.String()) self._add_value_node("liste", colander.String()) self._add_value_node("boolean", colander.Boolean()) self._add_value_node("int", colander.Int()) self._add_value_node("float", colander.Float()) self._add_value_node("url", colander.String(), validator=url) self._add_value_node("json", colander.String(), widget=TextAreaWidget(rows=10), validator=json_validator)
class BaseLineSchema(colander.MappingSchema): """ Base Expenseline schema """ date = forms.today_node(missing=forms.deferred_today) category = colander.SchemaNode( colander.String(), validator=colander.OneOf(('1', '2')) ) description = colander.SchemaNode(colander.String(), missing=u'') valid = colander.SchemaNode(colander.Boolean(), missing=False) type_id = colander.SchemaNode( colander.Integer(), validator=deferred_type_id_validator, )
def __init__(self, *args, **kw): super().__init__(*args, **kw) self.available_types = [] self._add_value_node('string', colander.String()) self._add_value_node('liste', colander.String()) self._add_value_node('boolean', colander.Boolean()) self._add_value_node('int', colander.Int()) self._add_value_node('float', colander.Float()) self._add_value_node('url', colander.String(), validator=url) self._add_value_node('json', colander.String(), widget=TextAreaWidget(rows=10), validator=json_validator)
class BannerSchema(CSRFSchema): title = colander.SchemaNode(colander.String()) image = colander.SchemaNode( deform.FileData(), widget=deform.widget.FileUploadWidget(tmpstore), validator=image_validator, missing=None ) url = colander.SchemaNode(colander.String(), validator=url_validator) visible = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget(), default=True )
class SchemaValidator(colander.MappingSchema): project = colander.SchemaNode(ProjectRef()) name = colander.SchemaNode(colander.String(), validator=database_name) label = colander.SchemaNode(colander.String(), validator=colander.Length(min=3)) label_in = colander.SchemaNode(colander.String(), missing=None, validator=colander.Length(min=3)) label_out = colander.SchemaNode(colander.String(), missing=None, validator=colander.Length(min=3)) hidden = colander.SchemaNode(colander.Boolean(), missing=False) obj = colander.SchemaNode(colander.String(), validator=colander.OneOf(['entity', 'relation'])) attributes = Attributes()
class ContactFormSchema(ContentSchema): recipient = colander.SchemaNode(colander.String()) body = colander.SchemaNode( colander.String(), widget=RichTextWidget(theme='advanced', width=790, height=500), missing=u"", ) show_attachment = colander.SchemaNode( colander.Boolean(), title=_(u"Show attachment"), description=_(u"If activated, the user can upload an attachment."), default=True, missing=True, )
def setUp(self): super(PatchTest, self).setUp() self.stored = self.model.create_record({}) self.resource.record_id = self.stored['id'] self.resource.request.json = {'data': {'position': 10}} schema = ResourceSchema() schema.add( colander.SchemaNode(colander.Boolean(), name='unread', missing=colander.drop)) schema.add( colander.SchemaNode(colander.Int(), name='position', missing=colander.drop)) self.resource.mapping = schema self.result = self.resource.patch()['data']
class AuthSchema(BaseAuthSchema): """ Schema for authentication form """ nextpage = colander.SchemaNode( colander.String(), widget=deform.widget.HiddenWidget(), missing=colander.drop, ) remember_me = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=u"Rester connecté", title="", missing=False, )
class ListSchema(colander.Schema): tahun_fltr = colander.SchemaNode( colander.Integer(), title="Tahun", oid="tahun_fltr", ) tanggal_fltr = colander.SchemaNode( colander.Date(), missing=colander.drop, oid="tanggal_fltr", ) tanggal_to_fltr = colander.SchemaNode( colander.Date(), oid="tanggal_to_fltr", ) posted_fltr = colander.SchemaNode(colander.Boolean(), oid='posted_fltr')
class CommentSchema(VisualisableElementSchema): """Schema for comment""" name = NameSchemaNode(editing=context_is_a_comment, ) intention = colander.SchemaNode(colander.String(), widget=intention_choice, title=_('Intention'), description=_('Choose your intention'), default=_('Remark')) associated_contents = colander.SchemaNode( colander.Set(), widget=relatedcontents_choice, title=_('Associated contents'), description=_('Choose contents to associate'), missing=[], default=[], ) files = colander.SchemaNode( colander.Sequence(), colander.SchemaNode(ObjectData(File), name=_("File"), widget=get_file_widget()), widget=FilesWidget( add_subitem_text_template='', item_css_class="files-block comment-form-group comment-files"), missing=[], description=_('Add files to your comment'), title=_('Attached files'), ) comment = colander.SchemaNode(colander.String(), validator=colander.Length(max=2000), widget=comment_textarea, title=_("Message")) anonymous = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget( item_css_class="comment-form-group comment-anonymous-form"), label=_('Remain anonymous'), description=_('Check this box if you want to remain anonymous.'), title='', missing=False, default=False)
class AdvertisingSchema(VisualisableElementSchema, SearchableEntitySchema): """Schema for advertising""" visibility_dates = colander.SchemaNode( colander.String(), validator=dates_validator, widget=DateIcalWidget(), title=_('Dates'), ) request_quotation = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=_('Request for quotation'), title='', missing=False )
class PaymentSchema(colander.MappingSchema): """ colander schema for payment recording """ come_from = forms.come_from_node() bank_remittance_id = colander.SchemaNode( colander.String(), title=u"Identifiant de la remise en banque", description=u"Ce champ est un indicateur permettant de \ retrouver la remise en banque à laquelle cet encaissement est associé", default=deferred_bank_remittance_id_default, ) amount = colander.SchemaNode( AmountType(5), title=u"Montant de l'encaissement", validator=deferred_total_validator, default=deferred_amount_default, ) date = forms.today_node() mode = colander.SchemaNode( colander.String(), title=u"Mode de paiement", widget=deferred_payment_mode_widget, validator=deferred_payment_mode_validator, ) bank_id = colander.SchemaNode( colander.Integer(), title=u"Banque", missing=colander.drop, widget=deferred_bank_widget, validator=deferred_bank_validator, default=forms.get_deferred_default(BankAccount), ) tva_id = colander.SchemaNode(colander.Integer(), title=u"Tva liée à cet encaissement", widget=forms.get_deferred_select( Tva, mandatory=True, keys=('id', 'name')), validator=deferred_tva_id_validator) resulted = colander.SchemaNode( colander.Boolean(), title=u"Soldé", description="""Indique que le document est soldé ( ne recevra plus de paiement), si le montant indiqué correspond au montant de la facture celle-ci est soldée automatiquement""", default=False, )
class NewsletterRecConf(Schema): """Schema for newsletter conf""" recurrence = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=_('Recurring automatic sending'), description=_('Activate the automatic sending'), title='', missing=False) sending_date = colander.SchemaNode(colander.Date(), title=_('Next sending date')) recurrence_nb = colander.SchemaNode(colander.Int(), title=_('Frequency/days'), default=7)
class NotificationConfigurationSchema(Schema): """Schema for site configuration.""" activate_push_notification = colander.SchemaNode( colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=_('Activate the push notifications on the browser'), title='', missing=False) app_id = colander.SchemaNode(colander.String(), title=_('Application id'), missing="") app_key = colander.SchemaNode(colander.String(), title=_('REST API Key'), missing="")
class CreateAuthClientSchema(CSRFSchema): name = colander.SchemaNode( colander.String(), title=_("Name"), hint=_("This will be displayed to users in the " "authorization prompt"), ) authority = colander.SchemaNode( colander.String(), title=_("Authority"), hint=_("Set of users whose data this client " "can interact with"), ) grant_type = colander.SchemaNode( GrantTypeSchemaType(), missing=None, title=_("Grant type"), hint=_( '"authorization_code" for most applications, ' '"jwt_bearer" for keys for JWT grants used by publishers, ' '"client_credentials" for allowing access to the user creation API' ), ) trusted = colander.SchemaNode( colander.Boolean(), missing=False, widget=deform.widget.CheckboxWidget( omit_label=False, css_class="form-checkbox--inline" ), title=_("Trusted ⚠️"), hint=_( "Trusted clients do not require user approval. " "⚠️ Only enable this for official Hypothesis clients." ), ) redirect_url = colander.SchemaNode( colander.String(), missing=None, title=_("Redirect URL"), hint=_( "The browser will redirect to this URL after " 'authorization. Required if grant type is "authorization_code"' ), )
class InvitationSchema(PersonSchema): """Schema for invitation""" roles = colander.SchemaNode( colander.Set(), widget=roles_choice, validator=colander.All(roles_validator), title=_('Roles'), missing=DEFAULT_ROLES, default=DEFAULT_ROLES, ) ismanager = colander.SchemaNode(colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=_('Is the manager'), title='', missing=False)
class LineItemSchema(colander.MappingSchema): item_id = colander.SchemaNode(colander.String(), validator=colander.Length(max=31), missing=colander.drop) name = colander.SchemaNode(colander.String(), validator=colander.Length(max=31), missing=colander.drop) description = colander.SchemaNode(colander.String(), validator=colander.Length(max=255), missing=colander.drop) quantity = colander.SchemaNode(colander.Integer(), validator=colander.Range(min=0, max=99), missing=colander.drop) unit_price = colander.SchemaNode(colander.Decimal('0.01'), validator=colander.Range(min=0), missing=colander.drop) taxable = colander.SchemaNode(colander.Boolean(), missing=colander.drop)
def get_list_schema(company=False): """ Return a schema for filtering workshop list """ schema = lists.BaseListsSchema().clone() schema.insert( 0, forms.today_node( name='date', default=colander.null, missing=colander.drop, description=u"Date de l'atelier", widget_options={'css_class': 'input-medium search-query'}, )) if not company: schema.insert(0, participant_filter_node_factory(name='participant_id')) notfilled_node = colander.SchemaNode( colander.Boolean(), name='notfilled', title="", description=u"N'afficher que les ateliers non renseignés", missing=colander.drop, ) schema.insert(1, notfilled_node) year = forms.year_select_node( name='year', query_func=get_invoice_years, widget_options={'default_val': (-1, u"Toutes les années")}, missing=colander.null, description=u"Année") schema.insert(0, year) info_id_1 = colander.SchemaNode( colander.Integer(), name='info_1_id', missing=colander.drop, widget=deferred_filter_info1, ) schema.insert(0, info_id_1) schema['search'].description = u"Intitulé de l'atelier" return schema
class ListReleaseSchema(PaginatedSchema): """ An API schema for listing releases. This schema is used by bodhi.server.services.releases.query_releases_html() and bodhi.server.services.releases.query_releases_json(). """ ids = ReleaseIds( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) name = colander.SchemaNode( colander.String(), location="querystring", missing=None, ) updates = Updates( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) packages = Packages( colander.Sequence(accept_scalar=True), location="querystring", missing=None, preparer=[util.splitter], ) state = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(ReleaseState.values())), missing=None, ) exclude_archived = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), location="querystring", missing=None, )
class Account(colander.MappingSchema): """ { "name": "UniqueNameNoSpaces", "full_name": "Account name with spaces", "active": True, "website": "http://www.example.com", "email": "*****@*****.**" "vat": 21 } """ name = colander.SchemaNode(colander.String()) full_name = colander.SchemaNode(colander.String()) email = colander.SchemaNode(colander.Email()) active = colander.SchemaNode(colander.Boolean()) website = colander.SchemaNode(colander.String()) vat = colander.SchemaNode(colander.Int())
class _EmployeeSchema(ResourceSchema): photo = colander.SchemaNode(File(), missing=None, validator=photo_validator) delete_photo = colander.SchemaNode( colander.Boolean(), missing=False, ) first_name = colander.SchemaNode(colander.String(), ) last_name = colander.SchemaNode(colander.String(), ) second_name = colander.SchemaNode(colander.String(), missing=None) itn = colander.SchemaNode(colander.String(), missing=None, validator=colander.Length(min=2, max=32)) dismissal_date = colander.SchemaNode(Date(), missing=None) contact_id = colander.SchemaNode(colander.Set(), missing=[]) passport_id = colander.SchemaNode(colander.Set(), missing=[]) address_id = colander.SchemaNode(colander.Set(), missing=[]) upload_id = colander.SchemaNode(colander.Set(), missing=[]) def deserialize(self, cstruct): if ('contact_id' in cstruct and not isinstance(cstruct.get('contact_id'), list)): val = cstruct['contact_id'] cstruct['contact_id'] = list() cstruct['contact_id'].append(val) if ('passport_id' in cstruct and not isinstance(cstruct.get('passport_id'), list)): val = cstruct['passport_id'] cstruct['passport_id'] = list() cstruct['passport_id'].append(val) if ('address_id' in cstruct and not isinstance(cstruct.get('address_id'), list)): val = cstruct['address_id'] cstruct['address_id'] = list() cstruct['address_id'].append(val) if ('upload_id' in cstruct and not isinstance(cstruct.get('upload_id'), list)): val = cstruct['upload_id'] cstruct['upload_id'] = list() cstruct['upload_id'].append(val) return super(_EmployeeSchema, self).deserialize(cstruct)
class Webhook(Base): __tablename__ = 'webhooks' id = Column(Integer, primary_key=True, info={'colanderalchemy': { 'typ': colander.Integer(), }}) owner_id = Column(Integer, ForeignKey('users.id'), info={'colanderalchemy': { 'typ': colander.Integer(), }}) carrier_id = Column( Integer, ForeignKey('carriers.id'), info={'colanderalchemy': { 'typ': colander.Integer(), }}) hook_url = Column(Text, info={ 'colanderalchemy': { 'typ': colander.String(), 'title': 'Webhook URL' } }) hook_type = Column(Text, info={ 'colanderalchemy': { 'typ': colander.String(), 'title': 'Webhook type' } }) enabled = Column(Boolean, default=True, info={ 'colanderalchemy': { 'typ': colander.Boolean(), 'title': 'Boolean' } }) jumpEvents = Column(Boolean, default=True) marketEvents = Column(Boolean, default=True) calendarEvents = Column(Boolean, default=True) isGlobal = Column(Boolean, default=False) description = Column(Text)
def validate(obj_type, obj, project, schema, properties): """ Compile a validator for the given set of properties, based on the available schemata. """ validator = colander.SchemaNode(colander.Mapping(), name='properties') for attr in schema.attributes: attrib = colander.SchemaNode(colander.Mapping(), name=attr.name, missing=colander.null) if attr.name == 'name' and obj_type == 'entity': attrib.add( colander.SchemaNode(colander.String(), missing=colander.required, name='value', validator=validate_name(project, obj))) else: T = DATATYPE_TYPES.get(attr.datatype) attrib.add(colander.SchemaNode(T, missing=None, name='value')) # add precision field to datetime attribute validator if attr.datatype == 'datetime': attrib.add( colander.SchemaNode( colander.String(), missing=None, name='value_precision', validator=colander.OneOf(DATETIME_PRECISION))) attrib.add( colander.SchemaNode(colander.Boolean(), default=True, missing=True, name='active')) attrib.add( colander.SchemaNode(colander.String(), missing=None, name='source_url')) validator.add(attrib) properties = validator.deserialize(properties) out = {} for k, v in properties.items(): if v != colander.null: out[k] = v return out
class SaveReleaseSchema(CSRFProtectedSchema, colander.MappingSchema): """An API schema for bodhi.server.services.releases.save_release().""" name = colander.SchemaNode(colander.String(), ) long_name = colander.SchemaNode(colander.String(), ) version = colander.SchemaNode( colander.String(), missing=None, ) branch = colander.SchemaNode(colander.String(), ) id_prefix = colander.SchemaNode(colander.String(), ) dist_tag = colander.SchemaNode(colander.String(), ) stable_tag = colander.SchemaNode(colander.String(), ) testing_tag = colander.SchemaNode(colander.String(), ) candidate_tag = colander.SchemaNode(colander.String(), ) pending_signing_tag = colander.SchemaNode( colander.String(), missing="", ) pending_testing_tag = colander.SchemaNode( colander.String(), missing="", ) pending_stable_tag = colander.SchemaNode( colander.String(), missing="", ) override_tag = colander.SchemaNode(colander.String(), ) state = colander.SchemaNode( colander.String(), validator=colander.OneOf(list(ReleaseState.values())), missing="disabled", ) edited = colander.SchemaNode( colander.String(), missing=None, ) mail_template = colander.SchemaNode( colander.String(), missing="fedora_errata_template", validator=colander.OneOf(MAIL_TEMPLATES)) composed_by_bodhi = colander.SchemaNode( colander.Boolean(true_choices=('true', '1')), missing=True, )
class NewsletterSchema(VisualisableElementSchema): """Schema for newsletter""" name = NameSchemaNode(editing=context_is_a_newsletter, ) subject = colander.SchemaNode( colander.String(), title=_('Subject'), default=default_subject, description=_('The subject of the newsletter.')) description = colander.SchemaNode(colander.String(), widget=deform.widget.TextAreaWidget( rows=4, cols=60), title=_("Description")) content_template = colander.SchemaNode( ObjectData(File), widget=get_file_widget(file_extensions=['html']), title=_('Content template'), missing=None, description=_("Only HTML files are supported."), ) content = colander.SchemaNode( colander.String(), widget=RichTextWidget(), default=default_content, missing='', title=_("Content"), description=_("The content to send."), ) recurrence = colander.SchemaNode(colander.Boolean(), widget=deform.widget.CheckboxWidget(), label=_('Sends automatic'), title='', missing=False) sending_date = colander.SchemaNode(colander.Date(), title=_('Sending date')) recurrence_nb = colander.SchemaNode(colander.Int(), title=_('Frequency/days'), default=7)
class TrueFalseQuestion(colander.Schema): description = colander.SchemaNode( colander.String(), name=models.TrueFalseQuestion.description.name, widget=deform.widget.RichTextWidget(delayed_load=True), description='Enter the question description', ) correct_answer = colander.SchemaNode( colander.Boolean(true_choices=TRUE_CHOICES, false_choices=FALSE_CHOICES, false_val=0, true_val=1), name=models.TrueFalseQuestion.correct_answer.name, validator=colander.OneOf([x[0] for x in BOOLEAN_RADIO_CHOICES]), widget=deform.widget.RadioChoiceWidget(values=BOOLEAN_RADIO_CHOICES, inline=True), title='Choose the correct answer', )
class AddSchema(colander.Schema): kode = colander.SchemaNode( colander.String(), oid = "kode", title = "Kode") nama = colander.SchemaNode( colander.String(), oid = "nama", title = "Nama") path = colander.SchemaNode( colander.String(), oid = "path", title = "Path") disabled = colander.SchemaNode( colander.Boolean())