Ignore:
Timestamp:
12/21/16 15:07:28 (7 years ago)
Author:
nanardon
Message:

Merge branch

Location:
trunk/LATMOS-Accounts/bin
Files:
2 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/bin/la-sql-upgrade.in

    r1843 r1865  
    4747my $LA = LATMOS::Accounts->new($config, noacl => 1); 
    4848my $labase = $LA->base($base); 
     49$labase->unexported(1); 
    4950 
    5051my $dbi = $labase->db; 
     
    10031004        ], 
    10041005    }, 
     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    }, 
    10051143); 
    10061144 
     
    10191157            description => 'Contract', 
    10201158        }, 
     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, 
    10211169    }, 
    10221170); 
     
    10571205} 
    10581206 
     1207my $setnodel  = $dbi->prepare('UPDATE objects SET nodelete     = true where name = ?'); 
     1208my $setintern = $dbi->prepare('UPDATE objects SET internobject = true where name = ?'); 
     1209 
    10591210foreach (@objects) { 
    1060     if (!$labase->get_object($_->{otype}, $_->{name})) { 
    1061         printf("Creatting object %s/%s\n", $_->{otype}, $_->{name}); 
     1211    if (!$labase->GetRawObject($_->{otype}, $_->{name})) { 
     1212        printf("Creating object %s/%s\n", $_->{otype}, $_->{name}); 
    10621213        $labase->create_object($_->{otype}, $_->{name}, %{$_->{attrs} || {}}) 
    10631214            or die sprintf("cannot create %s/%s\n", $_->{otype}, $_->{name}); 
    10641215 
    10651216    } 
     1217 
     1218    $setnodel->execute($_->{name}); 
     1219    $setintern->execute($_->{name}) if ($_->{intern}); 
    10661220} 
    10671221 
Note: See TracChangeset for help on using the changeset viewer.