/[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/A3C/Model/User.pm revision 18 by dpavlin, Thu Mar 13 19:26:56 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 A3C::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 A3C::AAIEduHr;
14    
15  use utf8;  use utf8;
16    
17  use A3C::Record schema {  use A3C::Record schema {
18    
19          column uid =>          column uid =>
20                  label is ('uid'),                  label is _('UID'),
21                  is indexed,                  is indexed,
22                  is mandatory,                  is mandatory,
23                  is distinct;                  is distinct;
24    
25          column hrEduPersonUniqueID =>          column hrEduPersonUniqueID =>
26                  label is ('hrEduPersonUniqueID'),                  label is _('hr Edu Person Unique ID'),
27                  is indexed,                  is indexed,
28                  is distinct,                  is distinct,
29                  is mandatory;                  is mandatory;
30    
31          column cn =>          column cn =>
32                  label is _('Ime'),                  label is _('Ime i prezime'),
33                  type is 'virtual';                  is mandatory;
34    
35          column sn =>          column sn =>
                 type is 'virtual',  
36                  label is _('Prezime'),                  label is _('Prezime'),
37                  is mandatory;                  is mandatory;
38    
39          column givenName =>          column givenName =>
                 type is 'virtual',  
40                  label is _('Ime'),                  label is _('Ime'),
41                  is mandatory;                  is mandatory;
42    
# Line 38  use A3C::Record schema { Line 44  use A3C::Record schema {
44                  type is 'text',                  type is 'text',
45                  is mandatory,                  is mandatory,
46                  label is _('Email address'), default is '',                  label is _('Email address'), default is '',
47                    is indexed,
48                  is immutable,                  is immutable,
49                  is distinct;                  is distinct;
50    
# Line 66  use A3C::Record schema { Line 73  use A3C::Record schema {
73    
74          column hrEduPersonUniqueNumber =>          column hrEduPersonUniqueNumber =>
75  #               is mandatory,  #               is mandatory,
76                  label is _('JMBG');                  label is _('Unique number');
77    
78          column hrEduPersonDateOfBirth =>          column hrEduPersonDateOfBirth =>
79                  type is 'date',                  type is 'date',
# Line 75  use A3C::Record schema { Line 82  use A3C::Record schema {
82                  filters are 'Jifty::DBI::Filter::Date';                  filters are 'Jifty::DBI::Filter::Date';
83    
84          column hrEduPersonGender =>          column hrEduPersonGender =>
85                  label is _('Spol');                  label is _('Spol'),
86                    valid are [ { display => 'Nepoznato', value => 0 }, A3C::AAIEduHr->vocabulary('hrEdu002') ];
87    
88          column jpegPhoto =>          column jpegPhoto =>
89                  label is _('Slika');                  label is _('Slika');
# Line 90  use A3C::Record schema { Line 98  use A3C::Record schema {
98                  label is _('Tip administratora'),                  label is _('Tip administratora'),
99                  valid are [ '', 'AS', 'AI', 'AR', 'AHU' ];                  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 =>          column hrEduPersonProfessionalStatus =>
107                  label is _('Stručni status'),                  label is _('Stručni status'),
108                  valid are [                  valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu001'), 'VŠS' ],
                         '',  
                         'NKV',  
                         'PKV',  
                         'KV',  
                         'VKV',  
                         'SSS',  
                         'VS',  
                         'VSS',  
                         'VŠS',  
                         'MR',  
                         'DR',  
                 ],  
109                  default is '';                  default is '';
110    
111          column hrEduPersonAcademicStatus =>          column hrEduPersonAcademicStatus =>
112                  label is _('Zvanje'),                  label is _('Zvanje'),
113                  valid are [                  valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu002') ],
                         '',  
                         'knjižničar',  
                         'viši knjižničar',  
                         'korepetitor',  
                         'viši korepetitor',  
                         'lektor',  
                         'viši lektor',  
                         'stručni suradnik',  
                         'asistent visoke škole',  
                         'profesor visoke škole',  
                         'mlađi asistent',  
                         'znanstveni novak',  
                         'znanstveni asistent',  
                         'znanstveni suradnik',  
                         'predavač',  
                         'viši predavač',  
                         'asistent',  
                         'asistent - predavač',  
                         'viši asistent',  
                         'docent',  
                         'izvanredni profesor',  
                         'redoviti profesor',  
                         'znanstveni savjetnik',  
                         'viši znanstveni suradnik',  
                 ],  
114                  default is '';                  default is '';
115    
116          column hrEduPersonScienceArea =>          column hrEduPersonScienceArea =>
117                  label is _('Područje znanosti'),                  label is _('Područje znanosti'),
118                  valid are [                  valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu007') ],
                         '',  
                         'Tehničke znanosti',  
                         'Prirodne znanosti',  
                         'Humanističke znanosti',  
                         'Društvene znanosti',  
                         'Biotehničke znanosti',  
                         'Biomedicina i zdravstvo',  
                 ],  
119                  default is '';                  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 =>          column hrEduPersonAffiliation =>
134                  label is _('Povezanost s ustanovom'),                  label is _('Povezanost s ustanovom'),
135                  is mandatory,                  is mandatory,
136                  valid are [                  valid are A3C::AAIEduHr->vocabulary('hrEdu004'),
                         'učenik',  
                         'student',  
                         'djelatnik',  
                         'vanjski suradnik',  
                         'korisnik usluge',  
                         'gost',  
                 ],  
137                  default is 'korisnik usluge';                  default is 'korisnik usluge';
138    
139          column hrEduPersonPrimaryAffiliation =>          column hrEduPersonPrimaryAffiliation =>
140                  label is _('Temeljna povezanost s ustanovom');                  label is _('Temeljna povezanost s ustanovom');
141                  is mandatory,                  is mandatory,
142                  valid are [                  valid are A3C::AAIEduHr->vocabulary('hrEdu004'),
                         'učenik',  
                         'student',  
                         'djelatnik',  
                         'vanjski suradnik',  
                         'korisnik usluge',  
                         'gost',  
                 ],  
143                  default is 'korisnik usluge';                  default is 'korisnik usluge';
144    
145          column hrEduPersonStudentCategory =>          column hrEduPersonStudentCategory =>
146                  label is 'Vrsta studenta',                  label is 'Vrsta studenta',
147                  valid are [                  valid are [
148                          '',                          '',
149                          'osnovnoškolac',                          A3C::AAIEduHr->vocabulary('hrEdu010'),
                         'srednjoškolac',  
                         'student stručnog studija',  
                         'preddiplomac',  
                         'postdiplomac',  
                         'dodiplomac',  
                         'pauzira godinu',  
                         'prekid studija',  
150                  ],                  ],
151                  default is '';                  default is '';
152    
# Line 200  use A3C::Record schema { Line 159  use A3C::Record schema {
159    
160          column hrEduPersonTitle =>          column hrEduPersonTitle =>
161                  label is 'Položaj u ustanovi',                  label is 'Položaj u ustanovi',
162                  valid are [     # FIXME reorder                  valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu003') ],
                         '',  
                         'dekan',  
                         'direktor',  
                         'pomoćnik ravnatelja',  
                         'predstojnik zavoda',  
                         'pročelnik katedre',  
                         'pročelnik odsjeka',  
                         'pročelnik sveučilišnog odjela',  
                         'prodekan',  
                         'prorektor',  
                         'ravnatelj',  
                         'rektor',  
                         'voditelj laboratorija',  
                         'voditelj odjela',  
                         'voditelj organizacijske jedini',  
                         'voditelj projekta',  
                         'zamjenik pročelnika sveučilišn',  
                         'zamjenik ravnatelja',  
                 ],  
163                  default is '';                  default is '';
164    
165          column hrEduPersonRole =>          column hrEduPersonRole =>
166                  label is 'Uloga u ustanovi',                  label is 'Uloga u ustanovi',
167                  valid are [                  valid are [
168                          '',                          '',
169                          'administrator imenika',                          A3C::AAIEduHr->vocabulary('hrEdu006'),
                         'CARNet koordinator',  
                         'CARNet sistem inženjer',  
                         'ICT koordinator',  
                         'ISVU koordinator',  
                         'kontakt za sigurnosna pitanja',  
                         'MS koordinator',  
170                          'MATICA operater',                          'MATICA operater',
171                          'MATICA urednik',                          'MATICA urednik',
172                  ],                  ],
# Line 240  use A3C::Record schema { Line 174  use A3C::Record schema {
174    
175          column hrEduPersonStaffCategory =>          column hrEduPersonStaffCategory =>
176                  label is 'Vrsta posla u ustanovi',                  label is 'Vrsta posla u ustanovi',
177                  valid are [                  valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu005') ];
                         'administrativno osoblje',  
                         'ICT podrška',  
                         'istraživači',  
                         'nastavno osoblje',  
                         'osoblje knjižnice',  
                         'tehničko osoblje',  
                 ];  
178    
179          column hrEduPersonGroupMember =>          column hrEduPersonGroupMember =>
180                  label is 'Pripadnost grupi',                  label is 'Pripadnost grupi',
181                  hint is 'skolskagodina::razred';                  hint is 'skolskagodina::razred';
182    
         column o =>  
                 label is _('Naziv matične ustanove'),  
                 is mandatory;  
           
         column hrEduPersonHomeOrg =>  
                 label is _('Oznaka matične ustanove'),  
                 hint is 'CARNet',  
                 is mandatory;  
   
183          column ou =>          column ou =>
184                  label is _('Organizacijska jedinica');                  label is _('Organizacijska jedinica');
185                    
186          column roomNumber =>          column roomNumber =>
187                  label is _('Broj sobe');                  label is _('Broj sobe');
188    
         column postalAddress =>  
                 label is _('Poštanska adresa'),  
                 render as 'textarea',  
                 is mandatory;  
           
         column l =>  
                 label is _('Mjesto'),  
                 hist is 'Zagreb',  
                 is mandatory;  
   
         column postalCode =>  
                 label is _('Poštanski broj'),  
                 hint is 'HR-10000';  
   
         column street =>  
                 label is _('Ulica i kućni broj');  
           
189          column homePostalAddress =>          column homePostalAddress =>
190                  label is _('Kućna poštanska adresa'),                  label is _('Kućna poštanska adresa'),
191                  render as 'textarea';                  render as 'textarea';
# Line 298  use A3C::Record schema { Line 199  use A3C::Record schema {
199          column hrEduPersonPrivacy =>          column hrEduPersonPrivacy =>
200                  label is _('Oznaka privatnosti');                  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  # we don't use following mixing because it wants to send notificaitons on e-mail address change
# Line 334  Accessor for compatibility with Jifty mi Line 249  Accessor for compatibility with Jifty mi
249    
250  sub email {  sub email {
251          my $self = shift;          my $self = shift;
252          return $self->__value('mail');          return $self->mail;
253  }  }
254    
255  sub email_confirmed { 1 };  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  =head2 validate_telephoneNumber
267    
268  =cut  =cut
# Line 351  sub validate_telephoneNumber { Line 275  sub validate_telephoneNumber {
275          return ( 1, 'OK' );          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  =head2 canonicalize_hrEduPersonExpireDate
319    
320  Support NONE as 2042-12-30  Support NONE as 2042-12-30
# Line 360  Support NONE as 2042-12-30 Line 324  Support NONE as 2042-12-30
324  sub canonicalize_hrEduPersonExpireDate {  sub canonicalize_hrEduPersonExpireDate {
325          my ( $self, $value ) = @_;          my ( $self, $value ) = @_;
326    
327          if ( $value eq 'NONE' ) {          if ( lc($value) eq 'none' ) {
328                  $self->log->warn("fixed hrEduPersonExpireDate");                  $self->log->warn("fixed hrEduPersonExpireDate");
329                  $value = '2042-12-30';                  $value = '2042-12-30';
330          }          }
# Line 368  sub canonicalize_hrEduPersonExpireDate { Line 332  sub canonicalize_hrEduPersonExpireDate {
332          return $value;          return $value;
333  }  }
334    
335  =head2 current_user_can  use A3C::DefaultACL;
   
 =cut  
   
 sub current_user_can {  
         # FIXME no security for now :-)  
         return 1;  
 }  
336    
337  1;  1;
338    

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

  ViewVC Help
Powered by ViewVC 1.1.26