settings.py 11.5 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

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

INVITATIONS_PER_LEVEL = getattr(settings, 'ASTAKOS_INVITATIONS_PER_LEVEL', {
16 17 18 19 20
    0: 100,
    1: 2,
    2: 0,
    3: 0,
    4: 0
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
21 22 23
})

# Address to use for outgoing emails
24 25
DEFAULT_CONTACT_EMAIL = getattr(
    settings, 'ASTAKOS_DEFAULT_CONTACT_EMAIL', 'support@cloud.grnet.gr')
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
26 27

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

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

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

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

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

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

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

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

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

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

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

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

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

73 74
# 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
75
LOGIN_MESSAGES = getattr(settings, 'ASTAKOS_LOGIN_MESSAGES', [])
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
76

77 78
# 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
79
SIGNUP_MESSAGES = getattr(settings, 'ASTAKOS_SIGNUP_MESSAGES', [])
80 81 82

# 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
83
PROFILE_MESSAGES = getattr(settings, 'ASTAKOS_PROFILE_MESSAGES', [])
84 85 86

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

89 90 91 92
# 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', {})

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

97 98 99 100
# 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
101 102
EMAILCHANGE_ACTIVATION_DAYS = getattr(
    settings, 'ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS', 10)
103

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

108
# Configurable email subjects
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
109 110 111
INVITATION_EMAIL_SUBJECT = getattr(
    settings, 'ASTAKOS_INVITATION_EMAIL_SUBJECT',
    'Invitation to %s alpha2 testing' % SITENAME)
112
GREETING_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_GREETING_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
113
                                 'Welcome to %s alpha2 testing' % SITENAME)
114
FEEDBACK_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_FEEDBACK_EMAIL_SUBJECT',
Sofia Papagiannaki's avatar
Sofia Papagiannaki committed
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
                                 '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)
GROUP_CREATION_SUBJECT = getattr(settings, 'ASTAKOS_GROUP_CREATION_SUBJECT',
                                 '%s alpha2 testing group created (%%(group)s)' % SITENAME)
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
# Set the quota holder component URI
135
QUOTAHOLDER_URL = getattr(settings, 'ASTAKOS_QUOTAHOLDER_URL', '')
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
136
QUOTAHOLDER_TOKEN = getattr(settings, 'ASTAKOS_QUOTAHOLDER_TOKEN', '')
137 138

# Set the cloud service properties
root's avatar
root committed
139
SERVICES = getattr(settings, 'ASTAKOS_SERVICES', {
140 141 142 143
    'cyclades': {
        'url': 'https://node1.example.com/ui/',
        'resources': [{
            'name':'vm',
144
            'group':'compute',
145 146 147
            'uplimit':2,
            'desc': 'Number of virtual machines'
            },{
root's avatar
root committed
148
            'name':'disk',
149
            'group':'compute',
root's avatar
root committed
150
            'uplimit':30*1024*1024*1024,
151
            'unit':'bytes',
152 153 154
            'desc': 'Virtual machine disk size'
            },{
            'name':'cpu',
155
            'group':'compute',
root's avatar
root committed
156
            'uplimit':6,
157 158 159
            'desc': 'Number of virtual machine processors'
            },{
            'name':'ram',
160
            'group':'compute',
root's avatar
root committed
161
            'uplimit':6*1024*1024*1024,
162
            'unit':'bytes',
163
            'desc': 'Virtual machines'
164 165
            },{
            'name':'network.private',
root's avatar
root committed
166
            'group':'network',
167 168 169 170
            'uplimit':1,
            'desc': 'Private networks'
            }
        ]
171 172 173 174 175
    },
    'pithos+': {
        'url': 'https://node2.example.com/ui/',
        'resources':[{
            'name':'diskspace',
176
            'group':'storage',
177 178 179 180 181 182
            'uplimit':5 * 1024 * 1024 * 1024,
            'unit':'bytes',
            'desc': 'Pithos account diskspace'
            }]
    }
})
183 184 185 186

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

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

