1 |
dpavlin |
119 |
package A3C::Model::hrEduOrg; |
2 |
|
|
use strict; |
3 |
|
|
use warnings; |
4 |
|
|
|
5 |
|
|
use Jifty::DBI::Schema; |
6 |
dpavlin |
128 |
use Data::Dump qw/dump/; |
7 |
dpavlin |
119 |
|
8 |
|
|
use A3C::Record schema { |
9 |
|
|
|
10 |
|
|
# hrEduOrg super: organization |
11 |
|
|
|
12 |
|
|
# hrEduOrg must: |
13 |
|
|
|
14 |
|
|
column hrEduOrgUniqueNumber => |
15 |
|
|
label is _('Visestruka vrijednost brojcani identifikator ustanove'), |
16 |
|
|
max_length is 128, |
17 |
dpavlin |
124 |
is indexed, |
18 |
dpavlin |
119 |
is mandatory; |
19 |
|
|
|
20 |
|
|
column hrEduOrgMail => |
21 |
|
|
label is _('Sluzbena e-mail adresa ustanove'), |
22 |
|
|
max_length is 256, |
23 |
|
|
is mandatory; |
24 |
|
|
|
25 |
|
|
column o => |
26 |
|
|
label is _('RFC2256: organization this object belongs to'), |
27 |
|
|
is mandatory; |
28 |
|
|
|
29 |
|
|
column hrEduOrgURL => |
30 |
|
|
label is _('URL adresa Web sjedista ustanove'), |
31 |
|
|
max_length is 256, |
32 |
|
|
is mandatory; |
33 |
|
|
|
34 |
|
|
column hrEduOrgType => |
35 |
|
|
label is _('Jednostruka vrijednost prema kategorizaciji MZOS'), |
36 |
|
|
max_length is 128, |
37 |
|
|
is mandatory; |
38 |
|
|
|
39 |
|
|
column objectClass => |
40 |
|
|
label is _('RFC2256: object classes of the entity'), |
41 |
|
|
is mandatory; |
42 |
|
|
|
43 |
|
|
|
44 |
|
|
# hrEduOrg may: |
45 |
|
|
|
46 |
|
|
column businessCategory => |
47 |
|
|
label is _('RFC2256: business category'), |
48 |
|
|
max_length is 128; |
49 |
|
|
|
50 |
|
|
column searchGuide => |
51 |
|
|
label is _('RFC2256: search guide, obsoleted by enhancedSearchGuide'); |
52 |
|
|
|
53 |
|
|
column internationaliSDNNumber => |
54 |
|
|
label is _('RFC2256: international ISDN number'), |
55 |
|
|
max_length is 16; |
56 |
|
|
|
57 |
|
|
column telexNumber => |
58 |
|
|
label is _('RFC2256: Telex Number'); |
59 |
|
|
|
60 |
|
|
column hrEduOrgPolicyURI => |
61 |
|
|
label is _('URI s oznakom; pokazuje na sluzbenu politiku ustanove'), |
62 |
|
|
max_length is 256; |
63 |
|
|
|
64 |
|
|
column postOfficeBox => |
65 |
|
|
label is _('RFC2256: Post Office Box'), |
66 |
|
|
max_length is 40; |
67 |
|
|
|
68 |
|
|
column telephoneNumber => |
69 |
|
|
label is _('RFC2256: Telephone Number'), |
70 |
|
|
max_length is 32; |
71 |
|
|
|
72 |
|
|
column destinationIndicator => |
73 |
|
|
label is _('RFC2256: destination indicator'), |
74 |
|
|
max_length is 128; |
75 |
|
|
|
76 |
|
|
column facsimileTelephoneNumber => |
77 |
|
|
label is _('RFC2256: Facsimile (Fax) Telephone Number'); |
78 |
|
|
|
79 |
|
|
column hrEduOrgMobile => |
80 |
|
|
label is _('Broj mobilnog telefona ustanove'); |
81 |
|
|
|
82 |
|
|
column userPassword => |
83 |
|
|
label is _('RFC2256/2307: password of user'), |
84 |
|
|
max_length is 128; |
85 |
|
|
|
86 |
|
|
column x121Address => |
87 |
|
|
label is _('RFC2256: X.121 Address'), |
88 |
|
|
max_length is 15; |
89 |
|
|
|
90 |
|
|
column st => |
91 |
|
|
label is _('RFC2256: state or province which this object resides in'); |
92 |
|
|
|
93 |
|
|
column postalCode => |
94 |
|
|
label is _('RFC2256: postal code'), |
95 |
|
|
max_length is 40; |
96 |
|
|
|
97 |
|
|
column seeAlso => |
98 |
|
|
label is _('RFC2256: DN of related object'); |
99 |
|
|
|
100 |
|
|
column postalAddress => |
101 |
dpavlin |
124 |
render as 'textarea', |
102 |
dpavlin |
119 |
label is _('RFC2256: postal address'); |
103 |
|
|
|
104 |
|
|
column physicalDeliveryOfficeName => |
105 |
|
|
label is _('RFC2256: Physical Delivery Office Name'), |
106 |
|
|
max_length is 128; |
107 |
|
|
|
108 |
|
|
column teletexTerminalIdentifier => |
109 |
|
|
label is _('RFC2256: Teletex Terminal Identifier'); |
110 |
|
|
|
111 |
|
|
column l => |
112 |
|
|
label is _('RFC2256: locality which this object resides in'); |
113 |
|
|
|
114 |
|
|
column registeredAddress => |
115 |
|
|
label is _('RFC2256: registered postal address'); |
116 |
|
|
|
117 |
|
|
column hrEduOrgMember => |
118 |
|
|
label is _('Pripadnost nekoj ustanovi'), |
119 |
|
|
max_length is 128; |
120 |
|
|
|
121 |
|
|
column description => |
122 |
|
|
label is _('RFC2256: descriptive information'), |
123 |
|
|
max_length is 1024; |
124 |
|
|
|
125 |
|
|
column preferredDeliveryMethod => |
126 |
|
|
label is _('RFC2256: preferred delivery method'); |
127 |
|
|
|
128 |
|
|
column street => |
129 |
|
|
label is _('RFC2256: street address of this object'), |
130 |
|
|
max_length is 128; |
131 |
|
|
|
132 |
|
|
|
133 |
|
|
# dcObject super: top |
134 |
|
|
|
135 |
|
|
# dcObject must: |
136 |
|
|
|
137 |
|
|
column dc => |
138 |
|
|
label is _('RFC1274/2247: domain component'), |
139 |
|
|
is mandatory; |
140 |
|
|
|
141 |
|
|
|
142 |
|
|
# posixAccount super: top |
143 |
|
|
|
144 |
|
|
# posixAccount must: |
145 |
|
|
|
146 |
|
|
column uidNumber => |
147 |
dpavlin |
124 |
type is 'int', |
148 |
dpavlin |
119 |
label is _('An integer uniquely identifying a user in an administrative domain'), |
149 |
dpavlin |
124 |
is indexed, |
150 |
|
|
is distinct, |
151 |
dpavlin |
119 |
is mandatory; |
152 |
|
|
|
153 |
|
|
column uid => |
154 |
|
|
label is _('RFC1274: user identifier'), |
155 |
|
|
max_length is 256, |
156 |
dpavlin |
124 |
is indexed, |
157 |
|
|
is distinct, |
158 |
dpavlin |
119 |
is mandatory; |
159 |
|
|
|
160 |
|
|
column homeDirectory => |
161 |
|
|
label is _('The absolute path to the home directory'), |
162 |
|
|
is mandatory; |
163 |
|
|
|
164 |
|
|
column cn => |
165 |
|
|
label is _('RFC2256: common name(s) for which the entity is known by'), |
166 |
dpavlin |
124 |
is indexed, |
167 |
dpavlin |
119 |
is mandatory; |
168 |
|
|
|
169 |
|
|
column gidNumber => |
170 |
dpavlin |
124 |
type is 'int', |
171 |
dpavlin |
119 |
label is _('An integer uniquely identifying a group in an administrative domain'), |
172 |
|
|
is mandatory; |
173 |
|
|
|
174 |
|
|
|
175 |
|
|
# posixAccount may: |
176 |
|
|
|
177 |
|
|
column gecos => |
178 |
|
|
label is _('The GECOS field; the common name'); |
179 |
|
|
|
180 |
|
|
column loginShell => |
181 |
|
|
label is _('The path to the login shell'); |
182 |
|
|
|
183 |
|
|
|
184 |
|
|
|
185 |
|
|
|
186 |
|
|
}; |
187 |
|
|
|
188 |
|
|
|
189 |
|
|
=head2 name |
190 |
|
|
|
191 |
dpavlin |
124 |
Humanly readable name of organization |
192 |
dpavlin |
119 |
|
193 |
|
|
=cut |
194 |
|
|
|
195 |
dpavlin |
124 |
sub name { |
196 |
|
|
my $self = shift; |
197 |
|
|
return $self->cn . ' - ' . $self->o; |
198 |
|
|
} |
199 |
dpavlin |
119 |
|
200 |
dpavlin |
131 |
=head2 validate_uidNumber |
201 |
dpavlin |
119 |
|
202 |
dpavlin |
131 |
=cut |
203 |
|
|
|
204 |
|
|
sub validate_uidNumber { |
205 |
|
|
my ( $self, $value ) = @_; |
206 |
|
|
return ( 0, _('uidNumber must be only digits') ) unless $value =~ m/^\d+$/; |
207 |
|
|
return ( 1, 'OK' ); |
208 |
|
|
} |
209 |
|
|
|
210 |
|
|
=head2 validate_gidNumber |
211 |
|
|
|
212 |
|
|
=cut |
213 |
|
|
|
214 |
|
|
sub validate_gidNumber { |
215 |
|
|
my ( $self, $value ) = @_; |
216 |
|
|
return ( 0, _('gidNumber must be only digits') ) unless $value =~ m/^\d+$/; |
217 |
|
|
return ( 1, 'OK' ); |
218 |
|
|
} |
219 |
|
|
|
220 |
dpavlin |
119 |
=head2 ACL |
221 |
|
|
|
222 |
|
|
We use L<A3C::DefaultACL> for access control |
223 |
|
|
|
224 |
|
|
=cut |
225 |
|
|
|
226 |
|
|
use A3C::DefaultACL; |
227 |
|
|
|
228 |
dpavlin |
125 |
# added to make Jifty::View::Declare::CRUD happy because it |
229 |
|
|
# tries to capitalize first letter of model creating |
230 |
|
|
# A3C::Model::HrEduOrg which is invalid |
231 |
|
|
sub object_type { 'A3C::Model::hrEduOrg' } |
232 |
|
|
sub collection_class { 'A3C::Model::hrEduOrgCollection' } |
233 |
|
|
|
234 |
dpavlin |
119 |
1; |