settings.py 14.8 KB
Newer Older
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
1 2 3 4 5 6
from django.conf import settings

# Set the expiration time of newly created auth tokens
# to be this many hours after their creation time.
AUTH_TOKEN_DURATION = getattr(settings, 'ASTAKOS_AUTH_TOKEN_DURATION', 30 * 24)

7

Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
8 9 10 11

DEFAULT_USER_LEVEL = getattr(settings, 'ASTAKOS_DEFAULT_USER_LEVEL', 4)

INVITATIONS_PER_LEVEL = getattr(settings, 'ASTAKOS_INVITATIONS_PER_LEVEL', {
12 13 14 15 16
    0: 100,
    1: 2,
    2: 0,
    3: 0,
    4: 0
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
17 18 19
})

# Address to use for outgoing emails
20 21
DEFAULT_CONTACT_EMAIL = getattr(
    settings, 'ASTAKOS_DEFAULT_CONTACT_EMAIL', 'support@cloud.grnet.gr')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
22

Giorgos Korfiatis's avatar
Giorgos Korfiatis committed
23 24 25
SERVER_EMAIL = getattr(settings, 'SERVER_EMAIL', None)
ADMINS = getattr(settings, 'ADMINS', None)

Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
26
# Identity Management enabled modules
27 28
# Supported modules are: 'local', 'twitter' and 'shibboleth'
IM_MODULES = getattr(settings, 'ASTAKOS_IM_MODULES', ['local'])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
29 30 31 32 33

# Force user profile verification
FORCE_PROFILE_UPDATE = getattr(settings, 'ASTAKOS_FORCE_PROFILE_UPDATE', True)

#Enable invitations
34
INVITATIONS_ENABLED = getattr(settings, 'ASTAKOS_INVITATIONS_ENABLED', False)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
35 36 37

COOKIE_NAME = getattr(settings, 'ASTAKOS_COOKIE_NAME', '_pithos2_a')
COOKIE_DOMAIN = getattr(settings, 'ASTAKOS_COOKIE_DOMAIN', None)
38
COOKIE_SECURE = getattr(settings, 'ASTAKOS_COOKIE_SECURE', True)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
39

40
IM_STATIC_URL = getattr(settings, 'ASTAKOS_IM_STATIC_URL', '/static/im/')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
41

42 43 44
# If set to False and invitations not enabled newly created user will be automatically accepted
MODERATION_ENABLED = getattr(settings, 'ASTAKOS_MODERATION_ENABLED', True)

45 46 47 48
# Set baseurl
BASEURL = getattr(settings, 'ASTAKOS_BASEURL', 'http://pithos.dev.grnet.gr')

# Set service name
49
SITENAME = getattr(settings, 'ASTAKOS_SITENAME', 'GRNET Cloud')
50

51 52 53
# Set recaptcha keys
RECAPTCHA_PUBLIC_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PUBLIC_KEY', '')
RECAPTCHA_PRIVATE_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PRIVATE_KEY', '')
54 55
RECAPTCHA_OPTIONS = getattr(settings, 'ASTAKOS_RECAPTCHA_OPTIONS',
                            {'theme': 'custom', 'custom_theme_widget': 'okeanos_recaptcha'})
56
RECAPTCHA_USE_SSL = getattr(settings, 'ASTAKOS_RECAPTCHA_USE_SSL', True)
57
RECAPTCHA_ENABLED = getattr(settings, 'ASTAKOS_RECAPTCHA_ENABLED', False)
58

59
# set AstakosUser fields to propagate in the billing system
60
BILLING_FIELDS = getattr(settings, 'ASTAKOS_BILLING_FIELDS', ['is_active'])
61 62

# Queue for billing.
63
QUEUE_CONNECTION = getattr(settings, 'ASTAKOS_QUEUE_CONNECTION', None)  # Example: 'rabbitmq://guest:guest@localhost:5672/astakos'
64 65

