Changeset 1865 for trunk/LATMOS-Accounts/bin
- Timestamp:
- 12/21/16 15:07:28 (7 years ago)
- Location:
- trunk/LATMOS-Accounts/bin
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/bin/la-sql-upgrade.in
r1843 r1865 47 47 my $LA = LATMOS::Accounts->new($config, noacl => 1); 48 48 my $labase = $LA->base($base); 49 $labase->unexported(1); 49 50 50 51 my $dbi = $labase->db; … … 1003 1004 ], 1004 1005 }, 1006 { 1007 ver => 21, 1008 sql => [ 1009 'ALTER TABLE objects ADD COLUMN oalias text', 1010 'ALTER TABLE objects 1011 ADD COLUMN nodelete boolean NOT NULL DEFAULT false', 1012 'ALTER TABLE objects 1013 ADD COLUMN internobject boolean NOT NULL DEFAULT false', 1014 ], 1015 }, 1016 { 1017 ver => 22, 1018 sql => [ 1019 'CREATE INDEX fki_employment 1020 ON employment_attributes 1021 USING btree (okey);' 1022 ], 1023 }, 1024 { 1025 ver => 23, 1026 sql => [ 1027 'ALTER TABLE address ADD COLUMN expire timestamp with time zone' 1028 ], 1029 }, 1030 { 1031 ver => 24, 1032 sql => [ 1033 q{ 1034 CREATE OR REPLACE FUNCTION user_sort_fields() 1035 RETURNS trigger AS 1036 $BODY$DECLARE 1037 rec RECORD; 1038 BEGIN 1039 1040 IF (TG_OP='UPDATE' or TG_OP='INSERT') THEN 1041 1042 IF (new.attr='locked') THEN 1043 IF (TG_OP = 'INSERT') THEN 1044 new.value = now()::text; 1045 ELSIF (TG_OP='UPDATE') THEN 1046 new.value = old.value; 1047 END IF; 1048 END IF; 1049 1050 IF (new.attr='nickname') THEN 1051 PERFORM 1 from "user" where "user".ikey = new.okey 1052 and new.value = "user".name; 1053 IF NOT FOUND THEN 1054 select aliases.name into rec from aliases join "user" 1055 on array["user".name] = aliases.forward 1056 where "user".ikey = new.okey and aliases.name = new.value; 1057 IF NOT FOUND THEN 1058 insert into aliases ("name", "forward", "description", exported) 1059 select new.value, array["user".name], 'Forward for ' || "user".name || ' nickname', "user".exported from "user" where "user".ikey = new.okey; 1060 END IF; 1061 END IF; 1062 END IF; 1063 1064 IF (new.attr='uidNumber') THEN 1065 update "user" set uidnumber = new.value::integer where ikey = new.okey; 1066 RETURN NULL; 1067 END IF; 1068 1069 IF (new.attr='gidNumber') THEN 1070 update "user" set gidnumber = new.value::integer where ikey = new.okey; 1071 RETURN null; 1072 END IF; 1073 1074 IF (new.attr='expire') THEN 1075 update "user" set expire = new.value::timestamp where ikey = new.okey; 1076 RETURN NULL; 1077 END IF; 1078 1079 IF (new.attr='exported') THEN 1080 update "user" set exported = true where ikey = new.okey; 1081 RETURN NULL; 1082 END IF; 1083 1084 END IF; 1085 1086 IF (TG_OP = 'DELETE') THEN 1087 1088 IF (old.attr='expire') THEN 1089 update "user" set expire = NULL where ikey = old.okey; 1090 RETURN NULL; 1091 END IF; 1092 1093 IF (old.attr='exported') THEN 1094 update "user" set exported = false where ikey = old.okey; 1095 RETURN NULL; 1096 END IF; 1097 1098 END IF; 1099 1100 1101 IF (TG_OP='INSERT') THEN 1102 IF (new.attr='manager') THEN 1103 insert into user_attributes_users VALUES (new.*); 1104 RETURN NULL; 1105 END IF; 1106 1107 IF (new.attr='site') THEN 1108 insert into user_attributes_site VALUES (new.*); 1109 RETURN NULL; 1110 END IF; 1111 1112 IF (new.attr='department') THEN 1113 insert into user_attributes_groups VALUES (new.*); 1114 RETURN NULL; 1115 END IF; 1116 1117 IF (new.attr='contratType') THEN 1118 insert into user_attributes_groups VALUES (new.*); 1119 RETURN NULL; 1120 END IF; 1121 1122 IF (new.attr='jobType') THEN 1123 insert into user_attributes_groups VALUES (new.*); 1124 RETURN NULL; 1125 END IF; 1126 1127 END IF; 1128 1129 IF (TG_OP='DELETE') then 1130 RETURN old; 1131 ELSE 1132 RETURN new; 1133 end if; 1134 END;$BODY$ 1135 LANGUAGE plpgsql VOLATILE 1136 COST 100; 1137 ALTER FUNCTION user_sort_fields() 1138 OWNER TO latmos; 1139 1140 }, 1141 ], 1142 }, 1005 1143 ); 1006 1144 … … 1019 1157 description => 'Contract', 1020 1158 }, 1159 }, 1160 { 1161 name => '-useralias', 1162 otype => 'group', 1163 attrs => { 1164 description => 'Internal group for user alias object', 1165 gidnumber => -1, 1166 unexported => 1, 1167 }, 1168 intern => 1, 1021 1169 }, 1022 1170 ); … … 1057 1205 } 1058 1206 1207 my $setnodel = $dbi->prepare('UPDATE objects SET nodelete = true where name = ?'); 1208 my $setintern = $dbi->prepare('UPDATE objects SET internobject = true where name = ?'); 1209 1059 1210 foreach (@objects) { 1060 if (!$labase-> get_object($_->{otype}, $_->{name})) {1061 printf("Creat ting object %s/%s\n", $_->{otype}, $_->{name});1211 if (!$labase->GetRawObject($_->{otype}, $_->{name})) { 1212 printf("Creating object %s/%s\n", $_->{otype}, $_->{name}); 1062 1213 $labase->create_object($_->{otype}, $_->{name}, %{$_->{attrs} || {}}) 1063 1214 or die sprintf("cannot create %s/%s\n", $_->{otype}, $_->{name}); 1064 1215 1065 1216 } 1217 1218 $setnodel->execute($_->{name}); 1219 $setintern->execute($_->{name}) if ($_->{intern}); 1066 1220 } 1067 1221
Note: See TracChangeset
for help on using the changeset viewer.