/[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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

lib/CAdmin/Model/User.pm revision 2 by dpavlin, Sun Mar 9 22:39:58 2008 UTC lib/A3C/Model/Person.pm revision 121 by dpavlin, Thu May 15 19:18:45 2008 UTC
# Line 1  Line 1 
1  use strict;  use strict;
2  use warnings;  use warnings;
3    
4  package CAdmin::Model::User;  =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;  use Jifty::DBI::Schema;
12    
13  use CAdmin::Record schema {  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.  # 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;  1;
338    

Legend:
Removed from v.2  
changed lines
  Added in v.121

  ViewVC Help
Powered by ViewVC 1.1.26