19.1.18. camcops_server.cc_modules.cc_forms


Copyright (C) 2012-2018 Rudolf Cardinal (rudolf@pobox.com).

This file is part of CamCOPS.

CamCOPS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

CamCOPS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with CamCOPS. If not, see <http://www.gnu.org/licenses/>.


COLANDER NODES, NULLS, AND VALIDATION

  • Surprisingly tricky.

  • Nodes must be validly intialized with NO USER-DEFINED PARAMETERS to __init__; the Deform framework clones them.

  • A null appstruct is used to initialize nodes as Forms are created. Therefore, the “default” value must be acceptable to the underlying type’s serialize() function. Note in particular that “default = None” is not acceptable to Integer. Having no default is fine, though.

  • In general, flexible inheritance is very hard to implement.

  • Note that this error:

    AttributeError: 'EditTaskFilterSchema' object has no attribute 'typ'
    

    means you have failed to call super().__init__() properly from __init__().

  • When creating a schema, its members seem to have to be created in the class declaration as class properties, not in __init__().

class camcops_server.cc_modules.cc_forms.AddCancelForm(schema_class: Type[colander.Schema], request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddGroupForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddGroupSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.AddIdDefinitionForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddIdDefinitionSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.AddSpecialNoteForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddSpecialNoteSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.AddUserGroupadminForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddUserGroupadminSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.AddUserSuperuserForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AddUserSuperuserSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.AdministeredGroupsSequence(*args, **kwargs)[source]

Typical use: (non-superuser) group administrator assigns group memberships to a user. Offers the groups administered by the requestor.

class camcops_server.cc_modules.cc_forms.AllGroupsSequence(*args, minimum_number: int = 0, **kwargs)[source]

Typical use: superuser assigns group memberships to a user. Offer all possible groups.

class camcops_server.cc_modules.cc_forms.AllOtherGroupsSequence(*args, minimum_number: int = 0, **kwargs)[source]

Typical use: superuser assigns group permissions to another group. Offer all possible OTHER groups.

class camcops_server.cc_modules.cc_forms.AllowedGroupsSequence(*args, minimum_number: int = 0, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ApplyCancelForm(schema_class: Type[colander.Schema], request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AuditTrailForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.AuditTrailSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.CSRFSchema(*arg, **kw)[source]

Base class for form schemas that use CSRF (XSRF; cross-site request forgery) tokens.

You can’t put the call to bind() at the end of __init__(), because bind() calls clone() with no arguments and clone() ends up calling __init__()…

class camcops_server.cc_modules.cc_forms.CSRFToken(*arg, **kw)[source]

From http://deform2000.readthedocs.io/en/latest/basics.html:

“The default of a schema node indicates the value to be serialized if a value for the schema node is not found in the input data during serialization. It should be the deserialized representation. If a schema node does not have a default, it is considered “serialization required”.”

“The missing of a schema node indicates the value to be deserialized if a value for the schema node is not found in the input data during deserialization. It should be the deserialized representation. If a schema node does not have a missing value, a colander.Invalid exception will be raised if the data structure being deserialized does not contain a matching value.”

RNC: Serialized values are always STRINGS.

schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.ChangeOtherPasswordForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ChangeOtherPasswordSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.ChangeOwnPasswordForm(request: CamcopsRequest, must_differ: bool = True, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ChangeOwnPasswordSchema(*args, must_differ: bool = True, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ChooseTrackerForm(request: CamcopsRequest, as_ctv: bool, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ChooseTrackerSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DangerousForm(schema_class: Type[colander.Schema], submit_action: str, submit_title: str, request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DatabaseDialectSelector(*args, **kwargs)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.DeleteCancelForm(schema_class: Type[colander.Schema], request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeleteGroupForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeleteGroupSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DeleteIdDefinitionForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeleteIdDefinitionSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DeletePatientChooseForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeletePatientChooseSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DeletePatientConfirmForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeletePatientConfirmSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DeleteUserForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.DeleteUserSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.DevicesSequence(*args, **kw)[source]
class camcops_server.cc_modules.cc_forms.DumpTypeSelector(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.EditGroupForm(request: CamcopsRequest, group: camcops_server.cc_modules.cc_group.Group, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditGroupSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditIdDefinitionForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditIdDefinitionSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditPatientForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditPatientSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditServerSettingsForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditServerSettingsSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterAdminSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterForm(request: CamcopsRequest, open_who: bool = False, open_what: bool = False, open_when: bool = False, open_admin: bool = False, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterWhatSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterWhenSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditTaskFilterWhoSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditUserFullForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditUserFullSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditUserGroupAdminForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditUserGroupAdminSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EditUserGroupMembershipFullForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EditUserGroupMembershipGroupAdminForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EndDateSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EndDateTimeSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EndPendulumSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.EraseTaskForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.EraseTaskSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.ForciblyFinalizeChooseDeviceForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ForciblyFinalizeChooseDeviceSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.ForciblyFinalizeConfirmForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ForciblyFinalizeConfirmSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.GroupsSequenceBase(*args, minimum_number: int = 0, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.HL7MessageLogForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.HL7MessageLogSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.HL7RunLogForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.HL7RunLogSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.HardWorkConfirmationSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.Hl7AssigningAuthorityNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.Hl7IdTypeNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.IdDefinitionDescriptionNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.IdDefinitionShortDescriptionNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.IdNumSequenceAnyCombination(*args, **kw)[source]
class camcops_server.cc_modules.cc_forms.IdNumSequenceUniquePerWhichIdnum(*args, **kw)[source]
class camcops_server.cc_modules.cc_forms.IncludeBlobsNode(*arg, **kw)[source]
schema_type

alias of colander.Boolean

class camcops_server.cc_modules.cc_forms.LinkingIdNumSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.LoginForm(request: CamcopsRequest, autocomplete_password: bool = True, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.LoginSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.MandatoryDeviceIdSelector(*args, **kwargs)[source]
schema_type

alias of colander.Integer

class camcops_server.cc_modules.cc_forms.MandatoryGroupIdSelectorAdministeredGroups(*args, **kwargs)[source]

Offers a picklist of groups from GROUPS ADMINISTERED BY REQUESTOR. Used by groupadmins: add user to my group(s).

class camcops_server.cc_modules.cc_forms.MandatoryGroupIdSelectorAllGroups(*args, **kwargs)[source]

Offers a picklist of groups from ALL POSSIBLE GROUPS. Used by superusers: add user to any group.

class camcops_server.cc_modules.cc_forms.MandatoryGroupIdSelectorAllowedGroups(*args, **kwargs)[source]

Offers a picklist of groups from THOSE THE USER IS ALLOWED TO SEE. Used for task filters.

class camcops_server.cc_modules.cc_forms.MandatoryGroupIdSelectorOtherGroups(*args, **kwargs)[source]

Offers a picklist of groups THAT ARE NOT THE SPECIFIED GROUP. Used by superusers: “which other groups can this group see?”

class camcops_server.cc_modules.cc_forms.MandatoryGroupIdSelectorUserGroups(*args, **kwargs)[source]

Offers a picklist of groups from THOSE THE USER IS A MEMBER OF. Used for: “which of your groups do you want to upload into?”

class camcops_server.cc_modules.cc_forms.MandatoryIdNumNode(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.MandatoryIdNumValue(*arg, **kw)[source]
schema_type

alias of colander.Integer

class camcops_server.cc_modules.cc_forms.MandatorySexSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.MandatoryUserIdSelectorUsersAllowedToSee(*args, **kwargs)[source]
schema_type

alias of colander.Integer

class camcops_server.cc_modules.cc_forms.MandatoryWhichIdNumSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.MultiTaskSelector(*args, tracker_tasks_only: bool = False, minimum_number: int = 0, **kwargs)[source]
schema_type

alias of colander.Set

class camcops_server.cc_modules.cc_forms.MustChangePasswordNode(*arg, **kw)[source]
schema_type

alias of colander.Boolean

class camcops_server.cc_modules.cc_forms.NewPasswordNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.OfferBasicDumpForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OfferBasicDumpSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.OfferDumpManualSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.OfferSqlDumpForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OfferSqlDumpManualSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.OfferSqlDumpSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.OfferTermsForm(request: CamcopsRequest, agree_button_text: str, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OfferTermsSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.OldUserPasswordCheck(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.OptionalGroupIdSelectorUserGroups(*args, **kwargs)[source]

Offers a picklist of groups from THOSE THE USER IS A MEMBER OF. Used for “which do you want to upload into?”.

class camcops_server.cc_modules.cc_forms.OptionalIdNumValue(*arg, **kw)[source]
static schema_type() → colander.SchemaType[source]

A type representing an integer.

If the colander.null value is passed to the serialize method of this class, the colander.null value will be returned.

The subnodes of the colander.SchemaNode that wraps this type are ignored.

class camcops_server.cc_modules.cc_forms.OptionalSexSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OptionalSingleTaskSelector(*args, tracker_tasks_only: bool = False, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OptionalUserNameSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.OptionalWhichIdNumSelector(*args, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.PolicyNode(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.RefreshTasksForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.RefreshTasksSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.ReportOutputTypeSelector(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.ReportParamForm(request: CamcopsRequest, schema_class: Type[camcops_server.cc_modules.cc_forms.ReportParamSchema], **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ReportParamSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.RowsPerPageSelector(*arg, **kw)[source]
schema_type

alias of colander.Integer

class camcops_server.cc_modules.cc_forms.SchemaTests(methodName='runTest')[source]
class camcops_server.cc_modules.cc_forms.ServerPkSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.SetUserUploadGroupForm(request: CamcopsRequest, user: User, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.SetUserUploadGroupSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.SimpleSubmitForm(schema_class: Type[colander.Schema], submit_title: str, request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.SortTsvByHeadingsNode(*arg, **kw)[source]
schema_type

alias of colander.Boolean

class camcops_server.cc_modules.cc_forms.SqliteSelector(*args, **kwargs)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.StartDateSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.StartDateTimeSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.StartPendulumSelector(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.TaskTrackerOutputTypeSelector(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.TasksPerPageForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.TasksPerPageSchema(*arg, **kw)[source]
class camcops_server.cc_modules.cc_forms.TextContentsSequence(*args, **kw)[source]
class camcops_server.cc_modules.cc_forms.UploadingUserSequence(*args, **kw)[source]
class camcops_server.cc_modules.cc_forms.UserGroupMembershipFullSchema(*arg, **kw)[source]

Edit group membership - for superusers.

class camcops_server.cc_modules.cc_forms.UserGroupMembershipGroupAdminSchema(*arg, **kw)[source]

Edit group membership - for group administrators.

class camcops_server.cc_modules.cc_forms.UsernameNode(*arg, **kw)[source]
schema_type

alias of colander.String

class camcops_server.cc_modules.cc_forms.ViewDdlForm(request: CamcopsRequest, **kwargs)[source]
class camcops_server.cc_modules.cc_forms.ViewDdlSchema(*arg, **kw)[source]