def sharedstate(self): request = self.request user = request.user if not user.cic.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = { "state": validators.OneOf(["local", "shared"], not_empty=True), "PB_ID": validators.IDValidator(not_empty=True), } model_state.method = None if not model_state.validate(): self._error_page(_("Invalid Publication ID", request)) PB_ID = model_state.form.data["PB_ID"] title = _("Manage Publications", request) return self._create_response_namespace( title, title, dict(PB_ID=PB_ID, state=model_state.value("state")), no_index=True, )
class HeadingGroupBaseSchema(Schema): if_key_missing = None GroupID = Any(validators.IDValidator(), validators.OneOf(["NEW"])) DisplayOrder = validators.Int(min=0, max=256, not_empty=True) Descriptions = validators.CultureDictSchema( HeadingGroupDescriptionSchema(), allow_extra_fields=True, fiter_extra_fields=False, ) IconNameFull = validators.String(max=65) delete = validators.Bool()
class AIRSExportOptionsSchema(validators.RootSchema): allow_extra_fields = True if_key_missing = None version = validators.OneOf(["3_1", "3_0", "3_0_Testing"], if_empty="3_0") DST = validators.UnicodeString(max=20, not_empty=True) IncludeDeleted = validators.Bool() IncludeSiteAgency = validators.Bool() PartialDate = validators.ISODateConverter() PubCodeSync = validators.Bool() FileSuffix = validators.String(max=100) LabelLangOverride = validators.Int(min=0, max=validators.MAX_TINY_INT) AnyLanguageChange = validators.Bool()
def sharedstate_confirm(self): request = self.request user = request.user if not user.cic.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = { "state": validators.OneOf(["local", "shared"], not_empty=True), "PB_ID": validators.IDValidator(not_empty=True), } if not model_state.validate(): self._error_page(_("Invalid Publication ID", request)) PB_ID = model_state.form.data["PB_ID"] shared = model_state.value("state") == "shared" with request.connmgr.get_connection("admin") as conn: sql = """ DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_CIC_Publication_u_SharedState ?,?, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg """ cursor = conn.execute(sql, PB_ID, shared) result = cursor.fetchone() cursor.close() if not result.Return: if shared: msg = _("The Publication was successfully shared.", request) else: msg = _("The Publication was successfully made local.", request) self._go_to_route("cic_publication_index", _query=[("InfoMsg", msg)]) if shared: msg = _("Unable to make the Publication shared: ", request) else: msg = _("Unable to make the Publication local: ", request) self._go_to_route("cic_publication_index", _query=[("ErrMsg", msg + result.ErrMsg)])
class AgencySchema(Schema): if_key_missing = None AgencyCode = validators.AgencyCodeValidator(not_empty=True) GetInvolvedUser = validators.UnicodeString(max=100) GetInvolvedToken = validators.UnicodeString(max=100) GetInvolvedCommunitySet = validators.IDValidator() GetInvolvedSite = validators.OneOf([x[0] for x in get_involved_sites]) chained_validators = [ validators.RequireNoneOrAll([ "GetInvolvedUser", "GetInvolvedToken", "GetInvolvedCommunitySet", "GetInvolvedSite", ]) ]
def save(self): request = self.request user = request.user list_type = self.request.context.list_type self._check_security(list_type, True) extra_validators = {} if list_type.ID: extra_validators = { list_type.ID or "OldValue": Any(list_type.id_validator, validators.OneOf(["NEW"])) } extra_validators[list_type.NameField] = validators.UnicodeString( max=list_type.NameFieldMaxLength) for field in list_type.ExtraFields or []: extra_validators[field["field"]] = field["validator"] base_schema = ListBaseSchema(**extra_validators) schema_params = {"listitem": foreach.ForEach(base_schema)} schema = PostSchema(**schema_params) model_state = request.model_state model_state.schema = schema model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect root = ET.Element("CHECKLIST") for listitem in model_state.form.data["listitem"]: if list_type.ID and not listitem.get(list_type.ID): continue if not listitem.get(list_type.NameField): continue if list_type.CanDelete and listitem.get("delete"): continue list_el = ET.SubElement(root, "CHK") for key, value in listitem.items(): if key == list_type.ID and value == "NEW": value = -1 elif isinstance(value, bool): value = int(value) if value is not None: ET.SubElement(list_el, key).text = str(value) if list_type.HasModified: args = [user.Mod, ET.tostring(root, encoding="unicode")] else: args = [ET.tostring(root, encoding="unicode")] with request.connmgr.get_connection("admin") as conn: sql = """ DECLARE @RC int, @ErrMsg nvarchar(500) EXEC @RC = sp_{}_u {}, @ErrMsg OUTPUT SELECT @RC AS [Return], @ErrMsg AS ErrMsg""".format( list_type.Table, ",".join("?" * len(args)), ) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route( request.matched_route.name, _query=( ( "InfoMsg", _("The record(s) were successfully updated.", request), ), ("list", list_type.FieldCode), ), ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") listitems = self._get_edit_info(list_type) record_cultures = syslanguage.active_record_cultures() listitems = variabledecode.variable_decode(request.POST)["listitem"] model_state.form.data["listitem"] = listitems title_template = _(list_type.PageTitleTemplate, self.request) title = (list_type.ListName if request.viewdata.PrintMode else title_template.format(list_type.ListName)) return self._create_response_namespace( title, title, dict( listitems=listitems, record_cultures=record_cultures, SuperUserGlobal=request.context.SuperUserGlobal, list_type=list_type, ErrMsg=ErrMsg, ), no_index=True, )