def _basic_info(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() validator = ciocvalidators.IDValidator(not_empty=True) try: ViewType = validator.to_python(request.params.get("ViewType")) except validators.Invalid as e: self._error_page(_("Invalid View Type: ", request) + e.msg) return ViewType, domain, shown_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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC sp_%s_View_l ?, ?, 1, NULL' % domain.str, request.dboptions.MemberID, user.Agency) views = cursor.fetchall() cursor.close() title = _('Manage Views (%s)', request) % _(domain.label, request) return self._create_response_namespace(title, title, dict(views=views, domain=domain), no_index=True)
def delete(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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.validators = { 'ViewType': ciocvalidators.IDValidator(not_empty=True) } model_state.method = None if not model_state.validate(): self._error_page(_('Invalid ID', request)) ViewType = model_state.form.data['ViewType'] request.override_renderer = 'cioc.web:templates/confirmdelete.mak' title = _('Manage Views (%s)', request) % _(domain.label, request) return self._create_response_namespace(title, title, dict(id_name='ViewType', id_value=ViewType, route='admin_view', action='delete', domain=domain), 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 add_lang(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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.validators = { 'ViewType': ciocvalidators.IDValidator(not_empty=True), 'Culture': ciocvalidators.ActiveCulture(not_empty=True) } model_state.method = None if not model_state.validate(): # XXX invalid ViewType or Culture if 'ViewType' in model_state.form.errors: self._error_page(_('Invalid ID', request)) else: self._error_page(_('Invalid Request', request)) ViewType = model_state.form.data.get('ViewType') Culture = model_state.form.data.get('Culture') LangID = syslanguage.culture_map()[Culture].LangID with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_View_i_Lang ?, ?, ?, ?, ?, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % domain.str cursor = conn.execute(sql, ViewType, user.Mod, request.dboptions.MemberID, user.Agency, LangID) result = cursor.fetchone() cursor.close() query = [('ViewType', ViewType), ('DM', domain.id)] if result.Return: query.append(('ErrMsg', result.ErrMsg)) self._go_to_route('admin_view', action='edit', _query=query)
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 delete_confirm(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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.validators = { 'ViewType': ciocvalidators.IDValidator(not_empty=True) } model_state.method = None if not model_state.validate(): self._error_page(_('Invalid ID', request)) ViewType = model_state.form.data['ViewType'] with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_View_d ?, ?, ?, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % domain.str cursor = conn.execute(sql, ViewType, request.dboptions.MemberID, user.Agency) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route('admin_view_index', _query=[('InfoMsg', _('View Deleted', request)), ('DM', domain.id)]) if result.Return == 3: self._error_page(_('Unable to delete View: ', request) + result.ErrMsg) self._go_to_route('admin_view', action='edit', _query=[('ErrMsg', _('Unable to delete View: ') + result.ErrMsg), ('ViewType', ViewType), ('DM', domain.id)])
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 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 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_edit_info(self, CM_ID, is_add, alt_area_get_names=None): request = self.request community = None community_descriptions = {} alt_names = [] alt_areas = [] prov_state = [] alt_area_name_map = {} with request.connmgr.get_connection('admin') as conn: if not is_add: cursor = conn.execute('EXEC dbo.sp_GBL_Community_s ?', CM_ID) community = cursor.fetchone() if community: cursor.nextset() log.debug('descriptions') for lng in cursor.fetchall(): community_descriptions[lng.Culture.replace('-', '_')] = lng cursor.nextset() alt_names = cursor.fetchall() cursor.nextset() alt_areas = cursor.fetchall() cursor.close() if not community: # not found self._error_page(_('Community Not Found', request)) prov_state = map(tuple, conn.execute('SELECT ProvID, GBL_ProvinceStateCountry FROM dbo.vw_GBL_ProvinceStateCountry').fetchall()) if alt_area_get_names: alt_area_name_map = {str(x[0]): x[1] for x in conn.execute('EXEC sp_GBL_Community_ls_Names ?', ','.join(str(x) for x in alt_area_get_names)).fetchall()} if community: community.AltSearchArea = xml_to_dict_list(community.AltSearchArea) if alt_area_get_names is None: alt_area_name_map = {str(x[0]): x[1] for x in alt_areas} domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params) return EditValues(CM_ID, community, community_descriptions, alt_names, alt_areas, prov_state, alt_area_name_map, shown_cultures)
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 delete_lang(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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.validators = { 'ViewType': ciocvalidators.IDValidator(not_empty=True), 'Culture': ciocvalidators.ActiveCulture(not_empty=True) } model_state.method = None if not model_state.validate(): # XXX invalid ViewType or Culture if 'ViewType' in model_state.form.errors: self._error_page(_('Invalid ID', request)) else: self._error_page(_('Invalid Request', request)) ViewType = model_state.form.data.get('ViewType') Culture = model_state.form.data.get('Culture') title = _('Manage Views (%s)', request) % _(domain.label, request) return self._create_response_namespace(title, title, dict(ViewType=ViewType, Culture=Culture, domain=domain), 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 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)
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 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 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.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 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 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 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_view', action='delete', _query=[('ViewType', request.POST.get('ViewType')), ('DM', request.POST.get('DM'))]) user = request.user if not user.SuperUser: self._security_failure() domain, shown_cultures = viewbase.get_domain_and_show_cultures(request.params, ensure_active_cultures=False, record_cultures=False) if not domain: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol schema = ViewSchemaCIC() else: user_dm = user.vol schema = ViewSchemaVOL() if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.schema = schema model_state.form.variable_decode = True if domain.id == const.DM_CIC and not request.dboptions.UseCIC: request.POST['item.QuickListDropDown'] = 1 request.POST['item.QuickListWrapAt'] = 1 request.POST['item.QuickListMatchAll'] = 'ANY' if model_state.validate(): # valid. Save changes and redirect form_data = model_state.form.data ViewType = form_data['ViewType'] args = [ViewType, user.Mod, request.dboptions.MemberID, user.Agency] view_fields = schema.fields['item'].fields.keys() view = form_data.get('item', {}) args.extend(view.get(k) for k in view_fields) dopts_fields = DisplayOptionSchema.fields.keys() dopts_fields.remove('FieldIDs') dopts = form_data.get('dopts', {}) args.extend(dopts.get(k) for k in dopts_fields) argnames = view_fields + dopts_fields if domain.id == const.DM_CIC: root = ET.Element('PubIDs') if view.get('CanSeeNonPublicPub') is None: for pub in form_data['PUB_ID']: ET.SubElement(root, "PBID").text = unicode(pub) args.append(ET.tostring(root)) argnames.append('Publications') root = ET.Element('PubIDs') for pub in form_data['ADDPUB_ID']: ET.SubElement(root, "PBID").text = unicode(pub) args.append(ET.tostring(root)) argnames.append('AddPublications') root = ET.Element('DESCS') has_label_overrides = form_data.get('HasLabelOverrides') for culture, data in (form_data['descriptions'] or {}).iteritems(): desc = ET.SubElement(root, 'DESC') ET.SubElement(desc, "Culture").text = culture.replace('_', '-') for name, value in data.iteritems(): if not has_label_overrides and name in label_override_fields: continue if value: ET.SubElement(desc, name).text = unicode(value) args.append(ET.tostring(root)) root = ET.Element('VIEWS') for view_type in form_data['Views']: ET.SubElement(root, 'VIEW').text = unicode(view_type) args.append(ET.tostring(root)) root = ET.Element('AdvSearchCheckLists') for field in form_data['AdvSearchCheckLists']: ET.SubElement(root, "Chk").text = unicode(field) args.append(ET.tostring(root)) args.append(",".join(str(x) for x in dopts['FieldIDs'])) argnames.extend(['Descriptions', 'Views', 'AdvSrchCheckLists', 'DisplayOptFields']) argnames = ', '.join(k.join(('@', '=?')) for k in argnames) with request.connmgr.get_connection('admin') as conn: sql = ''' DECLARE @ErrMsg as nvarchar(500), @RC as int EXECUTE @RC = dbo.sp_%s_View_u ?, ?, ?, ?, %s, @ErrMsg=@ErrMsg OUTPUT SELECT @RC as [Return], @ErrMsg AS ErrMsg ''' % (domain.str, argnames) cursor = conn.execute(sql, *args) result = cursor.fetchone() cursor.close() if not result.Return: self._go_to_route('admin_view', action='edit', _query=[('InfoMsg', _('The View has been successfully updated.', request)), ("ViewType", ViewType), ('DM', domain.id)]) ErrMsg = _('Unable to save: ') + result.ErrMsg else: if model_state.is_error('ViewType'): self._error_page(_('Invalid View ID', request)) ErrMsg = _('There were validation errors.') log.debug('errors: %s', model_state.form.errors) usage = None security_levels = [] view_cultures = set() templates = [] agencies = [] view_descs = [] chk_field_descs = [] inclusion_policies = [] search_tips = [] disp_opt_field_descs = [] print_profiles = [] publication_descs = [] community_sets = [] ViewType = model_state.value('ViewType') with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_%s_View_s_FormLists ?, ?, ?' % domain.str, request.dboptions.MemberID, user.Agency, ViewType) usage = cursor.fetchone() cursor.nextset() security_levels = cursor.fetchall() cursor.nextset() view_cultures = set(x.Culture for x in cursor.fetchall()) cursor.nextset() templates = [tuple(x) for x in cursor.fetchall()] cursor.nextset() agencies = [tuple(x) for x in cursor.fetchall()] cursor.nextset() view_descs = cursor.fetchall() cursor.nextset() chk_field_descs = cursor.fetchall() cursor.nextset() inclusion_policies = cursor.fetchall() cursor.nextset() search_tips = cursor.fetchall() cursor.nextset() disp_opt_field_descs = cursor.fetchall() cursor.nextset() print_profiles = cursor.fetchall() if domain.id == const.DM_CIC: cursor.nextset() publication_descs = cursor.fetchall() else: cursor.nextset() community_sets = [tuple(x) for x in cursor.fetchall()] cursor.close() data = model_state.form.data publications = [] auto_add_pubs = [] if domain.id == const.DM_CIC: val = model_state.value('item.CanSeeNonPublicPub') data['item.CanSeeNonPublicPub'] = RCanSeeNonPublicPubOptions.get(val, val) val = model_state.value('item.QuickListMatchAll') data['item.QuickListMatchAll'] = RQuickListMatchAllOptions.get(val, val) val = model_state.value('item.SrchCommunityDefault') data['item.SrchCommunityDefault'] = RSrchCommunityDefaultOptions.get(val, val) val = model_state.value('item.CCRFields') data['item.CCRFields'] = RCCRFieldsOptions.get(val, val) data['PUB_ID'] = publications = request.POST.getall('PUB_ID') data['ADDPUB_ID'] = auto_add_pubs = request.POST.getall('ADDPUB_ID') pubs_with_headings = [x for x in publication_descs if x.HasHeadings] data['Views'] = request.POST.getall('Views') data['AdvSearchCheckLists'] = request.POST.getall('AdvSearchCheckLists') data['dopts.FieldIDs'] = request.POST.getall('dopts.FieldIDs') title = _('Manage Views (%s)', request) % _(domain.label, request) return self._create_response_namespace( title, title, dict(ViewType=ViewType, usage=usage, security_levels=security_levels, view_cultures=view_cultures, templates=templates, agencies=agencies, community_sets=community_sets, publications=publications, auto_add_pubs=auto_add_pubs, publication_descs=format_pub_list(publication_descs, True), pubs_with_headings=format_pub_list(pubs_with_headings, True), inclusion_policies=inclusion_policies, domain=domain, search_tips=search_tips, chk_field_descs=chk_field_descs, view_descs=view_descs, ErrMsg=ErrMsg, disp_opt_field_descs=[tuple(x) for x in disp_opt_field_descs], print_profiles=[tuple(x) for x in print_profiles]), 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 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 _get_edit_info(self, CM_ID, is_add, alt_area_get_names=None): request = self.request community = None community_descriptions = {} alt_names = [] alt_areas = [] prov_state = [] alt_area_name_map = {} with request.connmgr.get_connection("admin") as conn: if not is_add: cursor = conn.execute("EXEC dbo.sp_GBL_Community_s ?", CM_ID) community = cursor.fetchone() if community: cursor.nextset() log.debug("descriptions") for lng in cursor.fetchall(): community_descriptions[lng.Culture.replace("-", "_")] = lng cursor.nextset() alt_names = cursor.fetchall() cursor.nextset() alt_areas = cursor.fetchall() cursor.close() if not community: # not found self._error_page(_("Community Not Found", request)) prov_state = list( map( tuple, conn.execute( "SELECT ProvID, GBL_ProvinceStateCountry FROM dbo.vw_GBL_ProvinceStateCountry" ).fetchall(), )) if alt_area_get_names: alt_area_name_map = { str(x[0]): x[1] for x in conn.execute( "EXEC sp_GBL_Community_ls_Names ?", ",".join(str(x) for x in alt_area_get_names), ).fetchall() } if community: community.AltSearchArea = xml_to_dict_list(community.AltSearchArea) if alt_area_get_names is None: alt_area_name_map = {str(x[0]): x[1] for x in alt_areas} domain, shown_cultures = viewbase.get_domain_and_show_cultures( request.params) return EditValues( CM_ID, community, community_descriptions, alt_names, alt_areas, prov_state, alt_area_name_map, shown_cultures, )
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 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 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: self._error_page(_('Invalid Domain', request)) if domain.id == const.DM_CIC: user_dm = user.cic if request.dboptions.UseCIC else user.vol else: user_dm = user.vol if not user_dm.SuperUser: self._security_failure() model_state = request.model_state model_state.validators = { 'ViewType': ciocvalidators.IDValidator(not_empty=True) } model_state.method = None if not model_state.validate(): # XXX invalid ViewType self._error_page(_('Invalid ID', request)) ViewType = model_state.form.data.get('ViewType') view = None descriptions = {} views = [] publications = [] auto_add_pubs = [] chk_fields = [] disp_opt = None disp_opt_fields = [] print_profiles = [] usage = None security_levels = [] view_cultures = set() templates = [] agencies = [] view_descs = [] chk_field_descs = [] inclusion_policies = [] search_tips = [] disp_opt_field_descs = [] publication_descs = [] pubs_with_headings = [] community_sets = [] with request.connmgr.get_connection('admin') as conn: cursor = conn.execute('EXEC dbo.sp_%s_View_s ?, ?' % domain.str, ViewType, request.dboptions.MemberID) view = cursor.fetchone() if view: cursor.nextset() for lng in cursor.fetchall(): descriptions[lng.Culture.replace('-', '_')] = lng cursor.nextset() views = [str(x[0]) for x in cursor.fetchall()] cursor.nextset() chk_fields = [str(x[0]) for x in cursor.fetchall()] cursor.nextset() disp_opt = cursor.fetchone() cursor.nextset() disp_opt_fields = set(x[0] for x in cursor.fetchall()) if domain.id == const.DM_CIC: cursor.nextset() publications = [str(x[0]) for x in cursor.fetchall()] cursor.nextset() auto_add_pubs = [str(x[0]) for x in cursor.fetchall()] cursor.close() if not view: # not found self._error_page(_('View Not Found', request)) cursor = conn.execute('EXEC dbo.sp_%s_View_s_FormLists ?, ?, ?' % domain.str, request.dboptions.MemberID, user.Agency, ViewType) usage = cursor.fetchone() cursor.nextset() security_levels = cursor.fetchall() cursor.nextset() view_cultures = set(x.Culture for x in cursor.fetchall()) cursor.nextset() templates = [tuple(x) for x in cursor.fetchall()] cursor.nextset() agencies = [tuple(x) for x in cursor.fetchall()] cursor.nextset() view_descs = cursor.fetchall() cursor.nextset() chk_field_descs = cursor.fetchall() cursor.nextset() inclusion_policies = cursor.fetchall() cursor.nextset() search_tips = cursor.fetchall() cursor.nextset() disp_opt_field_descs = cursor.fetchall() cursor.nextset() print_profiles = cursor.fetchall() if domain.id == const.DM_CIC: cursor.nextset() publication_descs = cursor.fetchall() else: cursor.nextset() community_sets = [tuple(x) for x in cursor.fetchall()] cursor.close() data = model_state.form.data data['item'] = view data['descriptions'] = descriptions data['Views'] = views data['AdvSearchCheckLists'] = chk_fields data['dopts'] = disp_opt data['dopts.FieldIDs'] = disp_opt_fields data['HasLabelOverrides'] = any(getattr(x, y, None) for x in descriptions.values() for y in label_override_fields) if domain.id == const.DM_CIC: data['PUB_ID'] = publications data['ADDPUB_ID'] = auto_add_pubs val = view.CanSeeNonPublicPub data['item.CanSeeNonPublicPub'] = RCanSeeNonPublicPubOptions.get(val, val) val = view.QuickListMatchAll data['item.QuickListMatchAll'] = RQuickListMatchAllOptions.get(val, val) val = view.SrchCommunityDefault data['item.SrchCommunityDefault'] = RSrchCommunityDefaultOptions.get(val, val) val = view.CCRFields data['item.CCRFields'] = RCCRFieldsOptions.get(val, val) pubs_with_headings = [x for x in publication_descs if x.HasHeadings] title = _('Manage Views (%s)', request) % _(domain.label, request) return self._create_response_namespace( title, title, dict( view=view, descriptions=descriptions, ViewType=ViewType, usage=usage, security_levels=security_levels, view_cultures=view_cultures, templates=templates, agencies=agencies, community_sets=community_sets, publications=publications, auto_add_pubs=auto_add_pubs, publication_descs=format_pub_list(publication_descs, True), pubs_with_headings=format_pub_list(pubs_with_headings, True), inclusion_policies=inclusion_policies, domain=domain, search_tips=search_tips, disp_opt_field_descs=[tuple(x) for x in disp_opt_field_descs], print_profiles=[tuple(x) for x in print_profiles], chk_field_descs=chk_field_descs, view_descs=view_descs), 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 = 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 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.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, )