# Set where the user should be redirected after logout
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
66 67 68
LOGOUT_NEXT = getattr(settings, 'ASTAKOS_LOGOUT_NEXT', '')

# Set user email patterns that are automatically activated
69 70
RE_USER_EMAIL_PATTERNS = getattr(
    settings, 'ASTAKOS_RE_USER_EMAIL_PATTERNS', [])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
71

72 73
# Messages to display on login page header
# e.g. {'warning': 'This warning message will be displayed on the top of login page'}
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
74
LOGIN_MESSAGES = getattr(settings, 'ASTAKOS_LOGIN_MESSAGES', [])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
75

76 77
# Messages to display on login page header
# e.g. {'warning': 'This warning message will be displayed on the top of signup page'}
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
78
SIGNUP_MESSAGES = getattr(settings, 'ASTAKOS_SIGNUP_MESSAGES', [])
79 80 81

# Messages to display on login page header
# e.g. {'warning': 'This warning message will be displayed on the top of profile page'}
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
82
PROFILE_MESSAGES = getattr(settings, 'ASTAKOS_PROFILE_MESSAGES', [])
83 84 85

# Messages to display on all pages
# e.g. {'warning': 'This warning message will be displayed on the top of every page'}
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
86
GLOBAL_MESSAGES = getattr(settings, 'ASTAKOS_GLOBAL_MESSAGES', [])
87

88 89 90 91
# messages to display as extra actions in account forms
# e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
PROFILE_EXTRA_LINKS = getattr(settings, 'ASTAKOS_PROFILE_EXTRA_LINKS', {})

92
# The number of unsuccessful login requests per minute allowed for a specific user
93 94
RATELIMIT_RETRIES_ALLOWED = getattr(
    settings, 'ASTAKOS_RATELIMIT_RETRIES_ALLOWED', 3)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
95

96 97 98 99
# If False the email change mechanism is disabled
EMAILCHANGE_ENABLED = getattr(settings, 'ASTAKOS_EMAILCHANGE_ENABLED', False)

# Set the expiration time (in days) of email change requests
100 101
EMAILCHANGE_ACTIVATION_DAYS = getattr(
    settings, 'ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS', 10)
102

103
# Set the astakos main functions logging severity (None to disable)
104
from logging import INFO
105
LOGGING_LEVEL = getattr(settings, 'ASTAKOS_LOGGING_LEVEL', INFO)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
106

107
# Configurable email subjects
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
108 109 110
INVITATION_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_INVITATION_EMAIL_SUBJECT',
    'Invitation to %s alpha2 testing' % SITENAME)
111
GREETING_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_GREETING_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
112
                                 'Welcome to %s alpha2 testing' % SITENAME)
113
FEEDBACK_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_FEEDBACK_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
114 115 116 117 118 119 120
                                 'Feedback from %s alpha2 testing' % SITENAME)
VERIFICATION_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_VERIFICATION_EMAIL_SUBJECT',
    '%s alpha2 testing account activation is needed' % SITENAME)
ACCOUNT_CREATION_SUBJECT = getattr(
    settings, 'ASTAKOS_ACCOUNT_CREATION_SUBJECT',
    '%s alpha2 testing account created (%%(user)s)' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
121 122 123
GROUP_CREATION_SUBJECT = getattr(
    settings, 'ASTAKOS_GROUP_CREATION_SUBJECT',
    '%s alpha2 testing group created (%%(group)s)' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
124 125 126 127 128 129 130 131 132
HELPDESK_NOTIFICATION_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT',
    '%s alpha2 testing account activated (%%(user)s)' % SITENAME)
EMAIL_CHANGE_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT',
    'Email change on %s alpha2 testing' % SITENAME)
PASSWORD_RESET_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT',
    'Password reset on %s alpha2 testing' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
133 134 135 136 137 138
PROJECT_CREATION_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_CREATION_SUBJECT',
    '%s alpha2 testing project application created (%%(name)s)' % SITENAME)
PROJECT_APPROVED_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_APPROVED_SUBJECT',
    '%s alpha2 testing project application approved (%%(name)s)' % SITENAME)
