/[A3C]/lib/A3C/Model/Person.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /lib/A3C/Model/Person.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 121 - (show annotations)
Thu May 15 19:18:45 2008 UTC (11 years, 2 months ago) by dpavlin
File size: 6722 byte(s)
added depriciation warnings
1 use strict;
2 use warnings;
3
4 =head1 WARNING
5
6 B<This code is obsolete> since application is using L<A3C::Model::hrEduPerson>
7
8 =cut
9
10 package A3C::Model::Person;
11 use Jifty::DBI::Schema;
12
13 use A3C::AAIEduHr;
14
15 use utf8;
16
17 use A3C::Record schema {
18
19 column uid =>
20 label is _('UID'),
21 is indexed,
22 is mandatory,
23 is distinct;
24
25 column hrEduPersonUniqueID =>
26 label is _('hr Edu Person Unique ID'),
27 is indexed,
28 is distinct,
29 is mandatory;
30
31 column cn =>
32 label is _('Ime i prezime'),
33 is mandatory;
34
35 column sn =>
36 label is _('Prezime'),
37 is mandatory;
38
39 column givenName =>
40 label is _('Ime'),
41 is mandatory;
42
43 column mail =>
44 type is 'text',
45 is mandatory,
46 label is _('Email address'), default is '',
47 is indexed,
48 is immutable,
49 is distinct;
50
51 column password =>
52 is unreadable,
53 label is _('Password'),
54 type is 'varchar',
55 hints is _('Your password should be at least six characters'),
56 render_as 'password',
57 # filters are 'Jifty::DBI::Filter::SaltHash',
58 is mandatory;
59
60 column telephoneNumber =>
61 type is 'text',
62 label is _('Telefonski broj'),
63 hint is '+385 xx yyyyyy';
64
65 column hrEduPersonExtensionNumber =>
66 label is _('Lokalni telefonski broj');
67
68 column mobile =>
69 label is _('Broj mobilnog telefona');
70
71 column facsimileTelephoneNumber =>
72 label is _('Fax broj');
73
74 column hrEduPersonUniqueNumber =>
75 # is mandatory,
76 label is _('Unique number');
77
78 column hrEduPersonDateOfBirth =>
79 type is 'date',
80 render as 'date',
81 label is _('Datum rođenja'),
82 filters are 'Jifty::DBI::Filter::Date';
83
84 column hrEduPersonGender =>
85 label is _('Spol'),
86 valid are [ { display => 'Nepoznato', value => 0 }, A3C::AAIEduHr->vocabulary('hrEdu002') ];
87
88 column jpegPhoto =>
89 label is _('Slika');
90
91 column userCertificate =>
92 label is _('Ceritifikat');
93
94 column labeledURI =>
95 label is _('URI adresa');
96
97 column wtAdminType =>
98 label is _('Tip administratora'),
99 valid are [ '', 'AS', 'AI', 'AR', 'AHU' ];
100
101 column hrEduPersonHomeOrg =>
102 label is _('Oznaka matične ustanove'),
103 hint is 'CARNet',
104 is mandatory;
105
106 column hrEduPersonProfessionalStatus =>
107 label is _('Stručni status'),
108 valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu001'), 'VŠS' ],
109 default is '';
110
111 column hrEduPersonAcademicStatus =>
112 label is _('Zvanje'),
113 valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu002') ],
114 default is '';
115
116 column hrEduPersonScienceArea =>
117 label is _('Područje znanosti'),
118 valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu007') ],
119 default is '';
120
121 column 'o' =>
122 is indexed;
123
124 column 'l';
125 column 'postalAddress';
126 column 'postalCode';
127 column 'street';
128
129 # column organization =>
130 # refers_to A3C::Model::Organization by 'id',
131 # is mandatory;
132
133 column hrEduPersonAffiliation =>
134 label is _('Povezanost s ustanovom'),
135 is mandatory,
136 valid are A3C::AAIEduHr->vocabulary('hrEdu004'),
137 default is 'korisnik usluge';
138
139 column hrEduPersonPrimaryAffiliation =>
140 label is _('Temeljna povezanost s ustanovom');
141 is mandatory,
142 valid are A3C::AAIEduHr->vocabulary('hrEdu004'),
143 default is 'korisnik usluge';
144
145 column hrEduPersonStudentCategory =>
146 label is 'Vrsta studenta',
147 valid are [
148 '',
149 A3C::AAIEduHr->vocabulary('hrEdu010'),
150 ],
151 default is '';
152
153 column hrEduPersonExpireDate =>
154 label is _('Datum isteka temeljne povezanosti'),
155 type is 'date',
156 render as 'date',
157 is mandatory,
158 filters are 'Jifty::DBI::Filter::Date';
159
160 column hrEduPersonTitle =>
161 label is 'Položaj u ustanovi',
162 valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu003') ],
163 default is '';
164
165 column hrEduPersonRole =>
166 label is 'Uloga u ustanovi',
167 valid are [
168 '',
169 A3C::AAIEduHr->vocabulary('hrEdu006'),
170 'MATICA operater',
171 'MATICA urednik',
172 ],
173 default is '';
174
175 column hrEduPersonStaffCategory =>
176 label is 'Vrsta posla u ustanovi',
177 valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu005') ];
178
179 column hrEduPersonGroupMember =>
180 label is 'Pripadnost grupi',
181 hint is 'skolskagodina::razred';
182
183 column ou =>
184 label is _('Organizacijska jedinica');
185
186 column roomNumber =>
187 label is _('Broj sobe');
188
189 column homePostalAddress =>
190 label is _('Kućna poštanska adresa'),
191 render as 'textarea';
192
193 column homePhone =>
194 label is _('Kućni telefonski broj');
195
196 column hrEduPersonCommURI =>
197 label is _('Desktop uređaj');
198
199 column hrEduPersonPrivacy =>
200 label is _('Oznaka privatnosti');
201
202 column loginShell =>
203 label is _('login shell');
204
205 column uidNumber =>
206 label is _('uid number'),
207 type is 'int';
208
209 column gidNumber =>
210 label is _('gid number');
211 type is 'int';
212
213 column homeDirectory =>
214 label is _('home directory');
215
216 };
217
218 # we don't use following mixing because it wants to send notificaitons on e-mail address change
219 #use Jifty::Plugin::User::Mixin::Model::User;
220 use Jifty::Plugin::Authentication::Password::Mixin::Model::User;
221 #use Jifty::Plugin::OpenID::Mixin::Model::User;
222 use Jifty::Plugin::ActorMetadata::Mixin::Model::ActorMetadata; # created_by, created_on, updated_on
223
224 # Your model-specific methods go here.
225
226 =head2 before_create
227
228 Implement virtual columns, for now put mail from ldap into email row
229
230 =cut
231
232 =for later
233
234 sub before_create {
235 my ($self, $attr) = @_;
236 if ( ! $attr->{'email'} ) {
237 warn "push mail to email";
238 $attr->{'email'} = $attr->{'mail'};
239 }
240 }
241
242 =cut
243
244 =head2 email
245
246 Accessor for compatibility with Jifty mixins
247
248 =cut
249
250 sub email {
251 my $self = shift;
252 return $self->mail;
253 }
254
255 sub email_confirmed { 1 };
256
257 =head2 name
258
259 =cut
260
261 sub name {
262 my $self = shift;
263 return $self->cn . ' <' . $self->mail . '>';
264 }
265
266 =head2 validate_telephoneNumber
267
268 =cut
269
270 sub validate_telephoneNumber {
271 my ( $self, $value ) = @_;
272
273 return ( 0, _('Telephone number invalid') ) if $value !~ m/^(\+?385)?[\d\s-]+$/;
274
275 return ( 1, 'OK' );
276 }
277
278 =head2 hrEduPersonUniqueNumber
279
280 Check if JMBG is valid
281
282 =cut
283
284 sub validate_hrEduPersonUniqueNumber {
285 my ( $self, $value ) = @_;
286
287 if ( $value =~ m/^JMBG:\s+(\d+)$/ ) {
288
289 my $jmbg = $1;
290
291 return ( 0, _('JMBG must have 13 digits') ) unless length($jmbg) == 13;
292
293 sub digit_at {
294 my ($jmbg,$pos) = @_;
295 return ord(substr($jmbg,$pos,1)) - ord('0');
296 }
297
298 my $sum;
299 my $fact = 7;
300
301 foreach my $i ( 0 .. 11 ) {
302 my $c = digit_at( $jmbg, $i );
303 $sum += $c * $fact;
304 # warn "## $c * $fact => $sum\n";
305 $fact--;
306 $fact = 7 if $fact == 1;
307 }
308
309 my $ost = $sum % 11;
310 $ost = 11 - $ost if $ost > 1;
311
312 return ( 0, _("JMBG is invalid") ) if $ost != digit_at( $jmbg, 12 );
313 }
314
315 return ( 1, 'OK' );
316 }
317
318 =head2 canonicalize_hrEduPersonExpireDate
319
320 Support NONE as 2042-12-30
321
322 =cut
323
324 sub canonicalize_hrEduPersonExpireDate {
325 my ( $self, $value ) = @_;
326
327 if ( lc($value) eq 'none' ) {
328 $self->log->warn("fixed hrEduPersonExpireDate");
329 $value = '2042-12-30';
330 }
331
332 return $value;
333 }
334
335 use A3C::DefaultACL;
336
337 1;
338

  ViewVC Help
Powered by ViewVC 1.1.26