settings.py 13.3 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
# OAuth2 Twitter credentials.
8
TWITTER_TOKEN = getattr(settings, 'ASTAKOS_TWITTER_TOKEN', '')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
9
TWITTER_SECRET = getattr(settings, 'ASTAKOS_TWITTER_SECRET', '')
10
11
TWITTER_AUTH_FORCE_LOGIN = getattr(settings, 'ASTAKOS_TWITTER_AUTH_FORCE_LOGIN',
                                  False)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
12

13
14
15
16
17
18
19
20

# 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', '')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
21
22
23
24

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

INVITATIONS_PER_LEVEL = getattr(settings, 'ASTAKOS_INVITATIONS_PER_LEVEL', {
25
26
27
28
29
    0: 100,
    1: 2,
    2: 0,
    3: 0,
    4: 0
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
30
31
32
})

# Address to use for outgoing emails
33
34
DEFAULT_CONTACT_EMAIL = getattr(
    settings, 'ASTAKOS_DEFAULT_CONTACT_EMAIL', 'support@cloud.grnet.gr')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
35
36

# Identity Management enabled modules
37
38
# Supported modules are: 'local', 'twitter' and 'shibboleth'
IM_MODULES = getattr(settings, 'ASTAKOS_IM_MODULES', ['local'])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
39
40
41
42
43

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

#Enable invitations
44
INVITATIONS_ENABLED = getattr(settings, 'ASTAKOS_INVITATIONS_ENABLED', False)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
45
46
47

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

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

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

55
56
57
58
# Set baseurl
BASEURL = getattr(settings, 'ASTAKOS_BASEURL', 'http://pithos.dev.grnet.gr')

# Set service name
59
SITENAME = getattr(settings, 'ASTAKOS_SITENAME', 'GRNET Cloud')
60

61
62
63
# Set recaptcha keys
RECAPTCHA_PUBLIC_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PUBLIC_KEY', '')
RECAPTCHA_PRIVATE_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PRIVATE_KEY', '')
64
65
RECAPTCHA_OPTIONS = getattr(settings, 'ASTAKOS_RECAPTCHA_OPTIONS',
                            {'theme': 'custom', 'custom_theme_widget': 'okeanos_recaptcha'})
66
RECAPTCHA_USE_SSL = getattr(settings, 'ASTAKOS_RECAPTCHA_USE_SSL', True)
67
RECAPTCHA_ENABLED = getattr(settings, 'ASTAKOS_RECAPTCHA_ENABLED', False)
68

69
# set AstakosUser fields to propagate in the billing system
70
BILLING_FIELDS = getattr(settings, 'ASTAKOS_BILLING_FIELDS', ['is_active'])
71
72

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

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

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

82
83
# 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
84
LOGIN_MESSAGES = getattr(settings, 'ASTAKOS_LOGIN_MESSAGES', [])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
85

86
87
# 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
88
SIGNUP_MESSAGES = getattr(settings, 'ASTAKOS_SIGNUP_MESSAGES', [])
89
90
91

# 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
92
PROFILE_MESSAGES = getattr(settings, 'ASTAKOS_PROFILE_MESSAGES', [])
93
94
95

# 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
96
GLOBAL_MESSAGES = getattr(settings, 'ASTAKOS_GLOBAL_MESSAGES', [])
97

98
99
100
101
# 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', {})

102
# The number of unsuccessful login requests per minute allowed for a specific user
103
104
RATELIMIT_RETRIES_ALLOWED = getattr(
    settings, 'ASTAKOS_RATELIMIT_RETRIES_ALLOWED', 3)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
105

106
107
108
109
# 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
110
111
EMAILCHANGE_ACTIVATION_DAYS = getattr(
    settings, 'ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS', 10)
112

113
# Set the astakos main functions logging severity (None to disable)
114
from logging import INFO
115
LOGGING_LEVEL = getattr(settings, 'ASTAKOS_LOGGING_LEVEL', INFO)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
116

117
# Configurable email subjects
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
118
119
120
INVITATION_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_INVITATION_EMAIL_SUBJECT',
    'Invitation to %s alpha2 testing' % SITENAME)
121
GREETING_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_GREETING_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
122
                                 'Welcome to %s alpha2 testing' % SITENAME)
123
FEEDBACK_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_FEEDBACK_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
124
125
126
127
128
129
130
                                 '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
