def edit(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() CM_ID = self._get_cmid() is_add = not CM_ID edit_values = self._get_edit_info(CM_ID, is_add) if is_add: is_alt_area = not not request.params.get('altarea') else: is_alt_area = edit_values.community.AlternativeArea data = request.model_state.form.data data['community'] = edit_values.community data['descriptions'] = edit_values.descriptions data['alt_names'] = edit_values.alt_names data['alt_areas'] = [str(x.Search_CM_ID) for x in edit_values.alt_areas] title = _('Manage Communities', request) return self._create_response_namespace( title, title, dict( community=edit_values.community, CM_ID=CM_ID, is_add=is_add, is_alt_area=is_alt_area, prov_state=edit_values.prov_state, alt_area_name_map=edit_values.alt_area_name_map, shown_cultures=edit_values.shown_cultures, record_cultures=syslanguage.active_record_cultures()), no_index=True)
def _get_request_info(self, chk_type, SuperUserGlobal, only_mine, only_other, title_template): log.debug( "SuperUserGlobal, only_mine, only_other: %s,%s,%s", SuperUserGlobal, only_mine, only_other, ) request = self.request chkitems, chkusage = self._get_edit_info(chk_type, only_mine, only_other, not SuperUserGlobal) record_cultures = syslanguage.active_record_cultures() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) title = (chk_type.CheckListName if request.viewdata.PrintMode else title_template.format(chk_type.CheckListName)) return self._create_response_namespace( title, title, dict( chkitems=chkitems, SuperUserGlobal=SuperUserGlobal, record_cultures=record_cultures, shown_cultures=shown_cultures, chkusage=chkusage, chk_type=chk_type, ), no_index=True, )
def edit(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = {"MAP_ID": ciocvalidators.IDValidator()} model_state.method = None if not model_state.validate(): # XXX invalid MAP_ID self._error_page(_("Invalid ID", request)) MAP_ID = model_state.form.data.get("MAP_ID") is_add = not MAP_ID mapping = None mapping_descriptions = {} if not is_add: with request.connmgr.get_connection("admin") as conn: cursor = conn.execute("EXEC dbo.sp_GBL_MappingSystem_s ?", MAP_ID) mapping = cursor.fetchone() if mapping: cursor.nextset() for lng in cursor.fetchall(): mapping_descriptions[lng.Culture.replace("-", "_")] = lng cursor.close() if not mapping: # not found self._error_page(_("Mapping System Not Found", request)) domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) model_state.form.data["mapping"] = mapping model_state.form.data["descriptions"] = mapping_descriptions title = _("Manage Mapping Systems", request) return self._create_response_namespace( title, title, dict( mapping=mapping, MAP_ID=MAP_ID, is_add=is_add, shown_cultures=shown_cultures, record_cultures=syslanguage.active_record_cultures(), ), no_index=True, )
def edit(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = {"SM_ID": ciocvalidators.IDValidator()} model_state.method = None if not model_state.validate(): # XXX invalid SM_ID self._error_page(_("Invalid ID", request)) SM_ID = model_state.form.data.get("SM_ID") is_add = not SM_ID socialmedia = None socialmedia_descriptions = {} if not is_add: with request.connmgr.get_connection("admin") as conn: cursor = conn.execute("EXEC dbo.sp_GBL_SocialMedia_s ?", SM_ID) socialmedia = cursor.fetchone() if socialmedia: cursor.nextset() for lng in cursor.fetchall(): socialmedia_descriptions[lng.Culture.replace( "-", "_")] = lng cursor.close() if not socialmedia: # not found self._error_page(_("Social Media Type Not Found", request)) domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) model_state.form.data["socialmedia"] = socialmedia model_state.form.data["descriptions"] = socialmedia_descriptions title = _("Manage Social Media Types", request) return self._create_response_namespace( title, title, dict( socialmedia=socialmedia, SM_ID=SM_ID, is_add=is_add, shown_cultures=shown_cultures, record_cultures=syslanguage.active_record_cultures(), ), no_index=True, )
def _get_edit_info(self, num, BTPBID, number, base_params): request = self.request user = request.user publication = None publication_descriptions = {} fullorg = None generalheadings = [] taxonomyheadings = [] feedback = [] with request.connmgr.get_connection('admin') as conn: sql = 'EXEC dbo.sp_CIC_NUMPub_s ?, ?, ?' cursor = conn.execute(sql, BTPBID, user.User_ID, request.viewdata.cic.ViewType) errordata = cursor.fetchone() if not errordata.Error: cursor.nextset() fullorg = cursor.fetchone().ORG_NAME_FULL cursor.nextset() publication = cursor.fetchone() cursor.nextset() for lng in cursor.fetchall(): publication_descriptions[lng.Culture.replace('-', '_')] = lng cursor.nextset() generalheadings = cursor.fetchall() cursor.nextset() taxonomyheadings = cursor.fetchall() cursor.nextset() feedback = cursor.fetchall() cursor.close() if errordata.Error: self._error_page(errordata.ErrMsg or _('An unknown error occurred.', request)) linked_headings = set(unicode(x.GH_ID) for x in generalheadings if x.SELECTED) record_cultures = [x for x in syslanguage.active_record_cultures() if x.replace('-', '_') in publication_descriptions] return EditValues(publication, publication_descriptions, linked_headings, fullorg, generalheadings, taxonomyheadings, feedback, num, BTPBID, number, record_cultures)
def index(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if not domain: return self._go_to_page("~/admin/setup.asp") if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() fields = [] with request.connmgr.get_connection("admin") as conn: cursor = conn.execute( "EXEC sp_%s_FieldOption_l_Hide ?" % ("GBL" if domain.id == const.DM_CIC else domain.str), request.MemberID, ) fields = cursor.fetchall() cursor.close() for field in fields: field.Descriptions = self._culture_dict_from_xml( field.Descriptions, "DESC") # raise Exception record_cultures = syslanguage.active_record_cultures() request.model_state.form.data["HideField"] = [ str(f.FieldID) for f in fields if f.InactiveByMember ] title = _("Manage Hidden Fields", request) return self._create_response_namespace( title, title, dict( fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, ), no_index=True, )
def edit(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = { 'SM_ID': ciocvalidators.IDValidator() } model_state.method = None if not model_state.validate(): # XXX invalid SM_ID self._error_page(_('Invalid ID', request)) SM_ID = model_state.form.data.get('SM_ID') is_add = not SM_ID socialmedia = None socialmedia_descriptions = {} if not is_add: with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_GBL_SocialMedia_s ?', SM_ID) socialmedia = cursor.fetchone() if socialmedia: cursor.nextset() for lng in cursor.fetchall(): socialmedia_descriptions[lng.Culture.replace('-', '_')] = lng cursor.close() if not socialmedia: # not found self._error_page(_('Social Media Type Not Found', request)) domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) model_state.form.data['socialmedia'] = socialmedia model_state.form.data['descriptions'] = socialmedia_descriptions title = _('Manage Social Media Types', request) return self._create_response_namespace( title, title, dict( socialmedia=socialmedia, SM_ID=SM_ID, is_add=is_add, shown_cultures=shown_cultures, record_cultures=syslanguage.active_record_cultures() ), no_index=True)
def _get_request_info(self, list_type, title_template): request = self.request listitems = self._get_edit_info(list_type) record_cultures = syslanguage.active_record_cultures() 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, SuperUserGlobal=request.context.SuperUserGlobal, record_cultures=record_cultures, list_type=list_type ), no_index=True)
def index(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if not domain: return self._go_to_page("~/admin/setup.asp") if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() fields = [] with request.connmgr.get_connection() as conn: cursor = conn.execute("EXEC sp_%s_Field_Radio_l" % domain.str) fields = cursor.fetchall() cursor.close() for field in fields: field.Descriptions = self._culture_dict_from_xml( field.Descriptions, "DESC") # raise Exception record_cultures = syslanguage.active_record_cultures() fieldinfo_map = {str(f.FieldID): f for f in fields} request.model_state.form.data["field"] = fields title = _("Change Field Yes/No Values", request) return self._create_response_namespace( title, title, dict( fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, fieldinfo_map=fieldinfo_map, ), no_index=True, )
def _get_request_info(self, chk_type, SuperUserGlobal, only_mine, only_other, title_template): log.debug('SuperUserGlobal, only_mine, only_other: %s,%s,%s', SuperUserGlobal, only_mine, only_other) request = self.request chkitems, chkusage = self._get_edit_info(chk_type, only_mine, only_other, not SuperUserGlobal) record_cultures = syslanguage.active_record_cultures() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) title = chk_type.CheckListName if request.viewdata.PrintMode else title_template.format(chk_type.CheckListName) return self._create_response_namespace( title, title, dict( chkitems=chkitems, SuperUserGlobal=SuperUserGlobal, record_cultures=record_cultures, shown_cultures=shown_cultures, chkusage=chkusage, chk_type=chk_type), no_index=True)
def _get_interest_info(self): request = self.request user = request.user if not user.vol.SuperUser: self._security_failure() with request.connmgr.get_connection("admin") as conn: cursor = conn.execute( "EXEC sp_VOL_Interest_lf ?", request.dboptions.MemberID ) interests = cursor.fetchall() cursor.close() for interest in interests: interest.Descriptions = self._culture_dict_from_xml( interest.Descriptions, "DESC" ) if interest.Groups is not None: interest.Groups = " ; ".join( x["Name"] for x in self._dict_list_from_xml(interest.Groups, "GROUP") if x.get("Name") ) request.model_state.form.data["ChkHide"] = [ str(x.AI_ID) for x in interests if x.Hidden ] domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) record_cultures = syslanguage.active_record_cultures() title = _("Manage Areas of Interest", request) return self._create_response_namespace( title, title, dict( interests=interests, record_cultures=record_cultures, shown_cultures=shown_cultures, ), no_index=True, )
def _get_request_info(self, list_type, title_template): request = self.request listitems = self._get_edit_info(list_type) record_cultures = syslanguage.active_record_cultures() 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, SuperUserGlobal=request.context.SuperUserGlobal, record_cultures=record_cultures, list_type=list_type, ), no_index=True, )
def edit(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() CM_ID = self._get_cmid() is_add = not CM_ID edit_values = self._get_edit_info(CM_ID, is_add) if is_add: is_alt_area = not not request.params.get("altarea") else: is_alt_area = edit_values.community.AlternativeArea data = request.model_state.form.data data["community"] = edit_values.community data["descriptions"] = edit_values.descriptions data["alt_names"] = edit_values.alt_names data["alt_areas"] = [ str(x.Search_CM_ID) for x in edit_values.alt_areas ] title = _("Manage Communities", request) return self._create_response_namespace( title, title, dict( community=edit_values.community, CM_ID=CM_ID, is_add=is_add, is_alt_area=is_alt_area, prov_state=edit_values.prov_state, alt_area_name_map=edit_values.alt_area_name_map, shown_cultures=edit_values.shown_cultures, record_cultures=syslanguage.active_record_cultures(), ), no_index=True, )
def _get_interest_info(self): request = self.request user = request.user if not user.vol.SuperUser: self._security_failure() with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC sp_VOL_Interest_lf ?', request.dboptions.MemberID) interests = cursor.fetchall() cursor.close() for interest in interests: interest.Descriptions = self._culture_dict_from_xml(interest.Descriptions, 'DESC') if interest.Groups is not None: interest.Groups = ' ; '.join(x['Name'] for x in self._dict_list_from_xml(interest.Groups, 'GROUP') if x.get('Name')) request.model_state.form.data['ChkHide'] = [unicode(x.AI_ID) for x in interests if x.Hidden] domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) record_cultures = syslanguage.active_record_cultures() title = _('Manage Areas of Interest', request) return self._create_response_namespace(title, title, dict(interests=interests, record_cultures=record_cultures, shown_cultures=shown_cultures), no_index=True)
def index(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if not domain: return self._go_to_page('~/admin/setup.asp') if (domain.id == const.DM_CIC and not user.cic.SuperUser) or \ (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() fields = [] with request.connmgr.get_connection() as conn: cursor = conn.execute('EXEC sp_%s_Field_Radio_l' % domain.str) fields = cursor.fetchall() cursor.close() for field in fields: field.Descriptions = self._culture_dict_from_xml(field.Descriptions, 'DESC') #raise Exception record_cultures = syslanguage.active_record_cultures() fieldinfo_map = dict((str(f.FieldID), f) for f in fields) request.model_state.form.data['field'] = fields title = _('Change Field Yes/No Values', request) return self._create_response_namespace(title, title, dict(fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, fieldinfo_map=fieldinfo_map), no_index=True)
def index(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if not domain: return self._go_to_page('~/admin/setup.asp') if (domain.id == const.DM_CIC and not user.cic.SuperUser) or \ (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() fields = [] with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC sp_%s_FieldOption_l_Hide ?' % ('GBL' if domain.id == const.DM_CIC else domain.str), request.MemberID) fields = cursor.fetchall() cursor.close() for field in fields: field.Descriptions = self._culture_dict_from_xml(field.Descriptions, 'DESC') #raise Exception record_cultures = syslanguage.active_record_cultures() request.model_state.form.data['HideField'] = [str(f.FieldID) for f in fields if f.InactiveByMember] title = _('Manage Hidden Fields', request) return self._create_response_namespace(title, title, dict(fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures), no_index=True)
def save(self): request = self.request user = request.user ViewType, domain, shown_cultures = self._basic_info() model_state = request.model_state model_state.schema = PostSchema() model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect root = ET.Element("GROUPS") for i, group in enumerate(model_state.form.data["group"]): if not group.get("DisplayFieldGroupID"): continue if group.get("delete"): continue if all(not v for k, v in group.items() if not (k == "DisplayFieldGroupID" and v == "NEW")): continue group_el = ET.SubElement(root, "GROUP") ET.SubElement(group_el, "CNT").text = str(i) for key, value in group.items(): if key == "DisplayFieldGroupID" and value == "NEW": value = -1 if key != "Descriptions": if value is not None: ET.SubElement(group_el, key).text = str(value) continue descs = ET.SubElement(group_el, "DESCS") for culture, data in value.items(): culture = culture.replace("_", "-") if culture not in shown_cultures: continue desc = ET.SubElement(descs, "DESC") ET.SubElement(desc, "Culture").text = culture for key, value in data.items(): if value: ET.SubElement(desc, key).text = value args = [ ViewType, user.Mod, request.dboptions.MemberID, user.Agency, ET.tostring(root, encoding="unicode"), ] # raise Exception with request.connmgr.get_connection("admin") as conn: sql = (""" DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_View_DisplayFieldGroup_u ?, ?, ?, ?, ?, @ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg """ % domain.str) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route( "admin_view", action="fieldgroup", _query=[ ( "InfoMsg", _("The Field Groups were successfully updated.", request), ), ("ShowCultures", shown_cultures), ("DM", domain.id), ("ViewType", ViewType), ], ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") groups = [] with request.connmgr.get_connection("admin") as conn: groups = conn.execute( "EXEC sp_%s_View_DisplayFieldGroup_lf ?, ?, ?, 1" % domain.str, request.dboptions.MemberID, user.Agency, ViewType, ).fetchall() # errors = model_state.form.errors # raise Exception() # XXX should we refetch the basic info? groups = variabledecode.variable_decode(request.POST)["group"] model_state.form.data["group"] = groups record_cultures = syslanguage.active_record_cultures() title = _("Change Field Groups", request) return self._create_response_namespace( title, title, dict( groups=groups, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, ViewType=ViewType, ErrMsg=ErrMsg, ), no_index=True, print_table=False, )
def index(self): request = self.request user = request.user log.debug("before basic info: %s", user) ViewType, domain, shown_cultures = self._basic_info() log.debug("after basic info") groups = [] viewinfo = None with request.connmgr.get_connection("admin") as conn: log.debug("before execute") cursor = conn.execute( "EXEC sp_%s_View_DisplayFieldGroup_lf ?, ?, ?" % domain.str, request.dboptions.MemberID, user.Agency, ViewType, ) log.debug("cursor") viewinfo = cursor.fetchone() log.debug("viewinfo") if viewinfo: cursor.nextset() log.debug("nextset") groups = cursor.fetchall() log.debug("before close") cursor.close() if not viewinfo: # not a valid view log.debug("redirect") self._error_page(_("View Not Found", request)) log.debug("descriptions") for group in groups: group.Descriptions = self._culture_dict_from_xml( group.Descriptions, "DESC") log.debug("record_cultures") # raise Exception record_cultures = syslanguage.active_record_cultures() request.model_state.form.data["group"] = groups title = _("Field Groups (%s)", request) % viewinfo.ViewName return self._create_response_namespace( title, title, dict( groups=groups, record_cultures=record_cultures, ViewType=ViewType, domain=domain, shown_cultures=shown_cultures, ), no_index=True, print_table=False, )
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, )
def _get_edit_info(self, is_add, reminder_id, is_error=False): request = self.request reminder = None reminder_users = [] reminder_agencies = [] nums = [] vnums = [] agencies = [] note_types = [] with request.connmgr.get_connection("admin") as conn: if not is_add: sql = """EXEC sp_GBL_Reminder_s ?, ?""" cursor = conn.execute(sql, request.dboptions.MemberID, reminder_id) reminder = cursor.fetchone() if not reminder: request.response.status = "404 Not Found" return { "ErrMsg": _("Reminder not found", request), "ErrorPage": True, } if not is_error: cursor.nextset() reminder_users = cursor.fetchall() cursor.nextset() reminder_agencies = cursor.fetchall() cursor.nextset() nums = cursor.fetchall() cursor.nextset() vnums = cursor.fetchall() cursor.close() cursor = conn.execute( """ EXEC sp_GBL_Agency_l ?, ? EXEC sp_GBL_RecordNote_Type_l """, request.dboptions.MemberID, False, ) agencies = [x.AgencyCode for x in cursor.fetchall()] cursor.nextset() note_types = [ (x[0], ("[ ! ] " if x[1] else "") + x[2]) for x in cursor.fetchall() ] cursor.close() org_names = ((x[0], x.ORG_NAME_FULL) for x in nums) org_names = {k: v for k, v in org_names if v} pos_titles = {str(k): v for k, v in vnums if v} data = request.model_state.form.data if not is_add: if not is_error: data["reminder"] = reminder data["reminder_user_ID"] = [str(x[0]) for x in reminder_users] data["reminder_agency_ID"] = [x[0] for x in reminder_agencies] data["NUM"] = [x[0] for x in nums] data["VNUM"] = [str(x[0]) for x in vnums] if is_add or is_error: data["NUM"] = request.params.getall("NUM") data["VNUM"] = request.params.getall("VNUM") if not is_add or is_error: val = request.model_state.value("reminder.DismissForAll") data["reminder.DismissForAll"] = dismiss_options_reverse.get( val, val if val is not None else "S" ) namespace = { "_": lambda x: i18n.gettext(x, request), "format_date": lambda x: i18n.format_date(x, request), "reminder": reminder, "record_cultures": syslanguage.active_record_cultures(), "culture_map": syslanguage.culture_map(), "agencies": agencies, "note_types": note_types, "ReminderID": reminder_id, "reminder_users": reminder_users, "reminder_agencies": reminder_agencies, "org_names": org_names, "position_titles": pos_titles, "renderer": request.model_state.renderer, } return {"form": render(templateprefix + "edit_form.mak", namespace, request)}
def save(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() is_alt_area = not not request.params.get("altarea") CM_ID = self._get_cmid() is_add = not CM_ID if not is_add and request.POST.get("Delete"): self._go_to_route("admin_community", action="delete", _query=[("CM_ID", CM_ID)]) model_state = request.model_state model_state.form.variable_decode = True if is_alt_area: log.debug("alt area") model_state.schema = AltAreasSchema() else: log.debug("community") model_state.schema = CommunitySchema() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if model_state.validate(): # valid. Save changes and redirect data = model_state.form.data cm_data = data.get("community", {}) args = [ CM_ID, user.Mod, is_alt_area, cm_data.get("ParentCommunity"), cm_data.get("ProvinceState"), ] root = ET.Element("DESCS") for culture, description in ( model_state.form.data["descriptions"]).items(): if culture.replace("_", "-") not in shown_cultures: continue desc = ET.SubElement(root, "DESC") ET.SubElement(desc, "Culture").text = culture.replace("_", "-") for name, value in description.items(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root, encoding="unicode")) root = ET.Element("NAMES") for name in model_state.form.data.get("alt_names") or []: if (name.get("Delete") or not name.get("AltName") or (not name.get("New") and name["Culture"].replace( "_", "-") not in shown_cultures)): continue desc = ET.SubElement(root, "Name") ET.SubElement(desc, "Culture").text = name["Culture"] ET.SubElement(desc, "AltName").text = name["AltName"] args.append(ET.tostring(root, encoding="unicode")) if is_alt_area: root = ET.Element("ALTAREAS") for area in data.get("alt_areas") or []: ET.SubElement(root, "CM_ID").text = str(area) args.append(ET.tostring(root, encoding="unicode")) else: args.append(None) root = ET.Element("ShownCultures") for culture in shown_cultures: ET.SubElement(root, "Culture").text = culture args.append(ET.tostring(root, encoding="unicode")) sql = """ DECLARE @ErrMsg as nvarchar(500), @RC as int, @CM_ID as int SET @CM_ID = ? EXECUTE @RC = dbo.sp_GBL_Community_u @CM_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @CM_ID as CM_ID """ % ", ".join("?" * (len(args) - 1)) with request.connmgr.get_connection("admin") as conn: result = conn.execute(sql, *args).fetchone() if not result.Return: CM_ID = result.CM_ID if is_alt_area: if is_add: msg = _( "The Alternate Search Area was successfully added.", request) else: msg = _( "The Alternate Search Area was successfully updated.", request, ) else: if is_add: msg = _("The Community was successfully added.", request) else: msg = _("The Community was successfully updated.", request) self._go_to_route( "admin_community", action="edit", _query=[ ("InfoMsg", msg), ("CM_ID", CM_ID), ("ShowCultures", shown_cultures), ], ) ErrMsg = _("Unable to save: ") + result.ErrMsg alt_areas = data.get("alt_areas") or [] else: ErrMsg = _("There were validation errors.") data = model_state.form.data decoded = variable_decode(request.POST) alt_areas = decoded.get("alt_areas") or [] data["alt_areas"] = alt_areas data["alt_names"] = decoded.get("alt_names") or [] edit_values = self._get_edit_info(CM_ID, is_add, alt_areas) record_cultures = syslanguage.active_record_cultures() # XXX should we refetch the basic info? title = _("Manage Communities", request) return self._create_response_namespace( title, title, dict( community=edit_values.community, CM_ID=CM_ID, is_alt_area=is_alt_area, prov_state=edit_values.prov_state, alt_area_name_map=edit_values.alt_area_name_map, shown_cultures=shown_cultures, record_cultures=record_cultures, is_add=is_add, ErrMsg=ErrMsg, ), no_index=True, )
def list(self): if self.record_cultures: return syslanguage.active_record_cultures() return syslanguage.active_cultures()
def save(self): request = self.request if request.POST.get("Delete"): self._go_to_route( "admin_interests", action="delete", _query=[("AI_ID", request.POST.get("AI_ID"))], ) user = request.user if not user.vol.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.schema = InterestSchema() model_state.form.variable_decode = True validator = validators.IDValidator() try: AI_ID = validator.to_python(request.POST.get("AI_ID")) except validators.Invalid: self._error_page(_("Invalid Interest ID", request)) is_add = not AI_ID domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if model_state.validate(): # valid. Save changes and redirect args = [AI_ID, user.Mod, model_state.value("Code")] root = ET.Element("DESCS") for culture, data in model_state.form.data["descriptions"].items(): if culture.replace("_", "-") not in shown_cultures: continue desc = ET.SubElement(root, "DESC") ET.SubElement(desc, "Culture").text = culture.replace("_", "-") for name, value in data.items(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root, encoding="unicode")) root = ET.Element("GROUPS") for group_id in model_state.form.data["groups"]: ET.SubElement(root, "GROUP").text = str(group_id) args.append(ET.tostring(root, encoding="unicode")) with request.connmgr.get_connection("admin") as conn: sql = """ DECLARE @ErrMsg as nvarchar(500), @RC as int, @AI_ID as int SET @AI_ID = ? EXECUTE @RC = dbo.sp_VOL_Interest_u @AI_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @AI_ID as AI_ID """ % ", ".join( "?" * (len(args) - 1) ) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: AI_ID = result.AI_ID self._go_to_route( "admin_interests", action="edit", _query=[ ( "InfoMsg", _("The Interests were successfully updated.", request), ), ("AI_ID", AI_ID), ("ShowCultures", shown_cultures), ], ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") interest = None group_descs = [] with request.connmgr.get_connection("admin") as conn: cursor = conn.execute("EXEC dbo.sp_VOL_Interest_s_FormLists") group_descs = cursor.fetchall() cursor.close() if not is_add: cursor = conn.execute("EXEC dbo.sp_VOL_Interest_s ?", AI_ID) interest = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() model_state.form.data["groups"] = request.POST.getall("groups") title = _("Manage Areas of Interest", request) return self._create_response_namespace( title, title, dict( interest=interest, AI_ID=AI_ID, shown_cultures=shown_cultures, record_cultures=record_cultures, group_descs=group_descs, is_add=is_add, ErrMsg=ErrMsg, ), no_index=True, )
def save(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if not domain: return self._go_to_page('~/admin/setup.asp') if (domain.id == const.DM_CIC and not user.cic.SuperUserGlobal) or \ (domain.id == const.DM_VOL and not user.vol.SuperUserGlobal): self._security_failure() model_state = request.model_state model_state.schema = PostSchema() model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect root = ET.Element('FIELDS') for field in model_state.form.data['field']: field_el = ET.SubElement(root, 'Field') for key,value in field.iteritems(): if not value: continue if key != 'Descriptions': ET.SubElement(field_el, key).text = unicode(value) continue descs = ET.SubElement(field_el, 'DESCS') for culture, data in value.iteritems(): culture = culture.replace('_', '-') if culture not in shown_cultures: continue desc = ET.SubElement(descs, 'DESC') ET.SubElement(desc, 'Culture').text = culture.replace('_', '-') for key, value in data.iteritems(): if value: ET.SubElement(desc, key).text = value args = [user.Mod, ET.tostring(root)] #raise Exception with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_Field_Radio_u ?, ?, @ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % domain.str cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route('admin_fieldradio', _query=(('InfoMsg', _('The Yes/No values were updated successfully.', request)), ('ShowCultures', shown_cultures ), ('DM', domain.id))) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') fields = [] with request.connmgr.get_connection('admin') as conn: fields = conn.execute('EXEC sp_%s_Field_Radio_l 1' % domain.str).fetchall() #errors = model_state.form.errors #raise Exception() # XXX should we refetch the basic info? fieldinfo_map = dict((str(f.FieldID), f) for f in fields) fields = variabledecode.variable_decode(request.POST)['field'] record_cultures = syslanguage.active_record_cultures() title = _('Change Field Yes/No Values', request) return self._create_response_namespace(title, title, dict(fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, fieldinfo_map=fieldinfo_map, ErrMsg=ErrMsg), no_index=True)
def list(self): if self.record_cultures: return syslanguage.active_record_cultures() return syslanguage.active_cultures()
def save(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if not domain: return self._go_to_page('~/admin/setup.asp') if (domain.id == const.DM_CIC and not user.cic.SuperUser) or \ (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() model_state = request.model_state model_state.schema = PostSchema() model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect args = [request.dboptions.MemberID, ','.join(map(str,model_state.value('HideField') or []))] sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_Fields_u_InactiveByMember ?,?, @ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % domain.str #raise Exception with request.connmgr.get_connection('admin') as conn: cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route('admin_fieldhide', _query=(('InfoMsg', _('The Fields were sucessfully updated.', request)), ('ShowCultures', shown_cultures ), ('DM', domain.id))) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') fields = [] with request.connmgr.get_connection('admin') as conn: fields = conn.execute('EXEC sp_%s_FieldOption_l_Hide ?' % ('GBL' if domain.id == const.DM_CIC else domain.str), request.MemberID).fetchall() #errors = model_state.form.errors #raise Exception() # XXX should we refetch the basic info? for field in fields: field.Descriptions = self._culture_dict_from_xml(field.Descriptions, 'DESC') record_cultures = syslanguage.active_record_cultures() title = _('Manage Hidden Fields', request) return self._create_response_namespace(title, title, dict(fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, ErrMsg=ErrMsg), no_index=True)
def save(self): request = self.request if request.POST.get("Delete"): self._go_to_route( "admin_socialmedia", action="delete", _query=[("SM_ID", request.POST.get("SM_ID"))], ) user = request.user if not user.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.schema = SocialMediaSchema() model_state.form.variable_decode = True validator = ciocvalidators.IDValidator() try: SM_ID = validator.to_python(request.POST.get("SM_ID")) except validators.Invalid: self._error_page(_("Invalid Social Media Type ID", request)) is_add = not SM_ID domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if model_state.validate(): # valid. Save changes and redirect args = [SM_ID, user.Mod] socialmedia = model_state.form.data.get("socialmedia", {}) args.extend(socialmedia.get(x) for x in socialmedia_fields) root = ET.Element("DESCS") for culture, data in model_state.form.data["descriptions"].items(): if culture.replace("_", "-") not in shown_cultures: continue desc = ET.SubElement(root, "DESC") ET.SubElement(desc, "Culture").text = culture.replace("_", "-") for name, value in data.items(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root, encoding="unicode")) with request.connmgr.get_connection("admin") as conn: sql = """ DECLARE @ErrMsg as nvarchar(500), @RC as int, @SM_ID as int SET @SM_ID = ? EXECUTE @RC = dbo.sp_GBL_SocialMedia_u @SM_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @SM_ID as SM_ID """ % ", ".join("?" * (len(args) - 1)) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: SM_ID = result.SM_ID if is_add: msg = _("The Social Media Type was successfully added.", request) else: msg = _("The Social Media Type was successfully updated.", request) self._go_to_route( "admin_socialmedia", action="edit", _query=[ ("InfoMsg", msg), ("SM_ID", SM_ID), ("ShowCultures", shown_cultures), ], ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") socialmedia = None if not is_add: with request.connmgr.get_connection("admin") as conn: cursor = conn.execute("EXEC dbo.sp_GBL_SocialMedia_s ?", model_state.value("SM_ID")) socialmedia = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() # errors = model_state.form.errors # data = model_state.form.data # raise Exception # XXX should we refetch the basic info? title = _("Manage Social Media Types", request) return self._create_response_namespace( title, title, dict( socialmedia=socialmedia, SM_ID=model_state.value("SM_ID"), shown_cultures=shown_cultures, record_cultures=record_cultures, is_add=is_add, ErrMsg=ErrMsg, ), no_index=True, )
def save(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() SuperUserGlobal = (domain.id == const.DM_CIC and user.cic.SuperUserGlobal) or ( domain.id == const.DM_VOL and user.vol.SuperUserGlobal) model_state = request.model_state model_state.schema = FieldHelpSchema() model_state.form.variable_decode = True if model_state.validate(): FieldID = model_state.form.data.get("FieldID") # valid. Save changes and redirect args = [ FieldID, request.dboptions.MemberID, SuperUserGlobal, user.Mod ] root = ET.Element("DESCS") for culture, data in model_state.form.data["descriptions"].items(): if culture.replace("_", "-") not in shown_cultures: continue desc = ET.SubElement(root, "DESC") ET.SubElement(desc, "Culture").text = culture.replace("_", "-") for name, value in data.items(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root, encoding="unicode")) with request.connmgr.get_connection("admin") as conn: sql = (""" DECLARE @ErrMsg as nvarchar(500), @RC as int EXEC @RC = dbo.sp_%s_FieldOption_u_Help ?, ?, ?, ?, ?, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg """ % domain.str) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route( "admin_fieldhelp", action="edit", _query=[ ("DM", domain.id), ( "InfoMsg", _("The Field Help was updated successfully.", request), ), ("FieldID", FieldID), ("ShowCultures", shown_cultures), ], ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") field = None with request.connmgr.get_connection("admin") as conn: cursor = conn.execute( "EXEC dbo.sp_%s_FieldOption_sf_Help ?, ?" % domain.str, model_state.value("FieldID"), request.dboptions.MemberID, ) field = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() title = _("Manage Field Help", request) return self._create_response_namespace( title, title, dict( SuperUserGlobal=SuperUserGlobal, domain=domain, field=field, FieldID=model_state.value("FieldID"), shown_cultures=shown_cultures, record_cultures=record_cultures, ErrMsg=ErrMsg, ), no_index=True, )
def edit(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if not domain: return self._go_to_page("~/admin/setup.asp") if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() SuperUserGlobal = (domain.id == const.DM_CIC and user.cic.SuperUserGlobal) or ( domain.id == const.DM_VOL and user.vol.SuperUserGlobal) model_state = request.model_state model_state.validators = { "FieldID": ciocvalidators.IDValidator(not_empty=True) } model_state.method = None if not model_state.validate(): # XXX invalid FieldID self._error_page(_("Invalid ID", request)) FieldID = model_state.form.data.get("FieldID") field = None field_descriptions = {} with request.connmgr.get_connection("admin") as conn: cursor = conn.execute( "EXEC dbo.sp_%s_FieldOption_sf_Help ?, ?" % domain.str, FieldID, request.dboptions.MemberID, ) field = cursor.fetchone() cursor.nextset() for lng in cursor.fetchall(): field_descriptions[lng.Culture.replace("-", "_")] = lng cursor.close() if not field: # not found self._error_page(_("Field Not Found", request)) model_state.form.data["descriptions"] = field_descriptions title = _("Manage Field Help", request) return self._create_response_namespace( title, title, dict( SuperUserGlobal=SuperUserGlobal, field=field, FieldID=FieldID, shown_cultures=shown_cultures, domain=domain, record_cultures=syslanguage.active_record_cultures(), ), no_index=True, )
def edit(self): request = self.request user = request.user if request.params.get("Delete"): self._go_to_route( "admin_interests", action="delete", _query=[("AI_ID", request.GET.get("AI_ID"))], ) if not user.vol.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = {"AI_ID": validators.IDValidator()} model_state.method = None if not model_state.validate(): # XXX invalid AI_ID self._error_page(_("Invalid ID", request)) AI_ID = model_state.form.data.get("AI_ID") is_add = not AI_ID interest = None interest_descriptions = {} groups = [] group_descs = [] with request.connmgr.get_connection("admin") as conn: if not is_add: cursor = conn.execute("EXEC dbo.sp_VOL_Interest_s ?", AI_ID) interest = cursor.fetchone() if interest: cursor.nextset() for lng in cursor.fetchall(): interest_descriptions[lng.Culture.replace("-", "_")] = lng cursor.nextset() groups = [str(x[0]) for x in cursor.fetchall()] cursor.close() if not interest: # not found self._error_page(_("Interest Not Found", request)) cursor = conn.execute("EXEC dbo.sp_VOL_Interest_s_FormLists") group_descs = cursor.fetchall() cursor.close() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) model_state.form.data["interest"] = interest if interest: model_state.form.data["Code"] = interest.Code model_state.form.data["descriptions"] = interest_descriptions model_state.form.data["groups"] = groups title = _("Manage Areas of Interest", request) return self._create_response_namespace( title, title, dict( interest=interest, AI_ID=AI_ID, is_add=is_add, shown_cultures=shown_cultures, group_descs=group_descs, record_cultures=syslanguage.active_record_cultures(), ), no_index=True, )
def save(self): request = self.request if request.POST.get('Delete'): self._go_to_route('admin_interests', action='delete', _query=[('AI_ID', request.POST.get('AI_ID'))]) user = request.user if not user.vol.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.schema = InterestSchema() model_state.form.variable_decode = True validator = validators.IDValidator() try: AI_ID = validator.to_python(request.POST.get('AI_ID')) except validators.Invalid: self._error_page(_('Invalid Interest ID', request)) is_add = not AI_ID domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if model_state.validate(): # valid. Save changes and redirect args = [AI_ID, user.Mod, model_state.value('Code')] root = ET.Element('DESCS') for culture, data in model_state.form.data['descriptions'].iteritems(): if culture.replace('_', '-') not in shown_cultures: continue desc = ET.SubElement(root, 'DESC') ET.SubElement(desc, "Culture").text = culture.replace('_', '-') for name, value in data.iteritems(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root)) root = ET.Element('GROUPS') for group_id in model_state.form.data['groups']: ET.SubElement(root, 'GROUP').text = unicode(group_id) args.append(ET.tostring(root)) with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int, @AI_ID as int SET @AI_ID = ? EXECUTE @RC = dbo.sp_VOL_Interest_u @AI_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @AI_ID as AI_ID ''' % ', '.join('?' * (len(args) - 1)) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: AI_ID = result.AI_ID self._go_to_route('admin_interests', action='edit', _query=[ ('InfoMsg', _('The Interests were successfully updated.', request)), ("AI_ID", AI_ID), ("ShowCultures", shown_cultures)]) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') interest = None group_descs = [] with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_VOL_Interest_s_FormLists') group_descs = cursor.fetchall() cursor.close() if not is_add: cursor = conn.execute('EXEC dbo.sp_VOL_Interest_s ?', AI_ID) interest = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() model_state.form.data['groups'] = request.POST.getall('groups') title = _('Manage Areas of Interest', request) return self._create_response_namespace( title, title, dict( interest=interest, AI_ID=AI_ID, shown_cultures=shown_cultures, record_cultures=record_cultures, group_descs=group_descs, is_add=is_add, ErrMsg=ErrMsg), no_index=True)
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.iteritems(): 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 = unicode(value) if list_type.HasModified: args = [user.Mod, ET.tostring(root)] else: args = [ET.tostring(root)] with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @RC int, @ErrMsg nvarchar(500) EXEC @RC = sp_%s_u %s, @ErrMsg OUTPUT SELECT @RC AS [Return], @ErrMsg AS ErrMsg''' % (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)
def _get_edit_info(self, num, BTPBID, number, base_params): request = self.request user = request.user publication = None publication_descriptions = {} fullorg = None generalheadings = [] taxonomyheadings = [] feedback = [] with request.connmgr.get_connection("admin") as conn: sql = "EXEC dbo.sp_CIC_NUMPub_s ?, ?, ?" cursor = conn.execute(sql, BTPBID, user.User_ID, request.viewdata.cic.ViewType) errordata = cursor.fetchone() if not errordata.Error: cursor.nextset() fullorg = cursor.fetchone().ORG_NAME_FULL cursor.nextset() publication = cursor.fetchone() cursor.nextset() for lng in cursor.fetchall(): publication_descriptions[lng.Culture.replace("-", "_")] = lng cursor.nextset() generalheadings = cursor.fetchall() cursor.nextset() taxonomyheadings = cursor.fetchall() cursor.nextset() feedback = cursor.fetchall() cursor.close() if errordata.Error: self._error_page(errordata.ErrMsg or _("An unknown error occurred.", request)) linked_headings = {str(x.GH_ID) for x in generalheadings if x.SELECTED} record_cultures = [ x for x in syslanguage.active_record_cultures() if x.replace("-", "_") in publication_descriptions ] return EditValues( publication, publication_descriptions, linked_headings, fullorg, generalheadings, taxonomyheadings, feedback, num, BTPBID, number, record_cultures, )
def edit(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if not domain: return self._go_to_page('~/admin/setup.asp') if (domain.id == const.DM_CIC and not user.cic.SuperUser) or \ (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() SuperUserGlobal = (domain.id == const.DM_CIC and user.cic.SuperUserGlobal) \ or (domain.id == const.DM_VOL and user.vol.SuperUserGlobal) model_state = request.model_state model_state.validators = { 'FieldID': ciocvalidators.IDValidator(not_empty=True) } model_state.method = None if not model_state.validate(): # XXX invalid FieldID self._error_page(_('Invalid ID', request)) FieldID = model_state.form.data.get('FieldID') field = None field_descriptions = {} with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_%s_FieldOption_sf_Help ?, ?' % domain.str, FieldID, request.dboptions.MemberID) field = cursor.fetchone() cursor.nextset() for lng in cursor.fetchall(): field_descriptions[lng.Culture.replace('-', '_')] = lng cursor.close() if not field: # not found self._error_page(_('Field Not Found', request)) model_state.form.data['descriptions'] = field_descriptions title = _('Manage Field Help', request) return self._create_response_namespace( title, title, dict( SuperUserGlobal=SuperUserGlobal, field=field, FieldID=FieldID, shown_cultures=shown_cultures, domain=domain, record_cultures=syslanguage.active_record_cultures() ), no_index=True)
def save(self): request = self.request user = request.user chk_type = self.request.context.chk_type all_values = not self.request.dboptions.OtherMembersActive shared_values = not not ( all_values or not self.request.matched_route.name.endswith("_local")) SuperUserGlobal = self._check_security( chk_type, chk_type.Shared == "full" or shared_values) if shared_values and not SuperUserGlobal: self._security_failure() if chk_type.ShowAdd: extra_validators = { chk_type.ID: Any(ciocvalidators.IDValidator(), validators.OneOf(["NEW"])) } else: extra_validators = { chk_type.ID: ciocvalidators.IDValidator(not_empty=chk_type.CanDelete) } if chk_type.CodeTitle: if not chk_type.CodeValidator: extra_validators[chk_type.CodeField] = ciocvalidators.String( max=chk_type.CodeMaxLength) else: extra_validators[chk_type.CodeField] = chk_type.CodeValidator if chk_type.DisplayOrder: extra_validators["DisplayOrder"] = validators.Int(min=0, max=256, if_empty=0) if chk_type.ShowOnForm: extra_validators["ShowOnForm"] = validators.Bool() for field in chk_type.ExtraFields or []: extra_validators[field["field"]] = field["validator"] extra_name_validators = {} for field in chk_type.ExtraNameFields or []: extra_name_validators[field["field"]] = field["validator"] base_schema = make_checklist_base_schema(extra_name_validators, **extra_validators) schema_params = {"chkitem": foreach.ForEach(base_schema)} schema = PostSchema(**schema_params) model_state = request.model_state model_state.form.state.chk_type = chk_type model_state.schema = schema model_state.form.variable_decode = True domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if model_state.validate(): # valid. Save changes and redirect root = ET.Element("CHECKLIST") for i, chkitem in enumerate(model_state.form.data["chkitem"]): if should_skip_item(chk_type, chkitem): continue chk_el = ET.SubElement(root, "CHK") ET.SubElement(chk_el, "CNT").text = str(i) for key, value in chkitem.items(): if key == chk_type.ID and value == "NEW": value = -1 elif isinstance(value, bool): value = int(value) if key != "Descriptions": if value is not None: ET.SubElement(chk_el, key).text = str(value) continue descs = ET.SubElement(chk_el, "DESCS") for culture, data in value.items(): culture = culture.replace("_", "-") if culture not in shown_cultures: continue desc = ET.SubElement(descs, "DESC") ET.SubElement(desc, "Culture").text = culture for key, value in data.items(): if value: ET.SubElement(desc, key).text = value args = [ request.dboptions.MemberID, user.Mod, ET.tostring(root, encoding="unicode"), ] with request.connmgr.get_connection("admin") as conn: sql = chk_type.UpdateSQL(shared_values) log.debug("sql: %s", sql) log.debug("args: %s", 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), ), ("ShowCultures", shown_cultures), ("chk", chk_type.FieldCode), ), ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") chkitems, chkusage = self._get_edit_info( chk_type, not all_values and not shared_values, not all_values and shared_values, not SuperUserGlobal, ) record_cultures = syslanguage.active_record_cultures() chkitems = variabledecode.variable_decode(request.POST)["chkitem"] model_state.form.data["chkitem"] = chkitems type_name = "" if chk_type.Shared == "partial" and not all_values: if shared_values: type_name = _("Shared", self.request) else: type_name = _("Local", self.request) title_template = _(chk_type.PageTitleTemplate, self.request) % { "type": type_name } title = (chk_type.CheckListName if request.viewdata.PrintMode else title_template.format(chk_type.CheckListName)) return self._create_response_namespace( title, title, dict( chkitems=chkitems, record_cultures=record_cultures, shown_cultures=shown_cultures, SuperUserGlobal=SuperUserGlobal, chkusage=chkusage, chk_type=chk_type, ErrMsg=ErrMsg, ), no_index=True, )
def edit(self): request = self.request user = request.user if request.params.get('Delete'): self._go_to_route('admin_interests', action='delete', _query=[('AI_ID', request.GET.get('AI_ID'))]) if not user.vol.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.validators = { 'AI_ID': validators.IDValidator() } model_state.method = None if not model_state.validate(): # XXX invalid AI_ID self._error_page(_('Invalid ID', request)) AI_ID = model_state.form.data.get('AI_ID') is_add = not AI_ID interest = None interest_descriptions = {} groups = [] group_descs = [] with request.connmgr.get_connection('admin') as conn: if not is_add: cursor = conn.execute('EXEC dbo.sp_VOL_Interest_s ?', AI_ID) interest = cursor.fetchone() if interest: cursor.nextset() for lng in cursor.fetchall(): interest_descriptions[lng.Culture.replace('-', '_')] = lng cursor.nextset() groups = [unicode(x[0]) for x in cursor.fetchall()] cursor.close() if not interest: # not found self._error_page(_('Interest Not Found', request)) cursor = conn.execute('EXEC dbo.sp_VOL_Interest_s_FormLists') group_descs = cursor.fetchall() cursor.close() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) model_state.form.data['interest'] = interest if interest: model_state.form.data['Code'] = interest.Code model_state.form.data['descriptions'] = interest_descriptions model_state.form.data['groups'] = groups title = _('Manage Areas of Interest', request) return self._create_response_namespace( title, title, dict( interest=interest, AI_ID=AI_ID, is_add=is_add, shown_cultures=shown_cultures, group_descs=group_descs, record_cultures=syslanguage.active_record_cultures()), no_index=True)
def save(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if (domain.id == const.DM_CIC and not user.cic.SuperUser) or \ (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() SuperUserGlobal = (domain.id == const.DM_CIC and user.cic.SuperUserGlobal) \ or (domain.id == const.DM_VOL and user.vol.SuperUserGlobal) model_state = request.model_state model_state.schema = FieldHelpSchema() model_state.form.variable_decode = True if model_state.validate(): FieldID = model_state.form.data.get('FieldID') # valid. Save changes and redirect args = [FieldID, request.dboptions.MemberID, SuperUserGlobal, user.Mod] root = ET.Element('DESCS') for culture, data in model_state.form.data['descriptions'].iteritems(): if culture.replace('_', '-') not in shown_cultures: continue desc = ET.SubElement(root, 'DESC') ET.SubElement(desc, "Culture").text = culture.replace('_', '-') for name, value in data.iteritems(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root)) with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXEC @RC = dbo.sp_%s_FieldOption_u_Help ?, ?, ?, ?, ?, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % domain.str cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route('admin_fieldhelp', action='edit', _query=[('DM', domain.id), ('InfoMsg', _('The Field Help was updated successfully.', request)), ("FieldID", FieldID), ("ShowCultures", shown_cultures)]) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') field = None with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_%s_FieldOption_sf_Help ?, ?' % domain.str, model_state.value('FieldID'), request.dboptions.MemberID) field = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() title = _('Manage Field Help', request) return self._create_response_namespace( title, title, dict( SuperUserGlobal=SuperUserGlobal, domain=domain, field=field, FieldID=model_state.value('FieldID'), shown_cultures=shown_cultures, record_cultures=record_cultures, ErrMsg=ErrMsg ), no_index=True)
def save(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if not domain: return self._go_to_page("~/admin/setup.asp") if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() model_state = request.model_state model_state.schema = PostSchema() model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect root = ET.Element("FIELDS") for field in model_state.form.data["field"]: field_el = ET.SubElement(root, "Field") for key, value in field.items(): if key != "Descriptions": ET.SubElement(field_el, key).text = str(value) continue descs = ET.SubElement(field_el, "DESCS") for culture in shown_cultures: desc = ET.SubElement(descs, "DESC") ET.SubElement(desc, "Culture").text = culture for key, val in (value.get(culture.replace("-", "_")) or {}).items(): if val: ET.SubElement(desc, key).text = val args = [ user.Mod, request.dboptions.MemberID, (domain.id == const.DM_CIC and user.cic.SuperUserGlobal) or (domain.id == const.DM_VOL and user.vol.SuperUserGlobal), ET.tostring(root, encoding="unicode"), ] sql = (""" DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_Fields_u ?, ?, ?, ?, @ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg """ % domain.str) with request.connmgr.get_connection("admin") as conn: cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route( "admin_fielddisplay", _query=( ("InfoMsg", _("The Fields were sucessfully updated.", request)), ("ShowCultures", shown_cultures), ("DM", domain.id), ), ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") fields = [] with request.connmgr.get_connection("admin") as conn: fields = conn.execute( "EXEC sp_%s_FieldOption_l_Display ?, 0" % ("GBL" if domain.id == const.DM_CIC else domain.str), request.MemberID, ).fetchall() # errors = model_state.form.errors # raise Exception() # XXX should we refetch the basic info? fieldinfo_map = {str(f.FieldID): f for f in fields} fields = variabledecode.variable_decode(request.POST)["field"] record_cultures = syslanguage.active_record_cultures() title = _("Change Field Display", request) return self._create_response_namespace( title, title, dict( fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, fieldinfo_map=fieldinfo_map, ErrMsg=ErrMsg, ), no_index=True, )
def save(self): request = self.request user = request.user chk_type = self.request.context.chk_type all_values = not self.request.dboptions.OtherMembersActive shared_values = not not (all_values or not self.request.matched_route.name.endswith('_local')) SuperUserGlobal = self._check_security(chk_type, chk_type.Shared == 'full' or shared_values) if shared_values and not SuperUserGlobal: self._security_failure() if chk_type.ShowAdd: extra_validators = {chk_type.ID: Any(ciocvalidators.IDValidator(), validators.OneOf(['NEW']))} else: extra_validators = {chk_type.ID: ciocvalidators.IDValidator(not_empty=chk_type.CanDelete)} if chk_type.CodeTitle: if not chk_type.CodeValidator: extra_validators[chk_type.CodeField] = ciocvalidators.String(max=chk_type.CodeMaxLength) else: extra_validators[chk_type.CodeField] = chk_type.CodeValidator if chk_type.DisplayOrder: extra_validators['DisplayOrder'] = validators.Int(min=0, max=256, if_empty=0) if chk_type.ShowOnForm: extra_validators['ShowOnForm'] = validators.Bool() for field in chk_type.ExtraFields or []: extra_validators[field['field']] = field['validator'] extra_name_validators = {} for field in chk_type.ExtraNameFields or []: extra_name_validators[field['field']] = field['validator'] base_schema = make_checklist_base_schema(extra_name_validators, **extra_validators) schema_params = {'chkitem': foreach.ForEach(base_schema)} schema = PostSchema(**schema_params) model_state = request.model_state model_state.form.state.chk_type = chk_type model_state.schema = schema model_state.form.variable_decode = True domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if model_state.validate(): # valid. Save changes and redirect root = ET.Element('CHECKLIST') for i, chkitem in enumerate(model_state.form.data['chkitem']): if should_skip_item(chk_type, chkitem): continue chk_el = ET.SubElement(root, 'CHK') ET.SubElement(chk_el, "CNT").text = unicode(i) for key, value in chkitem.iteritems(): if key == chk_type.ID and value == 'NEW': value = -1 elif isinstance(value, bool): value = int(value) if key != 'Descriptions': if value is not None: ET.SubElement(chk_el, key).text = unicode(value) continue descs = ET.SubElement(chk_el, 'DESCS') for culture, data in value.iteritems(): culture = culture.replace('_', '-') if culture not in shown_cultures: continue desc = ET.SubElement(descs, 'DESC') ET.SubElement(desc, 'Culture').text = culture for key, value in data.iteritems(): if value: ET.SubElement(desc, key).text = value args = [request.dboptions.MemberID, user.Mod, ET.tostring(root)] with request.connmgr.get_connection('admin') as conn: sql = chk_type.UpdateSQL(shared_values) log.debug('sql: %s', sql) log.debug('args: %s', 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)), ('ShowCultures', shown_cultures), ('chk', chk_type.FieldCode))) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') chkitems, chkusage = self._get_edit_info(chk_type, not all_values and not shared_values, not all_values and shared_values, not SuperUserGlobal) record_cultures = syslanguage.active_record_cultures() chkitems = variabledecode.variable_decode(request.POST)['chkitem'] model_state.form.data['chkitem'] = chkitems type_name = '' if chk_type.Shared == 'partial' and not all_values: if shared_values: type_name = _('Shared', self.request) else: type_name = _('Local', self.request) title_template = _(chk_type.PageTitleTemplate, self.request) % {'type': type_name} title = chk_type.CheckListName if request.viewdata.PrintMode else title_template.format(chk_type.CheckListName) return self._create_response_namespace( title, title, dict( chkitems=chkitems, record_cultures=record_cultures, shown_cultures=shown_cultures, SuperUserGlobal=SuperUserGlobal, chkusage=chkusage, chk_type=chk_type, ErrMsg=ErrMsg), no_index=True)
def save(self): request = self.request user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) if not domain: return self._go_to_page("~/admin/setup.asp") if (domain.id == const.DM_CIC and not user.cic.SuperUser) or (domain.id == const.DM_VOL and not user.vol.SuperUser): self._security_failure() model_state = request.model_state model_state.schema = PostSchema() model_state.form.variable_decode = True if model_state.validate(): # valid. Save changes and redirect args = [ request.dboptions.MemberID, ",".join(map(str, model_state.value("HideField") or [])), ] sql = (""" DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_Fields_u_InactiveByMember ?,?, @ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg """ % domain.str) # raise Exception with request.connmgr.get_connection("admin") as conn: cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route( "admin_fieldhide", _query=( ("InfoMsg", _("The Fields were sucessfully updated.", request)), ("ShowCultures", shown_cultures), ("DM", domain.id), ), ) ErrMsg = _("Unable to save: ") + result.ErrMsg else: ErrMsg = _("There were validation errors.") fields = [] with request.connmgr.get_connection("admin") as conn: fields = conn.execute( "EXEC sp_%s_FieldOption_l_Hide ?" % ("GBL" if domain.id == const.DM_CIC else domain.str), request.MemberID, ).fetchall() # errors = model_state.form.errors # raise Exception() # XXX should we refetch the basic info? for field in fields: field.Descriptions = self._culture_dict_from_xml( field.Descriptions, "DESC") record_cultures = syslanguage.active_record_cultures() title = _("Manage Hidden Fields", request) return self._create_response_namespace( title, title, dict( fields=fields, record_cultures=record_cultures, domain=domain, shown_cultures=shown_cultures, ErrMsg=ErrMsg, ), no_index=True, )
def save(self): request = self.request user = request.user if not user.SuperUserGlobal: self._security_failure() is_alt_area = not not request.params.get('altarea') CM_ID = self._get_cmid() is_add = not CM_ID if not is_add and request.POST.get('Delete'): self._go_to_route('admin_community', action='delete', _query=[('CM_ID', CM_ID)]) model_state = request.model_state model_state.form.variable_decode = True if is_alt_area: log.debug('alt area') model_state.schema = AltAreasSchema() else: log.debug('community') model_state.schema = CommunitySchema() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if model_state.validate(): # valid. Save changes and redirect data = model_state.form.data cm_data = data.get('community', {}) args = [CM_ID, user.Mod, is_alt_area, cm_data.get('ParentCommunity'), cm_data.get('ProvinceState')] root = ET.Element('DESCS') for culture, description in model_state.form.data['descriptions'].iteritems(): if culture.replace('_', '-') not in shown_cultures: continue desc = ET.SubElement(root, 'DESC') ET.SubElement(desc, "Culture").text = culture.replace('_', '-') for name, value in description.iteritems(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root)) root = ET.Element('NAMES') for name in model_state.form.data.get('alt_names') or []: if name.get('Delete') or not name.get('AltName') or \ (not name.get('New') and name['Culture'].replace('_', '-') not in shown_cultures): continue desc = ET.SubElement(root, 'Name') ET.SubElement(desc, 'Culture').text = name['Culture'] ET.SubElement(desc, 'AltName').text = name['AltName'] args.append(ET.tostring(root)) if is_alt_area: root = ET.Element('ALTAREAS') for area in data.get('alt_areas') or []: ET.SubElement(root, 'CM_ID').text = unicode(area) args.append(ET.tostring(root)) else: args.append(None) root = ET.Element('ShownCultures') for culture in shown_cultures: ET.SubElement(root, 'Culture').text = culture args.append(ET.tostring(root)) sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int, @CM_ID as int SET @CM_ID = ? EXECUTE @RC = dbo.sp_GBL_Community_u @CM_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @CM_ID as CM_ID ''' % ', '.join('?' * (len(args) - 1)) with request.connmgr.get_connection('admin') as conn: result = conn.execute(sql, *args).fetchone() if not result.Return: CM_ID = result.CM_ID if is_alt_area: if is_add: msg = _('The Alternate Search Area was successfully added.', request) else: msg = _('The Alternate Search Area was successfully updated.', request) else: if is_add: msg = _('The Community was successfully added.', request) else: msg = _('The Community was successfully updated.', request) self._go_to_route('admin_community', action='edit', _query=[('InfoMsg', msg), ("CM_ID", CM_ID), ("ShowCultures", shown_cultures)]) ErrMsg = _('Unable to save: ') + result.ErrMsg alt_areas = data.get('alt_areas') or [] else: ErrMsg = _('There were validation errors.') data = model_state.form.data decoded = variable_decode(request.POST) alt_areas = decoded.get('alt_areas') or [] data['alt_areas'] = alt_areas data['alt_names'] = decoded.get('alt_names') or [] edit_values = self._get_edit_info(CM_ID, is_add, alt_areas) record_cultures = syslanguage.active_record_cultures() # XXX should we refetch the basic info? title = _('Manage Communities', request) return self._create_response_namespace(title, title, dict(community=edit_values.community, CM_ID=CM_ID, is_alt_area=is_alt_area, prov_state=edit_values.prov_state, alt_area_name_map=edit_values.alt_area_name_map, shown_cultures=shown_cultures, record_cultures=record_cultures, is_add=is_add, ErrMsg=ErrMsg), no_index=True)
def _get_edit_info(self, is_add, reminder_id, is_error=False): request = self.request reminder = None reminder_users = [] reminder_agencies = [] nums = [] vnums = [] agencies = [] note_types = [] with request.connmgr.get_connection('admin') as conn: if not is_add: sql = '''EXEC sp_GBL_Reminder_s ?, ?''' cursor = conn.execute(sql, request.dboptions.MemberID, reminder_id) reminder = cursor.fetchone() if not reminder: request.response.status = '404 Not Found' return {'ErrMsg': _('Reminder not found', request), 'ErrorPage': True} if not is_error: cursor.nextset() reminder_users = cursor.fetchall() cursor.nextset() reminder_agencies = cursor.fetchall() cursor.nextset() nums = cursor.fetchall() cursor.nextset() vnums = cursor.fetchall() cursor.close() cursor = conn.execute(''' EXEC sp_GBL_Agency_l ?, ? EXEC sp_GBL_RecordNote_Type_l ''', request.dboptions.MemberID, False) agencies = [x.AgencyCode for x in cursor.fetchall()] cursor.nextset() note_types = [(x[0], ('[ ! ] ' if x[1] else '') + x[2]) for x in cursor.fetchall()] cursor.close() org_names = ((x[0], x.ORG_NAME_FULL) for x in nums) org_names = {k: v for k, v in org_names if v} pos_titles = {str(k): v for k, v in vnums if v} data = request.model_state.form.data if not is_add: if not is_error: data['reminder'] = reminder data['reminder_user_ID'] = [unicode(x[0]) for x in reminder_users] data['reminder_agency_ID'] = [x[0] for x in reminder_agencies] data['NUM'] = [x[0] for x in nums] data['VNUM'] = [unicode(x[0]) for x in vnums] if is_add or is_error: data['NUM'] = request.params.getall('NUM') data['VNUM'] = request.params.getall('VNUM') if not is_add or is_error: val = request.model_state.value('reminder.DismissForAll') data['reminder.DismissForAll'] = dismiss_options_reverse.get(val, val if val is not None else 'S') namespace = { '_': lambda x: i18n.gettext(x, request), 'format_date': lambda x: i18n.format_date(x, request), 'reminder': reminder, 'record_cultures': syslanguage.active_record_cultures(), 'culture_map': syslanguage.culture_map(), 'agencies': agencies, 'note_types': note_types, 'ReminderID': reminder_id, 'reminder_users': reminder_users, 'reminder_agencies': reminder_agencies, 'org_names': org_names, 'position_titles': pos_titles, 'renderer': request.model_state.renderer } return {'form': render(templateprefix + 'edit_form.mak', namespace, request)}
def save(self): request = self.request if request.POST.get('Delete'): self._go_to_route('admin_socialmedia', action='delete', _query=[('SM_ID', request.POST.get('SM_ID'))]) user = request.user if not user.SuperUserGlobal: self._security_failure() model_state = request.model_state model_state.schema = SocialMediaSchema() model_state.form.variable_decode = True validator = ciocvalidators.IDValidator() try: SM_ID = validator.to_python(request.POST.get('SM_ID')) except validators.Invalid: self._error_page(_('Invalid Social Media Type ID', request)) is_add = not SM_ID domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) if model_state.validate(): # valid. Save changes and redirect args = [SM_ID, user.Mod] socialmedia = model_state.form.data.get('socialmedia', {}) args.extend(socialmedia.get(x) for x in socialmedia_fields) root = ET.Element('DESCS') for culture, data in model_state.form.data['descriptions'].iteritems(): if culture.replace('_', '-') not in shown_cultures: continue desc = ET.SubElement(root, 'DESC') ET.SubElement(desc, "Culture").text = culture.replace('_', '-') for name, value in data.iteritems(): if value: ET.SubElement(desc, name).text = value args.append(ET.tostring(root)) with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int, @SM_ID as int SET @SM_ID = ? EXECUTE @RC = dbo.sp_GBL_SocialMedia_u @SM_ID OUTPUT, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg, @SM_ID as SM_ID ''' % ', '.join('?' * (len(args) - 1)) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: SM_ID = result.SM_ID if is_add: msg = _('The Social Media Type was successfully added.', request) else: msg = _('The Social Media Type was successfully updated.', request) self._go_to_route('admin_socialmedia', action='edit', _query=[('InfoMsg', msg), ("SM_ID", SM_ID), ("ShowCultures", shown_cultures)]) ErrMsg = _('Unable to save: ') + result.ErrMsg else: ErrMsg = _('There were validation errors.') socialmedia = None if not is_add: with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_GBL_SocialMedia_s ?', model_state.value('SM_ID')) socialmedia = cursor.fetchone() cursor.close() record_cultures = syslanguage.active_record_cultures() # errors = model_state.form.errors # data = model_state.form.data # raise Exception # XXX should we refetch the basic info? title = _('Manage Social Media Types', request) return self._create_response_namespace(title, title, dict(socialmedia=socialmedia, SM_ID=model_state.value('SM_ID'), shown_cultures=shown_cultures, record_cultures=record_cultures, is_add=is_add, ErrMsg=ErrMsg), no_index=True)