139 140 141
PROJECT_DENIED_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_DENIED_SUBJECT',
    '%s alpha2 testing project application denied (%%(name)s)' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
142 143 144 145 146 147 148 149 150
PROJECT_TERMINATION_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_TERMINATION_SUBJECT',
    '%s alpha2 testing project terminated (%%(name)s)' % SITENAME)
PROJECT_SUSPENSION_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_SUSPENSION_SUBJECT',
    '%s alpha2 testing project suspended (%%(name)s)' % SITENAME)
PROJECT_MEMBERSHIP_CHANGE_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_MEMBERSHIP_CHANGE_SUBJECT',
    '%s alpha2 testing project membership changed (%%(name)s)' % SITENAME)
151 152 153
PROJECT_MEMBERSHIP_ENROLL_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_MEMBERSHIP_ENROLL_SUBJECT',
    '%s alpha2 testing project enrollment (%%(name)s)' % SITENAME)
154 155 156 157 158 159
PROJECT_MEMBERSHIP_REQUEST_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_MEMBERSHIP_REQUEST_SUBJECT',
    '%s alpha2 testing project membership request (%%(name)s)' % SITENAME)
PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT = getattr(
    settings, 'ASTAKOS_PROJECT_MEMBERSHIP_LEAVE_REQUEST_SUBJECT',
    '%s alpha2 testing project membership leave request (%%(name)s)' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
160

161
# Set the quota holder component URI
162
QUOTAHOLDER_URL = getattr(settings, 'ASTAKOS_QUOTAHOLDER_URL', '')
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
163
QUOTAHOLDER_TOKEN = getattr(settings, 'ASTAKOS_QUOTAHOLDER_TOKEN', '')
164 165

# Set the cloud service properties
root's avatar
root committed
166
SERVICES = getattr(settings, 'ASTAKOS_SERVICES', {
167 168 169
    'cyclades': {
        'url': 'https://node1.example.com/ui/',
        'resources': [{
root's avatar
root committed
170
            'name':'disk',
171
            'group':'compute',
root's avatar
root committed
172
            'uplimit':30*1024*1024*1024,
173
            'unit':'bytes',
174 175 176
            'desc': 'Virtual machine disk size'
            },{
            'name':'cpu',
177
            'group':'compute',
root's avatar
root committed
178
            'uplimit':6,
179 180 181
            'desc': 'Number of virtual machine processors'
            },{
            'name':'ram',
182
            'group':'compute',
root's avatar
root committed
183
            'uplimit':6*1024*1024*1024,
184
            'unit':'bytes',
185
            'desc': 'Virtual machines'
186
            },{
187 188 189 190 191
            'name':'vm',
            'group':'compute',
            'uplimit':2,
            'desc': 'Number of virtual machines'
            },{
192
            'name':'network.private',
root's avatar
root committed
193
            'group':'network',
194 195 196 197
            'uplimit':1,
            'desc': 'Private networks'
            }
        ]
198 199 200 201 202
    },
    'pithos+': {
        'url': 'https://node2.example.com/ui/',
        'resources':[{
            'name':'diskspace',
203
            'group':'storage',
204 205 206 207 208 209
            'uplimit':5 * 1024 * 1024 * 1024,
            'unit':'bytes',
            'desc': 'Pithos account diskspace'
            }]
    }
})
210 211 212 213

# Set the billing URI
AQUARIUM_URL = getattr(settings, 'ASTAKOS_AQUARIUM_URL', '')

Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
214
# Set how many objects should be displayed per page
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
215 216
PAGINATE_BY = getattr(settings, 'ASTAKOS_PAGINATE_BY', 8)

217
# Set how many objects should be displayed per page in show all projects page
Olga Brani's avatar
Fixes  
Olga Brani committed
218 219
PAGINATE_BY_ALL = getattr(settings, 'ASTAKOS_PAGINATE_BY_ALL', 15)

Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
220 221
# Enforce token renewal on password change/reset
NEWPASSWD_INVALIDATE_TOKEN = getattr(
root's avatar
root committed
222
    settings, 'ASTAKOS_NEWPASSWD_INVALIDATE_TOKEN', True)
Olga Brani's avatar
Olga Brani committed
223

224
USAGE_UPDATE_INTERVAL = getattr(settings, 'ASTAKOS_USAGE_UPDATE_INTERVAL', 5000)
Olga Brani's avatar
Olga Brani committed
225 226 227 228 229

RESOURCES_PRESENTATION_DATA = getattr(
    settings, 'ASTAKOS_RESOURCES_PRESENTATION_DATA', {
        'groups': {
             'compute': {
Olga Brani's avatar
Olga Brani committed
230
                'help_text':'Compute resources (amount of VMs, CPUs, RAM, System disk) ',
Olga Brani's avatar
Olga Brani committed
231 232
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
233
                 'verbose_name':'compute',
Olga Brani's avatar
Olga Brani committed
234 235
            },
            'storage': {
Olga Brani's avatar
Olga Brani committed
236
                'help_text':'Storage resources (amount of space to store files on Pithos) ',
Olga Brani's avatar
Olga Brani committed
237 238
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
239
                 'verbose_name':'storage',
Olga Brani's avatar
Olga Brani committed
240
            },
Olga Brani's avatar
Olga Brani committed
241 242 243 244 245 246
            'network': {
                'help_text':' Network resources (amount of Private Networks)  ',
                'is_abbreviation':False,
                'report_desc':'',
                'verbose_name':'network',
            },
Olga Brani's avatar
Olga Brani committed
247 248 249
        },
        'resources': {
            'pithos+.diskspace': {
Olga Brani's avatar
Olga Brani committed
250 251
                'help_text':'This is the space on Pithos for storing files and VM Images. ',
                'help_text_input_each':'This is the total amount of space on Pithos that will be granted to each user of this Project ',
Olga Brani's avatar
Olga Brani committed
252
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
253
                'report_desc':'Storage Space',
Olga Brani's avatar
Olga Brani committed
254
                'placeholder':'eg. 10GB',
Olga Brani's avatar
Olga Brani committed
255
                'verbose_name':'Storage Space',
Olga Brani's avatar
Olga Brani committed
256 257
            },
            'cyclades.disk': {
Olga Brani's avatar
Olga Brani committed
258 259
                'help_text':'This is the System Disk that the VMs have that run the OS ',
                'help_text_input_each':"This is the total amount of System Disk that will be granted to each user of this Project (this refers to the total System Disk of all VMs, not each VM's System Disk)  ",
Olga Brani's avatar
Olga Brani committed
260
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
261
                'report_desc':'System Disk',
Olga Brani's avatar
Olga Brani committed
262
                'placeholder':'eg. 5GB, 2GB etc',
Olga Brani's avatar
Olga Brani committed
263
                'verbose_name':'System Disk'
Olga Brani's avatar
Olga Brani committed
264 265
            },
            'cyclades.ram': {
Olga Brani's avatar
Olga Brani committed
266 267
                'help_text':'RAM used by VMs ',
                'help_text_input_each':'This is the total amount of RAM that will be granted to each user of this Project (on all VMs)  ',
Olga Brani's avatar
Olga Brani committed
268 269 270 271 272 273
                'is_abbreviation':True,
                'report_desc':'RAM',
                'placeholder':'eg. 4GB',
                'verbose_name':'ram'
            },
            'cyclades.cpu': {
Olga Brani's avatar
Olga Brani committed
274 275
                'help_text':'CPUs used by VMs ',
                'help_text_input_each':'This is the total number of CPUs that will be granted to each user of this Project (on all VMs)  ',
Olga Brani's avatar
Olga Brani committed
276 277 278 279 280
                'is_abbreviation':True,
                'report_desc':'CPUs',
                'placeholder':'eg. 1',
                'verbose_name':'cpu'
            },
281 282 283 284 285 286 287 288
            'cyclades.vm': {
                'help_text':'These are the VMs one can create on the Cyclades UI ',
                'help_text_input_each':'This is the total number of VMs that will be granted to each user of this Project ',
                'is_abbreviation':True,
                'report_desc':'Virtual Machines',
                'placeholder':'eg. 2',
                'verbose_name':'vm',
            },
Olga Brani's avatar
Olga Brani committed
289
            'cyclades.network.private': {
Olga Brani's avatar
Olga Brani committed
290 291
                'help_text':'These are the Private Networks one can create on the Cyclades UI. ',
                'help_text_input_each':'This is the total number of Private Networks that will be granted to each user of this Project ',
Olga Brani's avatar
Olga Brani committed
292
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
293
                'report_desc':'Private Networks',
Olga Brani's avatar
Olga Brani committed
294 295 296
                'placeholder':'eg. 1',
                'verbose_name':'private network'
            }
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
297

298 299 300 301 302 303
        },

        'groups_order': ['storage', 'compute', 'network'],
        'resources_order': ['pithos+.diskspace', 'cyclades.disk',
                            'cyclades.cpu', 'cyclades.ram', 'cyclades.vm',
                            'cyclades.network.private']
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
304

Olga Brani's avatar
Olga Brani committed
305
    })
306 307

# Permit local account migration
308
ENABLE_LOCAL_ACCOUNT_MIGRATION = getattr(settings, 'ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION', True)
309 310 311 312 313

# Strict shibboleth usage
SHIBBOLETH_REQUIRE_NAME_INFO = getattr(settings,
                                       'ASTAKOS_SHIBBOLETH_REQUIRE_NAME_INFO',
                                       False)
314 315 316

PROJECT_MEMBER_JOIN_POLICIES = getattr(settings,
                                'ASTAKOS_PROJECT_MEMBER_JOIN_POLICIES',
317 318 319
                                {'1':'automatically accepted',
                                 '2':'owner accepts',
                                 '3':'closed'})
320 321 322

PROJECT_MEMBER_LEAVE_POLICIES = getattr(settings,
                                'ASTAKOS_PROJECT_MEMBER_LEAVE_POLICIES',
323 324 325
                                {'1':'automatically accepted',
                                 '2':'owner accepts',
                                 '3':'closed'})
326 327 328

ACTIVATION_REDIRECT_URL = getattr(settings,
                                  'ASTAKOS_ACTIVATION_REDIRECT_URL',
329
                                  "/im/landing")
330

331 332 333 334
# If true, this enables a ui compatibility layer for the introduction of UUIDs
# in identity management. WARNING: Setting to True will break your installation.
TRANSLATE_UUIDS = getattr(settings, 'ASTAKOS_TRANSLATE_UUIDS', False)

335 336
# Users that can approve or deny project applications from the web.
PROJECT_ADMINS = getattr(settings, 'ASTAKOS_PROJECT_ADMINS', set())
337 338 339 340 341 342 343 344 345 346 347 348 349 350

# OAuth2 Twitter credentials.
TWITTER_TOKEN = getattr(settings, 'ASTAKOS_TWITTER_TOKEN', '')
TWITTER_SECRET = getattr(settings, 'ASTAKOS_TWITTER_SECRET', '')
TWITTER_AUTH_FORCE_LOGIN = getattr(settings, 'ASTAKOS_TWITTER_AUTH_FORCE_LOGIN',
                                  False)

# OAuth2 Google credentials.
GOOGLE_CLIENT_ID = getattr(settings, 'ASTAKOS_GOOGLE_CLIENT_ID', '')
GOOGLE_SECRET = getattr(settings, 'ASTAKOS_GOOGLE_SECRET', '')

# OAuth2 LinkedIn credentials.
LINKEDIN_TOKEN = getattr(settings, 'ASTAKOS_LINKEDIN_TOKEN', '')
LINKEDIN_SECRET = getattr(settings, 'ASTAKOS_LINKEDIN_SECRET', '')