diff --git a/.gitignore b/.gitignore index 37097e6012aabe98fd84d679b1a620f287aaf2e2..3c5850876a921ddc46a94d7df2d7a27b0b3829d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -# autogenerated static files gms/static +**settings_local.py # VS Code metadata .vscode diff --git a/gms/gms/__init__.py b/gms/gms/__init__.py deleted file mode 100755 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/gms/gms/settings.py b/gms/gms/settings.py index 4ab113c10614529b5bae4ba7ad183b55ada660d4..30c5a431206196177c0720f47d118071654a08c0 100644 --- a/gms/gms/settings.py +++ b/gms/gms/settings.py @@ -62,39 +62,15 @@ USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.7/howto/static-files/ -STATIC_URL = '/members/media/' -STATIC_ROOT = '/services/gms/static' +STATIC_URL = '/media/' +STATIC_ROOT = os.path.join(BASE_DIR, 'static') AUTHENTICATION_BACKENDS = [ 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', ] -import ldap -from django_auth_ldap.config import LDAPSearch, PosixGroupType - -AUTH_LDAP_SERVER_URI = 'ldaps://mussel.ucc.gu.uwa.edu.au/' -AUTH_LDAP_USER_DN_TEMPLATE = 'uid=%(user)s,ou=People,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au' - -AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=group,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au", - ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)") -AUTH_LDAP_GROUP_TYPE = PosixGroupType(name_attr='cn') - -# Populate the Django user from the LDAP directory. -AUTH_LDAP_USER_ATTR_MAP = { - "first_name": "givenName", - "last_name": "sn", - "email": "mail" -} - -AUTH_LDAP_USER_FLAGS_BY_GROUP = { - "is_staff": "cn=committee,ou=group,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au", - "is_superuser": "cn=committee,ou=group,dc=ucc,dc=gu,dc=uwa,dc=edu,dc=au", -} - -AUTH_LDAP_ALWAYS_UPDATE_USER = False - -AUTH_LDAP_MIRROR_GROUPS = True +# see settings_local.py for LDAP settings TEMPLATES = [ { @@ -111,3 +87,53 @@ TEMPLATES = [ }, }, ] + +from django.contrib.messages import constants as message_constants +MESSAGE_LEVEL = message_constants.DEBUG + +import logging +LOGGING = { + 'version': 1, + 'disable_existing_loggers': True, + 'formatters': { + 'standard': { + 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", + 'datefmt' : "%d/%b/%Y %H:%M:%S" + }, + }, + 'handlers': { + # 'logfile': { + # 'level':'DEBUG', + # 'class':'logging.handlers.RotatingFileHandler', + # 'filename': SITE_ROOT + "/logfile", + # 'maxBytes': 50000, + # 'backupCount': 2, + # 'formatter': 'standard', + # }, + 'console':{ + 'level':'INFO', + 'class':'logging.StreamHandler', + 'formatter': 'standard' + }, + }, + 'loggers': { + 'django': { + 'handlers':['console'], + 'propagate': True, + 'level':'DEBUG', + }, + 'django.db.backends': { + 'handlers': ['console'], + 'level': 'DEBUG', + 'propagate': False, + }, + 'django.contrib.auth': { + 'handlers': ['console'], + 'level': 'DEBUG', + }, + 'django_auth_ldap': { + 'level': 'DEBUG', + 'handlers': ['console'], + }, + }, +} \ No newline at end of file diff --git a/gms/gms/settings_local.example.py b/gms/gms/settings_local.example.py new file mode 100644 index 0000000000000000000000000000000000000000..7d49bda05256389b1b49c59aa89ec9593fc1f470 --- /dev/null +++ b/gms/gms/settings_local.example.py @@ -0,0 +1,63 @@ +# Django settings for uccmemberdb project. + +DEBUG = True + +ADMINS = ( + ('UCC Committee', 'committee-only@ucc.asn.au'), +) + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + 'NAME': 'member.db', # Or path to database file if using sqlite3. + 'USER': '', # Not used with sqlite3. + 'PASSWORD': '', # Not used with sqlite3. + 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. + 'PORT': '', # Set to empty string for default. Not used with sqlite3. + } +} + +# Make this unique, and don't share it with anybody. +SECRET_KEY = 'something-unique-here' + +ALLOWED_HOSTS = [] + +import ldap +from django_auth_ldap.config import LDAPSearch, ActiveDirectoryGroupType, LDAPGroupQuery + +AUTH_LDAP_SERVER_URI = 'ldaps://samson.ucc.gu.uwa.edu.au/' + +AUTH_LDAP_GLOBAL_OPTIONS = { + ldap.OPT_X_TLS_REQUIRE_CERT: ldap.OPT_X_TLS_NEVER, +} + +# directly attempt to authenticate users to bind to LDAP +AUTH_LDAP_USER_DN_TEMPLATE = 'CN=%(user)s,CN=Users,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au' +AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True + +AUTH_LDAP_FIND_GROUP_PERMS = True + +AUTH_LDAP_USER_SEARCH = LDAPSearch("CN=Users,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au", + ldap.SCOPE_SUBTREE, "(objectClass=user)") + +AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=Groups,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au", + ldap.SCOPE_SUBTREE, "(objectClass=group)") +AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType() + +# Populate the Django user from the LDAP directory. +AUTH_LDAP_USER_ATTR_MAP = { + "first_name": "displayName", + "last_name": "name" +} + +AUTH_LDAP_USER_FLAGS_BY_GROUP = { + "is_staff": ( + LDAPGroupQuery("CN=committee,OU=Groups,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au") | + LDAPGroupQuery("CN=door,OU=Groups,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au") + ), + "is_superuser": "CN=committee,OU=Groups,DC=ad,DC=ucc,DC=gu,DC=uwa,DC=edu,DC=au", +} + +AUTH_LDAP_ALWAYS_UPDATE_USER = True + +AUTH_LDAP_MIRROR_GROUPS = False diff --git a/gms/gms/settings_local.py b/gms/gms/settings_local.py deleted file mode 100644 index 9a7b4c58b6aaa5570e1a5ae10e528ce5860f8701..0000000000000000000000000000000000000000 --- a/gms/gms/settings_local.py +++ /dev/null @@ -1,25 +0,0 @@ -# Django settings for uccmemberdb project. - -DEBUG = True - -ADMINS = ( - ('UCC Committee', 'committee-only@ucc.asn.au'), - ('David Adam', 'zanchey@ucc.gu.uwa.edu.au'), - ('Felix von Perger', 'frekk@ucc.asn.au'), -) - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '/home/frekk/Documents/projects/usermgmt-ucc/uccportal/.db/members.db', # Or path to database file if using sqlite3. - 'USER': '', # Not used with sqlite3. - 'PASSWORD': '', # Not used with sqlite3. - 'HOST': '', # Set to empty string for localhost. Not used with sqlite3. - 'PORT': '', # Set to empty string for default. Not used with sqlite3. - } -} - -# Make this unique, and don't share it with anybody. -SECRET_KEY = 'oB8fVqxJPfeL0MomVCwExU13H3ajZd9vWFgCpL5RMuhR4JOqSXemYasppIdimhLk' - -ALLOWED_HOSTS = [] diff --git a/gms/gms/urls.py b/gms/gms/urls.py index 21685dfc84a1489f380c246adcc5f68df8081a77..0560cca9173bb69ebade35451d4457644982824b 100644 --- a/gms/gms/urls.py +++ b/gms/gms/urls.py @@ -1,4 +1,4 @@ -from django.urls import path +from django.urls import path, include from django.contrib import admin admin.site.site_header = "Gumby Management System" @@ -6,5 +6,6 @@ admin.site.site_title = "UCC Gumby Management System" admin.site.index_title = "Membership Database" urlpatterns = [ - path('', admin.site.urls), + path('', include('memberdb.urls')), + path('admin/', admin.site.urls), ]