Olga Brani's avatar
Fixes  
Olga Brani committed
190 191 192
# 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
193 194
# Enforce token renewal on password change/reset
NEWPASSWD_INVALIDATE_TOKEN = getattr(
root's avatar
root committed
195
    settings, 'ASTAKOS_NEWPASSWD_INVALIDATE_TOKEN', True)
Olga Brani's avatar
Olga Brani committed
196 197 198 199 200 201


RESOURCES_PRESENTATION_DATA = getattr(
    settings, 'ASTAKOS_RESOURCES_PRESENTATION_DATA', {
        'groups': {
             'compute': {
Olga Brani's avatar
Olga Brani committed
202
                'help_text':'Compute resources (amount of VMs, CPUs, RAM, System disk) ',
Olga Brani's avatar
Olga Brani committed
203 204
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
205
                 'verbose_name':'compute',
Olga Brani's avatar
Olga Brani committed
206 207
            },
            'storage': {
Olga Brani's avatar
Olga Brani committed
208
                'help_text':'Storage resources (amount of space to store files on Pithos) ',
Olga Brani's avatar
Olga Brani committed
209 210
                'is_abbreviation':False,
                'report_desc':'',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
211
                 'verbose_name':'storage',
Olga Brani's avatar
Olga Brani committed
212
            },
Olga Brani's avatar
Olga Brani committed
213 214 215 216 217 218
            'network': {
                'help_text':' Network resources (amount of Private Networks)  ',
                'is_abbreviation':False,
                'report_desc':'',
                'verbose_name':'network',
            },
Olga Brani's avatar
Olga Brani committed
219 220 221
        },
        'resources': {
            'pithos+.diskspace': {
Olga Brani's avatar
Olga Brani committed
222 223
                '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
224
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
225
                'report_desc':'Storage Space',
Olga Brani's avatar
Olga Brani committed
226
                'placeholder':'eg. 10GB',
Olga Brani's avatar
Olga Brani committed
227
                'verbose_name':'Storage Space',
Olga Brani's avatar
Olga Brani committed
228 229
            },
            'cyclades.vm': {
Olga Brani's avatar
Olga Brani committed
230 231
                '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 ',
Olga Brani's avatar
Olga Brani committed
232 233 234
                'is_abbreviation':True,
                'report_desc':'Virtual Machines',
                'placeholder':'eg. 2',
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
235
                'verbose_name':'vm',
Olga Brani's avatar
Olga Brani committed
236 237
            },
            'cyclades.disk': {
Olga Brani's avatar
Olga Brani committed
238 239
                '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
240
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
241
                'report_desc':'System Disk',
Olga Brani's avatar
Olga Brani committed
242
                'placeholder':'eg. 5GB, 2GB etc',
Olga Brani's avatar
Olga Brani committed
243
                'verbose_name':'System Disk'
Olga Brani's avatar
Olga Brani committed
244 245
            },
            'cyclades.ram': {
Olga Brani's avatar
Olga Brani committed
246 247
                '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
248 249 250 251 252 253
                'is_abbreviation':True,
                'report_desc':'RAM',
                'placeholder':'eg. 4GB',
                'verbose_name':'ram'
            },
            'cyclades.cpu': {
Olga Brani's avatar
Olga Brani committed
254 255
                '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
256 257 258 259 260 261
                'is_abbreviation':True,
                'report_desc':'CPUs',
                'placeholder':'eg. 1',
                'verbose_name':'cpu'
            },
            'cyclades.network.private': {
Olga Brani's avatar
Olga Brani committed
262 263
                '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
264
                'is_abbreviation':False,
Olga Brani's avatar
Olga Brani committed
265
                'report_desc':'Private Networks',
Olga Brani's avatar
Olga Brani committed
266 267 268
                'placeholder':'eg. 1',
                'verbose_name':'private network'
            }
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
269

Olga Brani's avatar
Olga Brani committed
270
        }
Kostas Papadimitriou's avatar
Kostas Papadimitriou committed
271

Olga Brani's avatar
Olga Brani committed
272
    })
273 274

# Permit local account migration
275
ENABLE_LOCAL_ACCOUNT_MIGRATION = getattr(settings, 'ASTAKOS_ENABLE_LOCAL_ACCOUNT_MIGRATION', True)
276 277 278 279 280

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