source: main/waeup.kofa/trunk/CHANGES.txt @ 17261

Last change on this file since 17261 was 17261, checked in by Henrik Bettermann, 22 months ago

Specify the role in flash message after logging in.

File size: 24.9 KB
Line 
1Changes
2*******
3
41.7.2.dev0 (unreleased)
5=======================
6
7* Specify the role in flash message after logging in.
8
9* Add `AccommodationViewer` role.
10
11* Allow students to book accommodation also if they are in previous
12  sessions (not activated in base package).
13
14* Add Javascript which automatically submits a form on select change
15  (not used in base but in lpng custom package).
16
17* Add MonthSource to be used in custom packages.
18
19* Add `BalancePaymentAddFormPage` which can only be opened by managers.
20  No button is provided in base package.
21
22* Do not require session configuration object for application payments.
23
24* Add social media meta data.
25
26* Send email after final submission of application form.
27
28* Enable customization of application form final submission message.
29
30* Copy applicant_id into reg_number field during student record creation,
31  if applicant's reg_number is not set.
32
33* Show last student id on `StudentsContainerPage`.
34
35* Hide emtpy levels in transcripts.
36
37* Consider `course_category` in addStudentStudyLevel` method.
38
39* Add `previous` field to `StudentStudyCourseProcessor`,
40  `StudentStudyLevelProcessor` and `CourseTicketProcessor` to ensure
41  that previous study course data are being imported into the right study
42  course container.
43
44* Add exporters for previous study course data.
45
46* Enable import of student history.
47
48* Don't complain but remove leading and trailing whitespaces
49  while converting values during import.
50
51* Add 'Modules Level'.
52
53* Ease customization of portrait upload conditions.
54
55* `OutstandingCoursesExporter`: Remove passed courses from outstanding
56  courses lists.
57
58* Enable students and officers to upload scanned signature in the same
59  way as passport pictures are handled. Some tabs and titles had to be
60  renamed. The placeholder file, which is still the portrait
61  placeholder, are no longer shown on base pages.
62
63* Send email to student after single record creation.
64
65* Forward credentials to login page after password reset request.
66
67* Enable applicants to upload also additional jpg files.
68
69* Prefill login form after applicant registration.
70
71* Show local roles on faculty, department, course and certificate pages
72  and provide 'Contact' button so that authenticated users can contact
73  officers via Kofa.
74
75* Extend `IPayer` adapter.
76
77* Adjust `ApplicantOnlinePaymentProcessor.getMapping` (2nd bugfix).
78
79* Sort attendance.pdf first by faculty and department before certcode.
80
81* Add serial no to the coursetickets.pdf.
82
831.7.1 (2021-04-20)
84==================
85
86* Add `p_id` to `ApplicantOnlinePaymentProcessor.location_fields` (bugfix).
87
88* Enable managers to edit/remove all flash notices of students in a department.
89
901.7 (2021-04-13)
91================
92
93* Add `key` field to `CertificateExporter`.
94
95* Add payment option (`p_option`) field to payment tickets and add
96  select box on online payment add form pages. Disable this feature
97  in the base package.
98
99* Allow lecturers to export all course tickets, not only
100  those of current academic session.
101
102* Disable clearance request button if not in state 'clearance started'.
103
104* Make maximum number of applicants on `ApplicantsContainerManageFormPage`
105  customizable.
106
107* Implement bulk emailing.
108
109* Make login trouble links more conspicuous.
110
111* Add `ApplicantEmailSource` (not used and tested in base package).
112
113* Redirect to payment ticket page after ticket creation.
114
115* Use Uli's marker substitution hack to inject signature
116  images into pdf files.
117
118* Implement `ExportPDFPersonalDataSlip` (without button
119  in the base package). Rename `ExportPDFBaseDataPlusSlip`
120  `ExportPDFStudyCourseBaseDataSlip`.
121
122* Save email address provided by mandate when referee report
123  is created. Add `RefereeReportManageFormPage` (no button available).
124
125* Show submitted transcript application records on
126  `TranscriptOfficerLandingPage` (not used in base package).
127
128* Implement `ContactApplicantFormPage`.
129
130* Use `Applicant.createStudent` method also to create graduated
131  students from transcript application data (not used in base package).
132
133* Implement `RefereesRemindPage`.
134
135* Remove contact email header and add footer.
136
137* Implement webservice `get_payment`.
138
139* `year` (Year of Entrance) is no longer required when creating
140  an applicants container.
141
142* Implement temporary clearance.
143
144* `reg_number` is no longer a required field in `IApplicantBaseData`.
145
146* Add `entry_session` to student data exporters.
147
148* Add `DownloadTranscript` permission.
149
150* Implement webservice `get_unpaid_payments`.
151
152* Prepare `renderPDFAdmissionLetter` for merging with another pdf document.
153
154* Add `picture_editable` property attribute to `ApplicantsContainer`.
155
156* Add webservice to check if graduated student exists.
157
158* Implement `ExportPDFBaseDataPlusSlip` (without button
159  in the base package)
160
161* Implement `ApplicantRefereeReportExporter`.
162
163* Improve referee reports.
164
165* Use consistent flow value formatting for CGPA.
166
167* Bugfix: If level_session of a studylevel object has changed,
168  coursetickets_catalog must be informed. Otherwise lecturers
169  don't see their students.
170
171* Implement `BatchProcessor.checkCreateRequirements` and
172  `BatchProcessor.checkUpdateRequirements` methods mainly
173  to protect course result lists of graduated student.
174
175* Do not allow course validation if no score has been entered.
176
177* Add `unlock_score` field to `CourseTicketProcessor`.
178
179* Add `UpdateCourseTicketsView`.
180
181* Don't show 'Base Data' header on slips if no form fields do
182  follow.
183
184* When adding course tickets, check if course has already been
185  passed at previous level.
186
187* Add `StudentTrimmedPaymentExporter` (requested by Uniben).
188
189* Add `AccommodationDisplayFormPage`.
190
191* Don't allow students to add former courses in course lists.
192
193* Use kofa-filterbox for filtering users when assigniing
194  local roles in academics section.
195
196* Add `waeup.local.ReportsOfficer` role.
197
198* Add `TrimmedDataExporter`.
199
200* Make `getUsers` customizable.
201
202* Add logging message to `releaseBedIfMaintenanceNotPaid`.
203
204* Provide components for file uploads in the applicants section.
205
206* Copy also files from applicants to students section.
207
208* Reset _curr_stud_id if student could not be created.
209
210* Add `TranscriptDataExporter` and reorganize exporter names.
211
212* Add `session_level`filter to `StudentStudyLevelExporter`.
213
214* Add LetterPDFCreator utility and use this pdf creator
215  for admission slips. letterhead_admission.jpg file
216  must exist in students/static.
217
218* Add application worklfow transition `reset6`.
219
220* Add `StudentOutstandingCoursesExporter`.
221
222* Sort lecturers on scores slip.
223
224* Don't show hint on pdf slips.
225
226* Make max passport picture size customizable.
227
228* Redirect to `ChangePasswordRequestPage` after successfully
229  adding an officer.
230
231* Add get_bursary_data webservice.
232
233* Implement bed selector.
234
235* Implement combi payments.
236
237* Make max file size customizable.
238
239* Add `score_editing_disabled` switch at course level.
240
241* Take `DELETION_MARKER` into consideration when updating passwords.
242
243* Implement parents access to student data.
244
245* Do not print picture on application slip if application is without
246  passport picture.
247
248* Do not copy applicant_id into reg_number field after applicant creation.
249
250* Successful applicant payments do trigger 'approve' transition only
251  if applicant is in state 'started' and either p_category is 'application' or
252  applicant is special.
253
254* Allow to add applicants containers with a number instead of entrance year
255  in container code.
256
257* Add semester filter to Fix `CourseTicketExporter`.
258
259* Add `FacultiesExportJobContainerSelectStudents` view to allow
260  bursary officers to export student data for a  small subset of students
261  by entering a list of student ids or matric numbers.
262
263* Add passport picture switch to applicants containers.
264
265* Use decimal.Decimal to counteract Python floating point limitation.
266
267* Add level 0 (None) to course levels.
268
269* Ease customization of selectable payment categories.
270
271* Make maximum number of files listed in `finished` subfolder
272  customizable.
273
274* Add attendance_sheet.pdf view.
275
276* Implement course result validation workflow for lecturers.
277
278* Add graduated students filter.
279
280* Backup deleted graduated student data somewhere else to ease graduated
281  student data migration.
282
283* Add `transcript_remark` field to study levels. Add page to allow
284  transcript officers editing the field during transcript processing.
285
286* Increase password strength. Officers are now required
287  to set a password which has at least 8 characters and which contains
288  at least one uppercase letter, one lowercase letter and one
289  digit. Stored insecure passwords are no longer accepted.
290  Officers with an insecure password can't login and are
291  redirected to the `ChangePasswordRequestPage` to request a
292  new password.
293
294* Add `AccommodationPaymentsExporter` which can be used by
295  accommodation officers.
296
297* Add ReleaseExpiredAllocationsActionButton which has previously
298  only been used by Uniben.
299
300* Fix get_student_payment_stats. Department codes are not
301  unique. Use its path instead.
302
303* Implement study level 0 (Level Zero) option for storing
304  orphaned course tickets (tickets without level assignment
305  or information). Add `ticket_session` field to `ICourseTicket`.
306
307* Implement new transcript processing workflow.
308
309* Always display applicant payments if they exist.
310
311* Allow `ApplicationsManager` to view statistics.
312
313* Add payment session filter to payment exporters.
314
315* Add `SessionPaymentsOverviewExporter`.
316
317* Rename `StudentPaymentsOverviewExporter`.
318
319* Fix `CourseTicketExporter`. Ticket level and session filter
320  did not work.
321
322* Add payment category filter to payment exporters.
323
324* Remove 'hidden' attribute from ordereddSelectionList which has
325  caused a malfunction in Internet Exporer.
326
327* Set ssl index URL in buildout.cfg
328
329* Use the 'new' recaptcha v2.
330
331* Allow lecturer role assignment also at department level.
332
3331.6 (2018-04-05)
334================
335
336* Add ticket level and session filter to `CourseTicketExporter`.
337
338* Add 'Student Record Creation' Report page.
339
340* Add `CreateStudents` permission and `StudentsCreator` role.
341
342* Do not allow uploading data with trailing whitespaces.
343
344* Do no longer hide the 'Create students' buttons but switch the portal to
345  maintenance mode to ensure that nobody can enter the portal during
346  record creation except for user 'admin'. This guarantees that record
347  creation is only started once.
348
349* Replace `gpa_boundaries` utility attribute by `GPABoundaries` method
350  which may return different values in custom packages depending on faculty,
351  department or certificate code (requested by AAU Ekpoma).
352
353* Allow `ApplicantOnlinePaymentProcessor` to import records without
354  `p_id` column in create mode.
355
356* Add `waeup.showStudents` permission to `ExportManager` role.
357
358* Fix `CertificateProcessor.checkHeaders`. The processor requires both
359  faculty_code *and* department_code in create mode.
360
361* Add 'Update all tickets' button to `StudyLevelEditFormPage`.
362
363* Do not allow to create more than 10 students with a single request to
364  avoid a timeout of Nginx/Apache.
365
366* Redirect to manage page after editing of certificate courses.
367
368* Add `course_category` attribute to course tickets. In the base package,
369  this attribute is omitted from display and manage pages.
370
371* Add `course_category` attribute to certificate courses.
372
373* Simplify configuration of maximum or minimum total credits.
374
375* Add `outstanding` attribute to course tickets.
376
377* Exclude graduated students from `LevelReport`, `SessionResultsPresentation`
378  and `RawScoreReport`.
379
380* Allow applicants in states `admitted`, `not admitted` or `created` to
381  download the payment slip.
382
383* Catch traceback (`RequiredMissing`) if a required field is cleared
384  by import.
385
386* Add role `FingerprintReaderDeviceRole` intended for fingerprint reader
387  devices that access the portal via XMLRPC.
388
389
3901.5 (2017-02-14)
391================
392
393* Happy Valentines Day everybody!
394
395* Sort arguments in table of `ReportsContainerPage`.
396
397* Add `entry_session` and `p_session` filter to Student Payment Statistics
398  generator. Adjust reports: Change footer and filename formats.
399
400* Add officer name fields do `IDepartment` and `IFaculty`.
401  Plugins must be updated!
402
403* Add serial number column to Session Results Presentations.
404
405* Add Raw Score Report to base package.
406
407* Only user 'admin' is allowed to access the `DatacenterSettings` page.
408
409* Show correct level title on Level Reports and Session Results Presentations.
410
411* Get set of selected students also from list of matric numbers.
412
413* Confine Level Reports and Session Results Presentations to certificates.
414
415* Show report number (job_id) on report pdf slips.
416
417* Level report: Count and display the number of courses registered but
418  not taken.
419
420* Add control button to create graduated students.
421
422* Add option to render transcripts without passport picture and QR code.
423
424* Catch Reportlab `LayoutError`.
425
426* Replace `course_registration_allowed` by `course_registration_forbidden`
427  method.
428
429* Add export purge button.
430
431* Add report purge button.
432
433* Add property attribute `total_score` in order to make provision
434  for additional scores (like contineous assessments) in custom
435  packages.
436
437* Make provision against storing other objects than applicant payments
438  in applicant containers.
439
440* Count mandates on configuration page and provide 'Purge' button.
441
442* Start `ApplicantExporter` and `ApplicantPaymentExporter` at the same
443  time when calling `ExportJobContainerJobStart`.
444
445* Add `ApplicantPaymentExporter`.
446
447* Add file upload functionality to `EditScoresPage`.
448
449* Add `LecturerLandingPage` and `LecturerCourses` `ManageLink`
450  viewlet.
451
452* Add `ExportPDFScoresSlip`.
453
454* Add `DownloadScoresView` which is for lecturers only. Remove
455  `waeup.showStudents` from `Lecturer` role. Adjust
456  `DataForLecturerExporter`. Only editable course tickets are being
457  exported.
458
459* Remove application fee fallback option. Application fees can only
460  be set via applicants containers. Hide Payment Tickets section on
461  application pages if fee isn't set.
462
463* Add  `ApplicantOnlinePaymentProcessor`.
464
465* Improve `AddStudyLevelFormPage`.
466
467* Create new exporter for lecturers and further restrict the usage of
468  exporters at course level. Lecturers can only export data of
469  current academic session.
470
471* Show certificate-specific p_level value on payment pages.
472  Ensure that only allowed payment levels can be selected when
473  adding a balance payment.
474
475* Add `flash_notice` field.
476
477* Documentation updates.
478
479* Update pinned versions: six
480
481
4821.4.1 (2016-02-14)
483==================
484
485* Add new application workflow state (`processed`) and transition
486  (`process`).
487
488* Add `DegreeSource` and `degree` field to `ICertificate`.
489  Plugins must be updated!
490
491* Upgrade bootstrap.py script and update some dependencies. For
492  already running instances a new init might be neccessary, i.e.
493  you might have to create a new virtualenv and run bootstap.py
494  and buildout from that new virtualenv to get rid of old
495  package versions in the runtime environment.
496
497* Upgrade versions.cfg to contain bugfix releases of packages we
498  depend on.
499
500
5011.4 (2016-01-14)
502================
503
504* Add button and view which allow students to unregister their
505  current course list unless the courses have not been validated.
506
507* Configure transfer payments and let students enter their desired
508  study course. Save entered text in `p_item` attribute.
509
510* Add further permissions to the local `ApplicationsManager` role and
511  make it assignable at applicants container level.
512
513* Disable rendering of HTML tags in fullnames.
514
515* Add bed statistics components.
516
517* Add option which allows students to select a desired hostel before
518  booking accommodation.
519
520* Add `BedProcessor`.
521
522* Add portal maintenance mode.
523
524* Allow also `reg_number` on public page to check application status
525  without password.
526
527* Remove `beds_reserved` attribute from hostels. Hostels do no longer
528  contain information about reserved bed spaces.
529
530* Add methods and page to release expired bed allocations.
531
532* Use lastname instead of firstname for first-time password requests.
533
534* When building docs, ignore members with dots in name.
535
536
5371.3.3 (2015-10-06)
538==================
539
540* Show file size of pdf documents in the documents section.
541
542* Add `MANIFEST.in`.
543
544
5451.3.2 (2015-09-14)
546==================
547
548* Add public page to check application status without password.
549
550* Fix department breakdown of student statistics.
551
552* Enable purging of applicants containers.
553
554* Enable pre-filling of applicants containers with empty
555  application records which are used during self-registration
556  to avoid excessive growth of the Data.fs.
557
558* Do only allow one running export job.
559
560* Add switch to disable all exports.
561
562* Enable import of list-of-choices fields.
563
564* Include 'end day' when searching for payments in a given period.
565
566* Do not create special application payment tickets with zero amount.
567
568* Remove manual clearance lock. Replace `clearance_locked` field by
569  property attribute.
570
571* Make student email field required.
572
573* Rename application workflow transitions and remove forbidden transitions.
574
575* Rename 'application section' for the sake of consistency.
576
577* Rename student views which are not layout-aware and thus not pages.
578
579* Register KofaSourceOrderedMultiSelectWidget for IterableSource and
580  KofaSourceOrderedMultiSelectWidget for IVocabularyTokenized.
581
582* Implement session-specific course registration deadline and
583  late registration payment.
584
585* Remove quite old bug in `doImport`: Replace empty strings *and* lists with
586  ignore-markers in update *and* create mode.
587
588* Add StudentUnpaidPaymentExporter to export only unpaid tickets.
589  This exporter is designed for finding and finally purging outdated
590  payment ticket.
591
592* Remove deprecated xml importer and exporter components.
593
594* Rearrange datacenter upload page. Provide modal windows to view all
595  processors and sources and vocabularies.
596
597* Reorganize doctests. Remove deprecated doctests.
598
599* Enable temporary suspension of officer accounts. Plugins must be
600  updated after restart.
601
602* Rename 'Portal Users' 'Officers'.
603
604* Add link 'Kofa Docs for this page' at the end of the content box
605  which refers to the corresponding section of the
606  `Kofa Documentation <http://kofa-doc.waeup.org>`_.
607
608* Filter students by current level in reports.
609
610* Add `StudentsUtils.increaseMatricInteger` method which allows to use various
611  matric number counters when computing the matric number.
612
613* Bypass school fee payment activation code creation if student is allowed
614  to proceed to next session.
615
616* Convert `level` into a schema field to be consistent with the documentation.
617
618* Rename classes `StudentPaymentsExporter` and `BedTicketsExporter` to be
619  in accordance with other exporter names.
620
621* Add `ReportsOfficer` and `ReportsManager` roles with corresponding
622  permissions.
623
624* Do not automatically allow import managers to import user data.
625
626* Skip empty rows produced by spreadsheet software.
627
628* Add components to  configure a student export jobs in faculties.
629
630* `StudentOnlinePaymentProcessor` : Raise `DuplicationError` if payment
631  (in state ``paid``) with same `p_session` and `p_category` exists.
632
633* Add new payment state ``waived``. This state can only be set by import
634  and is only used for the payments overview exporter to
635  mark sessions with waived fees.
636
637* Add exporter methods and export page to filter student data exports
638  by entering a list of student ids.
639
640* Student statistic can now be broken down by faculties or by departments.
641
642* Check if `p_id` exists in payments catalog when importing payment tickets in
643  create mode.
644
645
6461.3.1 (2015-01-14)
647==================
648
649* 1.3 was a brown bag release. Fix uploaded files.
650
651
6521.3 (2015-01-13)
653================
654
655* Add documents package.
656
657* Do not compare ResultEntry objects but their attributes.
658
659* Modify getWidgetsData so that we always get the same error format.
660
661* Validate all codes in university.
662
663* Catch traceback when creating an application slip with a corrupted
664  image file.
665
666* Remove deprecated HTML and REST widgets and use html2dict and rest2dict
667  instead.
668
669* UserProcessor: Check if imported roles do exist in the portal.
670
671* Enable localization of batch processing modules.
672
673* Hide 'Create students' button. Only user admin can see this button.
674
675* Add application_slip_notice field to ApplicantsContainer.
676
677* Remove 'Size' column from logfiles table.
678
679* Add permission, page and button to mass-clear all students in a department.
680
681* Hide export download button 24 hours after file generation.
682
683* Add helper to allow `meminfo` checks for cached memory, etc.
684
685* Allow external checks of system load before performing expensive
686  actions.
687
688* Add new dependency: `psutil` (required to check system state).
689
690* Show flash message on general search page for the academic section.
691
692* Fix `CertificateCourseProcessor`. Mandatory is not a required field
693  and might be missing in import files. Improve logging. Extend and
694  fix CertCourseProcessorTests.
695
696* Provide customizable method for disabling clearance by clearance
697  officers.
698
699* Merge Javascript functions into one file. Add Javascript function to
700  calculate copyright notice year automatically.
701
702* Use lastname (surname) instead of firstname to verify found
703  application record on ApplicantRegistrationPage.
704
705* Append hash '#' also to datetimes to circumvent unwanted excel
706  automatic.
707
708* Method for (customizable) application passport upload requirements
709  added.
710
711* Filter payment ticket data exports by specifying the payment_date
712  period.
713
714* Method for (customizable) application payment slip download
715  requirements added.
716
717* Method for (customizable) application payment ticket upload
718  requirements added.
719
720* Remove unused rowadd javascript function.
721
722* certcode and reg_number added to DataForBursaryExporter.
723
724* Some batch processor names corrected.
725
726* Fixed ReST markup in setup.py long description.
727
728
7291.2 (2014-06-16)
730================
731
732* Redirect to login page after using password mandate.
733
734* Adding student payment tickets is logged.
735
736* Provide XMLRPC services for storing and retrieving fingerprint
737  scans.
738
739* Sort ContextualDictSource by dictionary values not by keys.
740
741* Add regular school fee and balance payments when exporting payments
742  overviews.
743
744* Add samePaymentMade method to StudentsUtils.
745
746* Fingerprint file upload enabled.
747
748* is_fresh property method added to Student class.
749
750* Special application procedure modified. Special applicants must submit
751  their form before they can download payment slips. Thus the regular
752  workflow is now applied but, in contrast to regular applications,
753  special applicants can create and pay more than one payment ticket.
754  Also application slips are hidden.
755
756* Add setMatricNumber and constructMatricNumber methods to StudentsUtils.
757
758* When sending mails, always set from-address to 'no-reply@waeup.org'.
759  Real from-addresses are now set in Cc and Reply-To fields. This is
760  to tackle problems with yahoo (does not allow yahoo.com mails to be
761  sent from non-yahoo servers).
762
763* Multiple payments in special application containers enabled.
764  Special payment applicants remain in state started after payment.
765
766* File input fields brought into shape with Bootstrap 3.
767
768* Transcript and access code pagetemplates adjusted.
769
770* Print QR codes on all student slips.
771
772* Allow adding current_level to base data section on all student slips
773  (requested by Uniben).
774
775* Windows is no longer supported. Installation manual removed.
776
777* Added JS helper to scroll to sequencelists after adding/removing items.
778
779
7801.1 (2014-03-13)
781================
782
783* Add display_fullname column to `CourseTicketExporter` (requested by Uniben).
784
785* Do also export student and course ticket data of students on probation.
786
787* 'Create student' option removed from 'Application Transition'
788  select field.
789
790* API docs added.
791
792* Back-to links replaced by animated jQuery plugins.
793
794* Default frontpage text updated.
795
796* Use absolute urls on datacenter pages.
797
798* Provide customizable method for disabling student payments.
799
800* After login and logout, regular users (officers) are redirected
801  to the portal's index page not to the portal's root. The
802  root URL can now be rewritten be Nginx or Apache so that the user
803  is being redirected to the university website
804  when entering the root URL directly or clicking the acronym.
805
806* Show tooltip alert and warning window before updating plugins.
807
808* JSAction has been deprecated. KofaAction can be used instead. Additional
809  parameters can be used in @action decorators to enable tooltips and/or
810  warning windows. The old @jsaction decorator still triggers a default
811  warning message.
812
813* jquery-ui.min.js is also used for tooltips.
814
815* Do not create TSC AC batch when updating plugins.
816  All TSC batches are created.
817
818* Make table on applicantsrootpage responsive.
819
820* Change width of input, select and textarea fields.
821
822* Use only https in theme.html.
823
824* INSTALL.txt updated and integrated into Sphinx documentation.
825
826* Redundancies removed in docs.
827
828
8291.0 (2014-02-22)
830================
831
832* Diazofied the complete package.
833
834
8350.2.1 (2014-02-21)
836==================
837
838* Send mails to from-address, if site-wide config admin is
839  different from it.
840
841* Change flash message for successful applicants.
842
843* Use more attributes of applicants with payer objects.
844
845* Update copyright infos (year).
846
847* Localization updates.
848
849
8500.2 (2014-01-09)
851================
852
853Tons of changes.
854
855
8560.1 (never released)
857====================
858
859Initial version. Copy from waeup.sirp.
Note: See TracBrowser for help on using the repository browser.