131
132
133
GROUP_CREATION_SUBJECT = getattr(
    settings, 'ASTAKOS_GROUP_CREATION_SUBJECT',
    '%s alpha2 testing group created (%%(group)s)' % SITENAME)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
134
135
136
137
138
139
140
141
142
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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)
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)
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
158

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

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

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

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

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

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

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

RESOURCES_PRESENTATION_DATA = getattr(
    settings, 'ASTAKOS_RESOURCES_PRESENTATION_DATA', {
        'groups': {
             'compute': {
Olga Brani's avatar
Olga Brani committed
228
                'help_text':'Compute resources (amount of VMs, CPUs, RAM, System disk) ',
Olga Brani's avatar
Olga Brani committed
229
230
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
231
                 'verbose_name':'compute',
Olga Brani's avatar
Olga Brani committed
232
233
            },
            'storage': {
Olga Brani's avatar
Olga Brani committed
234
                'help_text':'Storage resources (amount of space to store files on Pithos) ',
Olga Brani's avatar
Olga Brani committed
235
236
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
237
                 'verbose_name':'storage',
Olga Brani's avatar
Olga Brani committed
238
            },
Olga Brani's avatar
Olga Brani committed
239
240
241
242
243
244
            'network': {
                'help_text':' Network resources (amount of Private Networks)  ',
                'is_abbreviation':False,
                'report_desc':'',
                'verbose_name':'network',
            },
Olga Brani's avatar
Olga Brani committed
245
246
247
        },
        'resources': {
            'pithos+.diskspace': {
Olga Brani's avatar
Olga Brani committed
248
249
                '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
250
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
251
                'report_desc':'Storage Space',
Olga Brani's avatar
Olga Brani committed
252
                'placeholder':'eg. 10GB',
Olga Brani's avatar
Olga Brani committed
253
                'verbose_name':'Storage Space',
Olga Brani's avatar
Olga Brani committed
254
255
            },
            'cyclades.disk': {
Olga Brani's avatar
Olga Brani committed
256
257
                '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
258
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
259
                'report_desc':'System Disk',
Olga Brani's avatar
Olga Brani committed
260
                'placeholder':'eg. 5GB, 2GB etc',
Olga Brani's avatar
Olga Brani committed
261
                'verbose_name':'System Disk'
Olga Brani's avatar
Olga Brani committed
262
263
            },
            'cyclades.ram': {
Olga Brani's avatar
Olga Brani committed
264
265
                '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
266
267
268
269
270
271
                'is_abbreviation':True,
                'report_desc':'RAM',
                'placeholder':'eg. 4GB',
                'verbose_name':'ram'
            },
            'cyclades.cpu': {
Olga Brani's avatar
Olga Brani committed
272
273
                '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
274
275
276
277
278
                'is_abbreviation':True,
                'report_desc':'CPUs',
                'placeholder':'eg. 1',
                'verbose_name':'cpu'
            },
279
280
281
282
283
284
285
286
            '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
287
            'cyclades.network.private': {
Olga Brani's avatar
Olga Brani committed
288
289
                '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
290
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
291
                'report_desc':'Private Networks',
Olga Brani's avatar
Olga Brani committed
292
293
294
                'placeholder':'eg. 1',
                'verbose_name':'private network'
            }
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
295

Olga Brani's avatar
Olga Brani committed
296
        }
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
297

Olga Brani's avatar
Olga Brani committed
298
    })
299
300

# Permit local account migration
301
ENABLE_LOCAL_ACCOUNT_MIGRATION = getattr(settings, 'ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION', True)
302
303
304
305
306

# Strict shibboleth usage
SHIBBOLETH_REQUIRE_NAME_INFO = getattr(settings,
                                       'ASTAKOS_SHIBBOLETH_REQUIRE_NAME_INFO',
                                       False)
307
308
309
310
311
312
313
314
315
316
317
318

PROJECT_MEMBER_JOIN_POLICIES = getattr(settings,
                                'ASTAKOS_PROJECT_MEMBER_JOIN_POLICIES',
                                {1:'automatically accepted by the system',
                                 2:'accepted by the owner of the project',
                                 3:'members can not join the project'})

PROJECT_MEMBER_LEAVE_POLICIES = getattr(settings,
                                'ASTAKOS_PROJECT_MEMBER_LEAVE_POLICIES',
                                {1:'automatically accepted by the system',
                                 2:'accepted by the owner of the project',
                                 3:'members can not leave the project'})