diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 3df226764ccd1615d3796d5f54ead7919b696926..bd2bbdead5697f9cfa7d71725fb97ffe05e99c43 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -3,9 +3,8 @@ <component name="ChangeListManager"> <list default="true" id="3a000256-1023-4a19-a046-bde25cb853cc" name="Default" comment=""> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/schoolapps/schoolapps/example_secure_settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/schoolapps/schoolapps/example_secure_settings.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/schoolapps/schoolapps/settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/schoolapps/schoolapps/settings.py" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/schoolapps/templates/partials/header.html" beforeDir="false" afterPath="$PROJECT_DIR$/schoolapps/templates/partials/header.html" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="TRACKING_ENABLED" value="true" /> @@ -26,7 +25,7 @@ <entry file="file://$PROJECT_DIR$/schoolapps/schoolapps/secure_settings.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="391"> - <caret line="23" column="38" lean-forward="true" selection-start-line="23" selection-start-column="38" selection-end-line="23" selection-end-column="38" /> + <caret line="23" column="38" selection-start-line="23" selection-start-column="38" selection-end-line="23" selection-end-column="38" /> </state> </provider> </entry> @@ -34,8 +33,8 @@ <file leaf-file-name="settings.py" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/schoolapps/schoolapps/settings.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="259"> - <caret line="145" column="20" lean-forward="true" selection-start-line="145" selection-start-column="20" selection-end-line="145" selection-end-column="20" /> + <state relative-caret-position="158"> + <caret line="166" lean-forward="true" selection-start-line="166" selection-end-line="166" /> <folding> <element signature="e#309#318#0" expanded="true" /> </folding> @@ -46,24 +45,12 @@ <file leaf-file-name="substitution.html" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/schoolapps/timetable/templates/timetable/substitution.html"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="187"> + <state relative-caret-position="204"> <caret line="12" selection-start-line="12" selection-end-line="12" /> </state> </provider> </entry> </file> - <file leaf-file-name="views.py" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/schoolapps/timetable/views.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="294"> - <caret line="19" column="27" selection-start-line="19" selection-start-column="27" selection-end-line="19" selection-end-column="27" /> - <folding> - <element signature="e#0#57#0" expanded="true" /> - </folding> - </state> - </provider> - </entry> - </file> <file leaf-file-name="quicklaunch.html" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/schoolapps/timetable/templates/timetable/quicklaunch.html"> <provider selected="true" editor-type-id="text-editor"> @@ -76,7 +63,7 @@ <file leaf-file-name="style.css" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/schoolapps/static/common/style.css"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="583"> + <state relative-caret-position="2312"> <caret line="136" column="15" selection-start-line="136" selection-start-column="15" selection-end-line="136" selection-end-column="15" /> </state> </provider> @@ -94,8 +81,17 @@ <file leaf-file-name="header.html" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/schoolapps/templates/partials/header.html"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="1399"> - <caret line="109" column="16" selection-start-line="109" selection-start-column="16" selection-end-line="109" selection-end-column="16" /> + <state relative-caret-position="1722"> + <caret line="128" column="39" lean-forward="true" selection-start-line="128" selection-start-column="39" selection-end-line="128" selection-end-column="39" /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="models.py" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/schoolapps/aub/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-335"> + <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" /> </state> </provider> </entry> @@ -113,8 +109,8 @@ <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <state split_layout="SPLIT"> - <first_editor relative-caret-position="466"> - <caret line="36" column="19" lean-forward="true" selection-start-line="36" selection-start-column="19" selection-end-line="36" selection-end-column="19" /> + <first_editor relative-caret-position="612"> + <caret line="36" column="19" selection-start-line="36" selection-start-column="19" selection-end-line="36" selection-end-column="19" /> </first_editor> <second_editor /> </state> @@ -200,12 +196,12 @@ <option value="$PROJECT_DIR$/schoolapps/schoolapps/secure_settings.py" /> <option value="$PROJECT_DIR$/schoolapps/timetable/templates/timetable/substitution.html" /> <option value="$PROJECT_DIR$/schoolapps/timetable/views.py" /> - <option value="$PROJECT_DIR$/schoolapps/templates/partials/header.html" /> <option value="$PROJECT_DIR$/schoolapps/timetable/urls.py" /> <option value="$PROJECT_DIR$/schoolapps/static/common/style.css" /> <option value="$PROJECT_DIR$/schoolapps/timetable/templates/timetable/quicklaunch.html" /> <option value="$PROJECT_DIR$/README.md" /> <option value="$PROJECT_DIR$/schoolapps/schoolapps/example_secure_settings.py" /> + <option value="$PROJECT_DIR$/schoolapps/templates/partials/header.html" /> <option value="$PROJECT_DIR$/schoolapps/schoolapps/settings.py" /> </list> </option> @@ -246,6 +242,12 @@ <item name="school-apps" type="462c0819:PsiDirectoryNode" /> <item name="schoolapps" type="462c0819:PsiDirectoryNode" /> </path> + <path> + <item name="school-apps" type="b2602c69:ProjectViewProjectNode" /> + <item name="school-apps" type="462c0819:PsiDirectoryNode" /> + <item name="schoolapps" type="462c0819:PsiDirectoryNode" /> + <item name="aub" type="462c0819:PsiDirectoryNode" /> + </path> <path> <item name="school-apps" type="b2602c69:ProjectViewProjectNode" /> <item name="school-apps" type="462c0819:PsiDirectoryNode" /> @@ -670,7 +672,14 @@ <option name="project" value="LOCAL" /> <updated>1524911299889</updated> </task> - <option name="localTasksCounter" value="37" /> + <task id="LOCAL-00037" summary="LDAP"> + <created>1526753564006</created> + <option name="number" value="00037" /> + <option name="presentableId" value="LOCAL-00037" /> + <option name="project" value="LOCAL" /> + <updated>1526753564006</updated> + </task> + <option name="localTasksCounter" value="38" /> <servers /> </component> <component name="ToolWindowManager"> @@ -678,42 +687,28 @@ <editor active="true" /> <layout> <window_info anchor="bottom" id="TODO" order="6" /> - <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.5010672" side_tool="true" visible="true" weight="0.21953897" /> + <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.5010672" side_tool="true" visible="true" weight="0.23710209" /> <window_info anchor="bottom" id="Database Changes" order="8" /> <window_info anchor="bottom" id="Version Control" order="10" weight="0.27083334" /> <window_info anchor="bottom" id="Python Console" order="8" weight="0.3294509" /> - <window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49893278" visible="true" weight="0.21953897" /> + <window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49893278" visible="true" weight="0.23710209" /> <window_info anchor="bottom" id="Terminal" order="9" /> - <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2620064" /> + <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.26520813" /> <window_info anchor="bottom" id="Docker" order="11" show_stripe_button="false" /> <window_info anchor="right" id="Database" order="3" /> - <window_info anchor="bottom" id="Find" order="1" sideWeight="0.4994664" weight="0.32930845" /> <window_info anchor="right" id="SciView" order="5" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Favorites" order="2" side_tool="true" /> <window_info anchor="bottom" id="Debug" order="3" weight="0.39933443" /> <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> - <window_info anchor="bottom" id="Docker" order="11" show_stripe_button="false" /> <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> - <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2620064" /> - <window_info anchor="right" id="SciView" order="5" /> <window_info anchor="right" id="Commander" order="0" weight="0.4" /> <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> - <window_info anchor="bottom" id="TODO" order="6" /> - <window_info anchor="bottom" id="Version Control" order="10" weight="0.27083334" /> - <window_info anchor="bottom" id="Run" order="2" sideWeight="0.4994664" weight="0.23710209" /> - <window_info anchor="bottom" id="Find" order="1" sideWeight="0.4994664" weight="0.32930845" /> <window_info anchor="right" id="Data View" order="4" /> - <window_info anchor="bottom" id="Database Changes" order="8" /> - <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> - <window_info anchor="right" id="Database" order="3" /> - <window_info anchor="bottom" id="Terminal" order="9" /> - <window_info anchor="bottom" id="Event Log" order="7" sideWeight="0.50053364" side_tool="true" visible="true" weight="0.23710209" /> - <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> - <window_info id="Favorites" order="2" side_tool="true" /> <window_info anchor="bottom" id="Message" order="0" /> - <window_info anchor="bottom" id="Debug" order="3" weight="0.39933443" /> - <window_info anchor="bottom" id="Python Console" order="8" weight="0.3294509" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info anchor="bottom" id="Find" order="1" sideWeight="0.4994664" weight="0.32930845" /> + <window_info anchor="bottom" id="Concurrent Activities Diagram" order="12" sideWeight="0.4994664" weight="0.32930845" /> </layout> </component> <component name="TypeScriptGeneratedFilesManager"> @@ -726,7 +721,6 @@ <option name="myLimit" value="2678400000" /> </component> <component name="VcsManagerConfiguration"> - <MESSAGE value="Translate login/logout | Comment header" /> <MESSAGE value="Add dashboard with last activities (look at README)" /> <MESSAGE value="Add dashboard with last activities (look at README) [ADD UNVERSIONED FILES, MISTAKE]" /> <MESSAGE value="Add notifications to dashboard" /> @@ -751,7 +745,8 @@ <MESSAGE value="First notification with email in AUB" /> <MESSAGE value="Finish AUB notification" /> <MESSAGE value="Change infrastructure for server" /> - <option name="LAST_COMMIT_MESSAGE" value="Change infrastructure for server" /> + <MESSAGE value="LDAP" /> + <option name="LAST_COMMIT_MESSAGE" value="LDAP" /> <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" /> <option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" /> </component> @@ -950,13 +945,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/schoolapps/aub/models.py"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="153"> - <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/schoolapps/dashboard/models.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="68"> @@ -989,6 +977,9 @@ <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="612"> <caret line="41" selection-start-line="41" selection-end-line="41" /> + <folding> + <element signature="e#0#57#0" expanded="true" /> + </folding> </state> </provider> </entry> @@ -996,6 +987,9 @@ <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="1938"> <caret line="122" column="29" selection-start-line="122" selection-start-column="29" selection-end-line="122" selection-end-column="29" /> + <folding> + <element signature="e#0#78#0" expanded="true" /> + </folding> </state> </provider> </entry> @@ -1008,7 +1002,7 @@ </entry> <entry file="file://$PROJECT_DIR$/schoolapps/timetable/views.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="294"> + <state relative-caret-position="255"> <caret line="19" column="27" selection-start-line="19" selection-start-column="27" selection-end-line="19" selection-end-column="27" /> <folding> <element signature="e#0#57#0" expanded="true" /> @@ -1018,7 +1012,7 @@ </entry> <entry file="file://$PROJECT_DIR$/schoolapps/timetable/templates/timetable/substitution.html"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="187"> + <state relative-caret-position="204"> <caret line="12" selection-start-line="12" selection-end-line="12" /> </state> </provider> @@ -1032,18 +1026,11 @@ </entry> <entry file="file://$PROJECT_DIR$/schoolapps/static/common/style.css"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="583"> + <state relative-caret-position="2312"> <caret line="136" column="15" selection-start-line="136" selection-start-column="15" selection-end-line="136" selection-end-column="15" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/schoolapps/templates/partials/header.html"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="1399"> - <caret line="109" column="16" selection-start-line="109" selection-start-column="16" selection-end-line="109" selection-end-column="16" /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/schoolapps/timetable/templates/timetable/quicklaunch.html"> <provider selected="true" editor-type-id="text-editor"> <state> @@ -1054,8 +1041,8 @@ <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <state split_layout="SPLIT"> - <first_editor relative-caret-position="466"> - <caret line="36" column="19" lean-forward="true" selection-start-line="36" selection-start-column="19" selection-end-line="36" selection-end-column="19" /> + <first_editor relative-caret-position="612"> + <caret line="36" column="19" selection-start-line="36" selection-start-column="19" selection-end-line="36" selection-end-column="19" /> </first_editor> <second_editor /> </state> @@ -1072,14 +1059,28 @@ <entry file="file://$PROJECT_DIR$/schoolapps/schoolapps/secure_settings.py"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="391"> - <caret line="23" column="38" lean-forward="true" selection-start-line="23" selection-start-column="38" selection-end-line="23" selection-end-column="38" /> + <caret line="23" column="38" selection-start-line="23" selection-start-column="38" selection-end-line="23" selection-end-column="38" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/schoolapps/aub/models.py"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-335"> + <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/schoolapps/templates/partials/header.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1722"> + <caret line="128" column="39" lean-forward="true" selection-start-line="128" selection-start-column="39" selection-end-line="128" selection-end-column="39" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/schoolapps/schoolapps/settings.py"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="259"> - <caret line="145" column="20" lean-forward="true" selection-start-line="145" selection-start-column="20" selection-end-line="145" selection-end-column="20" /> + <state relative-caret-position="158"> + <caret line="166" lean-forward="true" selection-start-line="166" selection-end-line="166" /> <folding> <element signature="e#309#318#0" expanded="true" /> </folding> diff --git a/schoolapps/schoolapps/settings.py b/schoolapps/schoolapps/settings.py index bc4085f6cdef726155205fa61df808962d7f44af..a8ad4d967feb1162df48e79fbc08a1badc6ebe90 100644 --- a/schoolapps/schoolapps/settings.py +++ b/schoolapps/schoolapps/settings.py @@ -12,7 +12,8 @@ https://docs.djangoproject.com/en/2.0/ref/settings/ import os import ldap -from django_auth_ldap.config import LDAPSearch, GroupOfNamesType +from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, LDAPGroupType +import logging from .secure_settings import * # Build paths inside the project like this: os.path.join(BASE_DIR, ...) @@ -155,17 +156,18 @@ TIMETABLE_HEIGHT = 10 # Baseline configuration. AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1" -AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com", +AUTH_LDAP_USER_SEARCH = LDAPSearch("dc=skole,dc=skolelinux,dc=no", ldap.SCOPE_SUBTREE, "(uid=%(user)s)") # or perhaps: # AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,ou=users,dc=example,dc=com" # Set up the basic group parameters. -AUTH_LDAP_GROUP_SEARCH = LDAPSearch("dc=skole,dc=skolelinux,dc=no", ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)") -AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="ou") +AUTH_LDAP_GROUP_SEARCH = LDAPSearch("dc=skole,dc=skolelinux,dc=no", ldap.SCOPE_SUBTREE) +# "(objectClass=organizationalUnit)") +AUTH_LDAP_GROUP_TYPE = LDAPGroupType(name_attr="ou") # Simple group restrictions -# AUTH_LDAP_REQUIRE_GROUP = "cn=enabled,ou=django,ou=groups,dc=example,dc=com" +# AUTH_LDAP_REQUIRE_GROUP = "dc=skole,dc=skolelinux,dc=no" # AUTH_LDAP_DENY_GROUP = "cn=disabled,ou=django,ou=groups,dc=example,dc=com" # Populate the Django user from the LDAP directory. @@ -189,7 +191,7 @@ AUTH_LDAP_FIND_GROUP_PERMS = True # Cache group memberships for an hour to minimize LDAP traffic AUTH_LDAP_CACHE_GROUPS = True -AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600 +AUTH_LDAP_GROUP_CACHE_TIMEOUT = 300 # Keep ModelBackend around for per-user permissions and maybe a local # superuser. @@ -197,3 +199,7 @@ AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', ) + +logger = logging.getLogger('django_auth_ldap') +logger.addHandler(logging.StreamHandler()) +logger.setLevel(logging.DEBUG) diff --git a/schoolapps/templates/partials/header.html b/schoolapps/templates/partials/header.html index dc56633342cf21dbe57a01f60c9911d9da5e290f..4876d9b6a5950fabfa610658f138bac0eba8980d 100644 --- a/schoolapps/templates/partials/header.html +++ b/schoolapps/templates/partials/header.html @@ -104,7 +104,9 @@ <div class="divider"></div> </li> <li><a class="subheader grey lighten-3">Lehrerfunktionen</a></li> - <li><a href="{% url 'aub_index' %}">Unterrichtsbefreiungen</a></li> + {% if perms.aub.apply_for_aub %} + <li><a href="{% url 'aub_index' %}">Unterrichtsbefreiungen</a></li> + {% endif %} <li><a href="{% url 'aub_check1' %}">Anträge genehmigen 1</a></li> <li><a href="{% url 'aub_check2' %}">Anträge genehmigen 2</a></li> <li> @@ -122,6 +124,12 @@ <i class="material-icons">exit_to_app</i> Abmelden </a> </li> + <li> + {{ user.groups.all }} + {% for group in user.groups.all %} + {{ group }} + {% endfor %} + </li> {% endif %} </ul> </header>