Oskar Hahn
3b65e89f7c
fix user status view (activate, deactivate user without js)
2014-03-30 17:22:42 +02:00
Norman Jäckel
ce8274fb53
Inserted command line option to translate config strings during database setup. Fixed #460 .
2014-01-31 02:03:43 +01:00
Oskar Hahn
2392c1ab36
Move projector.models.ProjectorSlide to core.models.CustomSlide
2014-01-28 08:32:26 +01:00
Norman Jäckel
4b63f3a288
Coupled assignment candidates with list of speakers. Fixed #1092 .
2014-01-13 15:22:46 +01:00
Oskar Hahn
d72fe39da6
Merge branch 'stable/1.5.x'
2014-01-12 13:38:07 +01:00
Oskar Hahn
bbd7542341
Fixed agenda_item.is_active_slide() with related item and list of speakers
2014-01-12 12:48:38 +01:00
Norman Jäckel
e0223c950b
Added possibility to use custom templates and static files in user data path directory.
2014-01-12 11:05:54 +01:00
Oskar Hahn
6409f828d7
Added a poll description field for each assignment poll
...
fixed signals in MainMenuTests
2014-01-12 10:22:38 +01:00
Oskar Hahn
c82ee4ce1f
Added AbsoluteUrlMixin and used it in any model.
...
cleaned up get_absolute_url() in some models
2014-01-12 00:35:16 +01:00
Norman Jäckel
3fe9169786
Merge pull request #1175 from normanjaeckel/MultipleParticipantsForm
...
Added form field for multiple creation of new participants. Fixed #178 .
2014-01-11 15:26:36 -08:00
Norman Jäckel
b95a856904
Added form field for multiple creation of new participants. Fixed #178 .
2014-01-11 23:09:59 +01:00
Oskar Hahn
90f9313faa
Use the jsonfield as requirement
2014-01-11 23:01:29 +01:00
Oskar Hahn
cde6232477
Merge branch 'stable/1.5.x'
...
Conflicts:
openslides/projector/projector.py
openslides/templates/base.html
2014-01-11 22:30:14 +01:00
Oskar Hahn
ad09a18e3f
removed edit and view in get_absolute_view
2014-01-11 17:39:16 +01:00
Oskar Hahn
4c86c9cd07
Fix list_of_speaker overlay
...
* Issue a warning message, if a overlay raises a exception
* Fixed #1131
2014-01-11 09:21:35 +01:00
Norman Jäckel
21ff62dd32
Changes in projector and core app and in utils.
...
Changed api for main menu entries.
Enhanced http error pages using a classed based views.
Moved dashboard and select widgets view from projector to core app.
Also some small clean ups.
2014-01-10 16:17:54 +01:00
Norman Jäckel
22960748a3
Added permission to see participants also to the manager group. See #1150 .
2013-12-23 19:14:11 +01:00
Norman Jäckel
1e52959f70
Fixed error when a file was removed from filesystem. Fixed #1120 .
2013-12-23 18:46:04 +01:00
Norman Jäckel
9a3243706b
Inserted api for the personal info widget.
2013-12-09 12:16:16 +01:00
Norman Jäckel
bdf1679eb0
Rename classes in the config api.
...
Also change attributes for config collection without view.
2013-12-06 10:47:20 +01:00
Norman Jäckel
fee983045b
Change API for plugins, esp. for names and versions of plugins. Also enhance possibility to patch existing OpenSlides urlpatterns.
...
Fix some other tests by the way.
2013-12-05 16:40:54 +01:00
Norman Jäckel
91ca066aa5
Enable update and delete view for uploader refering to his own files.
2013-12-03 01:53:37 +01:00
Norman Jäckel
f1d1d57e69
Move widget test to correct directory.
2013-12-02 17:53:13 +01:00
Oskar Hahn
2cf2774e58
Merge pull request #1139 from DerPate/fix_last_gpl_header
...
remove the last occurence of gnu gpl license header fix #1130
2013-12-02 07:46:09 -08:00
Dominik Breu
a3bf29acf2
remove the last occurence of gnu gpl license header fix #1130
2013-12-01 22:52:08 +01:00
Norman Jäckel
1fb1f17d15
New API for widgets using a metaclass.
...
It is now possible to define a default state and to submit extra stylefiles and javascript files when defining a widget in an app. This is done by a new metaclass in openslides.utils.dispatch. Also fixed some other tests.
2013-12-01 21:30:12 +01:00
Oskar Hahn
49ca243153
Add function get_active_object and bugfixes
...
* Dont throw errors in overlay.get_projector_html if debug == False
* fixe check of active slide in agenda
* Fix #1121
2013-11-25 11:35:03 +01:00
Oskar Hahn
f8048da76c
Fixed countdown and projector update issues
...
* agenda_item.get_absolute_url('projector') returns the activate-url of the related slide.
* agenda_item.is_activate() returns True, if the related item is active
* Fixed set_active_slide to accept kwargs
* Reset countdown when saving a new duration time
* Update countdown overlay when begin_speak and end_speak is called
* Fixed blinking countdown
Fixes : #1078 , #1076 , #1075
2013-11-24 10:04:01 +01:00
Norman Jäckel
70042142f6
Fix tests.
2013-11-21 19:50:44 +01:00
Norman Jäckel
c34b407945
Fix templatetag, #1077 .
2013-11-19 17:57:03 +01:00
Oskar Hahn
3d19ae7db2
Merge pull request #1082 from normanjaeckel/SetStateView
...
Add check for set state view, fix #1080 .
2013-11-19 08:13:10 -08:00
Norman Jäckel
31af5c0ce6
Add check for set state view, fix #1080 .
2013-11-19 01:06:38 +01:00
Norman Jäckel
1a33c1c9f1
Add percent base value to all polls, fix #1079 .
2013-11-19 00:19:46 +01:00
Oskar Hahn
4fa2c25978
Make sure QuestionView.get_question_message is in a unicode context.
...
This is important if the attribute question_message is set with
ugettext_lazy which needs an unicode context
Fixes #1066
2013-11-17 11:11:39 +01:00
Norman Jäckel
6bd4ffd8fa
Add tests according to issue #931 .
2013-11-14 22:38:12 +01:00
Oskar Hahn
9d8d9f806f
Fixed agenda slide
...
Fixes #1035
2013-11-12 08:59:20 +01:00
Norman Jäckel
c4850e4b19
Move run_tornado import into runserver function because its imports needs settings (new in Django 1.6).
2013-11-10 22:15:13 +01:00
Norman Jäckel
7b45231211
Merge pull request #1001 from ostcar/django1.6
...
Update to Django 1.6
2013-11-10 12:26:06 -08:00
Emanuel Schuetze
45588024fd
Fixed #957 (Allow list-style in CKEditor)
...
Allowed additional css styles 'color' and 'background-color'
for span html fields in ck-editor (and bleach).
2013-11-10 19:33:38 +01:00
Oskar Hahn
2a7a50a817
Show default_slide if an error occurs in a slide
...
See #925
2013-11-09 15:14:55 +01:00
Oskar Hahn
ab048e3393
Update to Django 1.6
2013-11-07 18:56:06 +01:00
Oskar Hahn
01eb64c1d2
Update scroll and sale in activate view.
...
Fixes #939
2013-11-07 12:45:17 +01:00
Oskar Hahn
929587971a
Merge pull request #1006 from normanjaeckel/CheckPort
...
Check used port, fix #985 .
2013-11-06 13:03:40 -08:00
Norman Jäckel
17a2eb97cb
Check used port, fix #985 .
2013-11-06 17:49:41 +01:00
Oskar Hahn
1ebca3b12e
Fixed participant edit view
2013-11-06 17:08:54 +01:00
Oskar Hahn
2d07644d3c
Fixed some javascript related problems
2013-11-06 14:58:30 +01:00
Norman Jäckel
7ac40f16f0
Add some tests.
2013-11-04 22:25:03 +01:00
Oskar Hahn
0752d476e4
Change to MIT Licence
...
* Remove headers
* Changed lineendings to linux style in AUTHORS and CHANGELOG
2013-11-04 14:57:30 +01:00
Oskar Hahn
2691e2b239
More Tests for projector views
2013-11-04 14:53:07 +01:00
Oskar Hahn
eedc5cef5d
Mockout threading in the startbrowser test
2013-11-04 08:41:51 +01:00
Oskar Hahn
434f7e6dc4
Merge pull request #977 from ostcar/test_password_hasher
...
Set the test passwort hasher to md5
2013-11-02 15:31:07 -07:00
Oskar Hahn
a50d2dde39
Set the test passwort hasher to md5
2013-10-31 09:44:21 +01:00
Norman Jäckel
a35d31aaa2
Add tests. Setup coverage.
2013-10-31 01:50:03 +01:00
Oskar Hahn
71666094e7
Add tests for the projector code
2013-10-30 18:58:15 +01:00
Norman Jäckel
3ec18194fa
New command create-dev-settings. Clean up main script. Fix wrong path for Windows version.
2013-10-29 00:48:49 +01:00
Norman Jäckel
b2afa77e25
Add error message if a invalid answer was send via POST to a QuestionView. Fix #940 .
2013-10-28 17:02:18 +01:00
Oskar Hahn
b84197d17b
Reenabeld the test for the QuestionView
2013-10-27 16:00:27 +01:00
Norman Jäckel
218d0bad23
Add message if someone adds himself to the list of speakers. Fix #927 .
2013-10-24 18:24:19 +02:00
Norman Jäckel
6175ce25c5
Fix #934 : Error in motion import with bad csv file.
2013-10-22 00:18:58 +02:00
Norman Jäckel
9d80c05f90
Fix url_name_args bug.
...
Fix delete view for motion categories. Add test for custom slide delete view.
2013-10-21 22:51:38 +02:00
Norman Jäckel
b0e3c7d456
Fix missing url_name_args = [] lines in different views.
...
Fix custom slide create and update view.
Fix motion category create and update view.
2013-10-21 19:10:53 +02:00
Norman Jäckel
273140007e
Fix url_name_args problems in user and group views. Add tests.
2013-10-20 21:42:17 +02:00
Oskar Hahn
c399eea2dd
Merge pull request #920 from normanjaeckel/CountdownAndAgenda
...
Countdown and agenda
2013-10-19 22:19:26 -07:00
Norman Jäckel
40faaa39c6
Changed begin speach behavior. Fix merge conflicts. Add tests.
2013-10-19 14:52:37 +02:00
Norman Jäckel
a1ad1e4c49
Some changes in __main__.py and utils.main and other.
...
Reinsert --no-browser option.
Move some code to utils.main.
Some other small style changes.
Fix merge conflict misstakes.
Change settings behavior. Add tests.
Fix rebase problems.
2013-10-19 14:44:46 +02:00
Norman Jäckel
30371e964f
Insert new feature: attachments for motions.
...
Fixed #522 . Database struture changed.
2013-10-18 12:32:29 +02:00
Oskar Hahn
68b9a2e291
Cache the results of ItemDelete.get_answer_options
...
Fix #911
2013-10-18 07:49:39 +02:00
Oskar Hahn
d3f673a276
Merge pull request #912 from normanjaeckel/Fix910
...
Fix wrong question_url_name in ItemDelete view. Fix #910 .
2013-10-17 22:36:04 -07:00
Norman Jäckel
d76a04f443
Fix wrong url_name_args in ItemDelete view. Fix #910 .
2013-10-17 22:00:00 +02:00
Emanuel Schuetze
e277b8babf
Full text search with haystack and whoosh.
...
Updated THANKS file.
Portable: Added haystack and whoosh.
2013-10-16 08:58:35 +02:00
Oskar Hahn
d937262d28
Use flake8 instead of pep8. Orderd the imports with isort
...
* changed the fab-command pep8 to check
* checked and fixed any code with flake8. Also the urls.py
* checkt the projector app with pylint
2013-10-14 18:43:12 +02:00
Oskar Hahn
d644d49579
Cleaned up utils
2013-10-13 20:43:26 +02:00
Emanuel Schuetze
84d5293fbc
Rework (projector) template with bootstrap.
...
- Always use templatetag 'absolute_url' instead of (depricated) 'model_url'.
Search and replace all old arguments: edit -> update, view -> detail, delete
- Fixed bug in setting default value in 'absolute_url' templatetag
(default value is defined in models.py only).
Updated 'backend' template.
2013-10-07 08:57:22 +02:00
Oskar Hahn
d681e94eed
Merge remote-tracking branch 'openslides/stable/1.4.x'
...
Conflicts:
AUTHORS
2013-10-04 09:13:51 +02:00
Oskar Hahn
6926630d3e
Added Feature for config app, to return the default value for a key
2013-09-29 15:10:01 +02:00
Oskar Hahn
ecf5248962
Rework of the projector with websocket
...
* Set a static projector title
* absolute_urls for the activate links
* update the projector when a slide changes (in save())
* insert the absolute_url template filter
* Preview to slides
* renamed is_active to is_active_slide
* The SlideMixin has to come before the PersonMixin
* Update list of speakers
* Render Countdown via JS
* Reconnect projector after connection lost
* Overlays can allways be active and do not appear in the widget
* Rewrote the clock as overlay
2013-09-24 23:35:05 +02:00
Oskar Hahn
93079938a3
Fixed keyerror on user setting page
...
Fix #891
2013-09-24 23:31:45 +02:00
Oskar Hahn
66679c8efe
Merge branch 'stable/1.4.x'
...
Conflicts:
openslides/__init__.py
2013-09-14 11:07:02 +02:00
Oskar Hahn
7faf59a82b
Merge pull request #878 from ostcar/change_agenda_items
...
Fixed wrong ordering of agenda items after order change
2013-09-09 02:04:27 -07:00
Oskar Hahn
3bf1f24a4a
Fixed wrong ordering of agenda items after order change
...
Fixed #875
2013-09-08 11:17:32 +02:00
Norman Jäckel
404d0fc272
Add on_change_callback to config variables. These callback can be defined in the ConfigVariable object and is called, when the variable is changed.
2013-09-08 11:16:23 +02:00
Oskar Hahn
a28ca8a4a3
Merge remote-tracking branch 'openslides/stable/1.4.x'
...
Conflicts:
openslides/assignment/models.py
2013-09-07 16:48:55 +02:00
Norman Jäckel
26607da154
Fix delete of assignments with related agenda items.
2013-09-07 16:33:10 +02:00
Oskar Hahn
afe186add4
Fixed repr in widget
2013-09-07 15:19:03 +02:00
Norman Jäckel
c800884a43
Use GenericForeignKey for agenda related items, fix #865
2013-09-07 14:30:25 +02:00
Norman Jäckel
c88d180808
Deletes config cache after each test if it exists.
2013-08-19 18:05:03 +02:00
Oskar Hahn
25bac4a704
Fixed a bug when setting a config var before getting one
2013-08-19 17:59:35 +02:00
Oskar Hahn
20cf960c82
Merge remote-tracking branch 'openslides/stable/1.4.x'
...
Conflicts:
openslides/core/templatetags/tags.py
2013-08-19 17:54:50 +02:00
Oskar Hahn
1113b6d861
Added template filter 'absolute_url'
2013-08-19 11:21:29 +02:00
Oskar Hahn
99895a28d1
Fix get_absolute_url for deleted persons.
...
Fix #845
2013-08-19 10:50:37 +02:00
Norman Jäckel
30c3f5ea64
Disable deleting active versions of a motion
2013-07-28 01:14:15 +02:00
Oskar Hahn
8743d75d10
Use get_active_version in motion.__unicode__()
...
Fixes the bug, that motion.__unicode__() raises an AttributeError, if the active_version
was None.
Fixes #822
2013-07-27 10:11:28 +02:00
Emanuel Schuetze
69c7832701
Updated csv example files for motion and participants - in DE and EN used in demo database.
...
Updated motion csv import test.
2013-07-08 10:11:48 +02:00
Norman Jäckel
834851acbd
Typo in assignment view ( fixed #805 )
2013-07-04 15:40:47 +02:00
Oskar Hahn
7d1eb5207a
Fixes #765 . Avoids the django AbstracUser username validator
...
Also changed added a white-space in the default username again
2013-06-26 19:00:52 +02:00
Norman Jäckel
7dddd70493
Fix whitespaces in translated strings.
2013-06-25 17:44:31 +02:00
Norman Jäckel
bad64144da
Fix translation of messages with additional content
2013-06-20 23:36:23 +02:00
Norman Jäckel
96c5b1d2dc
Fix numbering with category prefix in simple workflow, fix #769
2013-06-20 18:03:22 +02:00
Oskar Hahn
64af0b162f
Create admin-user after syncdb
2013-06-16 17:07:55 +02:00
Emanuel Schuetze
5237e1d90d
Fixed #745 and #744 : Make widgets fixable and collapsable.
...
Fixed widget header style issues.
2013-06-16 12:15:52 +02:00
Oskar Hahn
9853f2c433
Change the Workflow of a motion in CreateView.
...
The Manager can choose the workflow in the createview. The default value
is the workflow from the config.
In the UpdateView the workflow in which the motion is, is choosen by
default.
The workflow will only be reset, if it is changed.
2013-06-16 00:53:49 +02:00
Oskar Hahn
e630d600ed
Fixes #648
...
delete function for the motion versions
2013-06-15 09:18:21 +02:00
Norman Jäckel
3afc58be9e
Add request to all widgets, fixed #653
2013-06-13 23:45:30 +02:00
Oskar Hahn
efd10eaecc
Fixed #718
...
An string argument was not used in the assignment app
2013-06-13 16:47:35 +02:00
Oskar Hahn
42ad1113fa
Fixed #724
...
The motion updated view now uses the last_versio instead of the active_Version
2013-06-11 11:42:20 +02:00
Norman Jäckel
aa0728ff60
User lockout protection, fixed #666
...
Protection of updating and deleting users and groups if this caused a lockout of the requesting user.
2013-06-11 11:02:40 +02:00
Oskar Hahn
4b0c62d29a
Fixes #721
...
Saving the anonymous user into a list of speakers.
Also raises an AttributeError if someone tries to save the anonymous user
into any person field.
2013-06-09 18:57:42 +02:00
Oskar Hahn
cd19920223
Rework of the motion model, to make it more explcit.
2013-06-02 23:28:17 +02:00
Norman Jäckel
d4739f5dd7
Fixed #130 : New config var for removal of supports when a motion is edited by the submitter in early state.
2013-06-02 15:48:21 +02:00
Oskar Hahn
4faf91424b
Fixed #682 Error if a group was added to a list of speakers
2013-06-01 09:10:15 +02:00
Norman Jäckel
e5db00b637
Add tests for the list of speakers global links. Add end_speach link on the list of speakers widget.
2013-05-31 17:25:48 +02:00
Norman Jäckel
7624dc67af
Fixed #687
2013-05-31 14:34:49 +02:00
Norman Jäckel
ed3bad08bc
Insert test to the fix of #677
2013-05-31 14:01:30 +02:00
Norman Jäckel
9e5088d49e
Fixed #683
2013-05-31 13:15:55 +02:00
Emanuel Schuetze
a97cf4a680
Motion import improved:
...
- add semicolon support (use utils/csv_ext.py as participant import)
- show all warnings of each line in one warning message
- show success message with total counter (x of n motions imported).
- improved warning and error strings
2013-05-30 22:23:38 +02:00
Norman Jäckel
60c81c010e
Fixed motion tests
2013-05-16 21:41:41 +02:00
Norman Jäckel
bca8d3af15
Update view contains possibility for managers to change the workflow. Also other small fixes.
2013-05-16 00:25:44 +02:00
Norman Jäckel
f07485627f
Motion identifier setting and versioning.
...
Now the view decides, whether to setup a new version or not. Automatic identifier setting is the default. Also some fixes of the motion save method.
2013-05-13 23:13:14 +02:00
Norman Jäckel
0f17f74fee
Fix and update motion csv import.
2013-05-13 18:30:20 +02:00
Oskar Hahn
485518975a
motion csv import
2013-05-13 18:25:59 +02:00
Norman Jäckel
af493d28e8
Items now appear also in the personal info widget (where someone is on the list of speakers).
2013-05-12 01:46:40 +02:00
Norman Jäckel
0b85164b84
Add second time field for list of speakers. Now you can click begin and end speach.
2013-04-29 20:05:42 +02:00
Oskar Hahn
b0e5854833
Fixed #629
2013-04-28 10:21:31 +02:00
Oskar Hahn
04edef9d8a
Fixed #604
2013-04-28 10:02:19 +02:00
Emanuel Schuetze
abad75c129
A lot of template improvements and translation fixes
...
- Fixed agenda widget for special slide views (e.g. list of speakers, summary).
- Fixed back to motion(s) link
- Set icon for list of speakers widget.
- Fixed overlay widget layout of form elements.
- Added submenu with other config_pages to version.html.
- Updated completly DE translations, fixed EN strings.
- Coding style: Use correct ugettext and ugettext_lazy strings. Use "as _" for ugettext only.
Updated translation.
- Improved projector template (clock image, fixed facicon, added subtitle for list of speakers)
- Changed permission strings ('oneself'). Added check if group(pk=3) exists.
- Added event name and description to base template. Some minor template layout fixes.
- Use static subtile (no context var). Show last 2 old_speakers for projector.
- Cut old_speakers.
- Projektor template style changes (e.g. overlay list of speakers).
2013-04-24 10:38:03 +02:00
Norman Jäckel
7fbe609d04
Rename the state flag dont_set_new_version_active to leave_old_version_active.
2013-04-22 22:31:58 +02:00
Oskar Hahn
2d7bf8ca9a
fixed #558
2013-04-19 19:56:59 +02:00
Oskar Hahn
10b51f6897
Fixed #595
2013-04-19 19:39:33 +02:00
Oskar Hahn
db1503ad7b
Format fix
2013-04-19 19:15:57 +02:00
Roland Geider
56844d93f2
Move CKeditor configuration to a separate JS file
...
Remove unneeded try-except block
2013-04-18 13:26:01 +02:00
Roland Geider
01885c9304
Add first version of server-side filtering of HTML with bleach
...
Fix formatting (pep8 and otherwise)
Make the CleanHtml a mixin so it can be used easier, add a test case
Mark HTML fields as 'safe' in the template
Update list of allowed HTML tags, take special care for reportlab
Add heading tags to white list
Rename get_clean_html to get_clean_html_fields
2013-04-18 13:20:27 +02:00
Oskar Hahn
33f74c3025
List of speakers. Part 2
2013-04-15 19:28:44 +02:00
Oskar Hahn
fa95119936
New Feature: List of speakers.
2013-04-15 19:23:37 +02:00
Norman Jäckel
82b1796875
Fixed issue #585 . Sort group members by first name or last name in group detail view according to config variable
2013-04-13 18:13:11 +02:00
Norman Jäckel
82c804e2d6
Inserted a new config variable 'Stop submitting of new motions'
...
Normal delegates can not submit a new motion when this is set to true. Inserted also a new template filter to relate to config variables in if-clauses.
2013-04-05 11:49:57 +02:00
Norman Jäckel
5d472b274a
Update tests to extend test cover by coverage
2013-04-03 17:55:30 +02:00
Norman Jäckel
b310d6077e
Move personal info widget to a new app: account.
2013-04-03 00:17:23 +02:00
Norman Jäckel
e3eabada8b
Update default groups and permissions.
2013-04-02 15:50:40 +02:00
Norman Jäckel
e1b149cde3
New config app. Apps only have to define config vars once. Config pages, forms and so on are created automaticly.
...
Changes after some reviews are done.
Problematic is still that the JS can not be moved to an extra file because of the template tags in the code.
2013-03-28 15:31:13 +01:00
Norman Jäckel
d82bb6ee33
Small modifications. Enhencement of tests.
2013-03-18 22:41:42 +01:00
Norman Jäckel
ad0e157bd1
Insert new app to upload files via the frontend. Let tornado server media files. Insert icon-mediafile css class. Insert extra_stylfiles context variable.
2013-03-18 21:44:02 +01:00
Oskar Hahn
3832aa4178
Tests for the motion views
2013-03-15 12:18:27 +01:00
Oskar Hahn
43cd5aba00
Merge branch 'master' of github.com:OpenSlides/OpenSlides
2013-03-14 22:44:11 +01:00
Oskar Hahn
545d4be04f
fixed update of person_api
2013-03-14 22:32:00 +01:00
Norman Jäckel
edce8c59f1
Fix PEP8, and forgotten import change. Update .travis.
2013-03-12 21:56:13 +01:00
Norman Jäckel
03fff46517
Add new TestCase class in utils to call the signal on running every test.
2013-03-12 21:38:22 +01:00
Norman Jäckel
514577f7c6
Built-in Workflows are created by listening to a signal which is sent after syncdb.
2013-03-11 21:32:09 +01:00
Oskar Hahn
4f3f917812
some small code design changes
2013-02-18 18:56:37 +01:00
Oskar Hahn
a591e4f547
Fixed tests
2013-02-18 18:44:46 +01:00
Norman Jäckel
2603d93d69
Fix PEP8 and tests.
2013-02-17 17:07:44 +01:00