示例#1
0
    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,
        )
示例#2
0
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()
示例#3
0
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()
示例#4
0
    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",
        ])
    ]
示例#6
0
    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,
        )