Commit a339f0e1 authored by Sofia Papagiannaki's avatar Sofia Papagiannaki

Merge remote-tracking branch 'origin' into dev

Conflicts:
	snf-astakos-app/Changelog
	snf-astakos-app/README
	snf-astakos-app/astakos/im/forms.py
	snf-astakos-app/astakos/im/functions.py
	snf-astakos-app/astakos/im/settings.py
	snf-astakos-app/astakos/im/static/im/cloudbar/cloudbar.js
	snf-astakos-app/astakos/im/static/im/css/modules.css
	snf-astakos-app/astakos/im/static/im/js/common.js
	snf-astakos-app/astakos/im/templates/im/base.html
	snf-astakos-app/astakos/im/views.py
	snf-astakos-app/conf/20-snf-astakos-app-settings.conf
parents 6213086b 798020f9
......@@ -40,54 +40,64 @@ Settings
Configure in ``settings.py`` or a ``.conf`` file in ``/etc/synnefo`` if using snf-webproject.
=================================== ============================================================================= ===========================================================================================
Name Default value Description
=================================== ============================================================================= ===========================================================================================
ASTAKOS_AUTH_TOKEN_DURATION one month Expiration time of newly created auth tokens
ASTAKOS_DEFAULT_USER_LEVEL 4 Default (not-invited) user level
ASTAKOS_INVITATIONS_PER_LEVEL {0:100, 1:2, 2:0, 3:0, 4:0} Number of user invitations per user level
ASTAKOS_DEFAULT_CONTACT_EMAIL support\@cloud.grnet.gr Contact email
ASTAKOS_IM_MODULES ['local', 'shibboleth'] Signup modules
ASTAKOS_FORCE_PROFILE_UPDATE True Force user profile verification
ASTAKOS_INVITATIONS_ENABLED True Enable invitations
ASTAKOS_COOKIE_NAME _pithos2_a ``Key`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_COOKIE_DOMAIN None ``Domain`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_COOKIE_SECURE True ``Secure`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_IM_STATIC_URL /static/im/ URL to use when referring to static files
ASTAKOS_MODERATION_ENABLED True If False and invitations are not enabled newly created user will be automatically accepted
ASTAKOS_BASEURL \http://pithos.dev.grnet.gr Astakos baseurl
ASTAKOS_SITENAME GRNET Cloud Service name that appears in emails
ASTAKOS_RECAPTCHA_ENABLED True Enable recaptcha
ASTAKOS_RECAPTCHA_PUBLIC_KEY Recaptcha public key obtained after registration here: http://recaptcha.net
ASTAKOS_RECAPTCHA_PRIVATE_KEY Recaptcha private key obtained after registration here: http://recaptcha.net
ASTAKOS_RECAPTCHA_OPTIONS {'theme': 'white'} Options for customizing reCAPTCHA look and feel
(see: http://code.google.com/intl/el-GR/apis/recaptcha/docs/customization.html)
ASTAKOS_LOGOUT_NEXT Where the user should be redirected after logout
(if not set and no next parameter is defined it renders login page with message)
ASTAKOS_BILLING_FIELDS ['id', 'is_active', 'provider', 'third_party_identifier'] AstakosUser fields to propagate in the billing system
ASTAKOS_QUEUE_CONNECTION The queue connection ex. 'rabbitmq://guest:guest@localhost:5672/astakos'
(if it is not set, it does not send messages)
ASTAKOS_RE_USER_EMAIL_PATTERNS [] Email patterns that are automatically activated ex. ['^[a-zA-Z0-9\._-]+@grnet\.gr$']
ASTAKOS_LOGIN_MESSAGES {} Notification messages to display on login page header
e.g. {'warning': 'Warning message (can contain html)'}
ASTAKOS_PROFILE_EXTRA_LINKS {} Messages to display as extra actions in account forms
e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
ASTAKOS_RATELIMIT_RETRIES_ALLOWED 3 Number of unsuccessful login requests per minute allowed for a specific account.
When this number exceeds and ASTAKOS_RECAPTCHA_ENABLED is set the user has to solve a
captcha challenge.
ASTAKOS_EMAILCHANGE_ENABLED False Enable email change mechanism
ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS 10 Number of days that email change requests remain active
ASTAKOS_LOGGING_LEVEL INFO Message logging severity
ASTAKOS_QUOTA_HOLDER_URL '' The quota holder URI
=========================================== ============================================================================= ===========================================================================================
Name Default value Description
=========================================== ============================================================================= ===========================================================================================
ASTAKOS_AUTH_TOKEN_DURATION one month Expiration time of newly created auth tokens
ASTAKOS_DEFAULT_USER_LEVEL 4 Default (not-invited) user level
ASTAKOS_INVITATIONS_PER_LEVEL {0:100, 1:2, 2:0, 3:0, 4:0} Number of user invitations per user level
ASTAKOS_DEFAULT_FROM_EMAIL GRNET Cloud <no-reply\@grnet.gr> ``from`` parameter passed in ``django.core.mail.send_mail``
ASTAKOS_DEFAULT_CONTACT_EMAIL support\@cloud.grnet.gr Contact email
ASTAKOS_DEFAULT_ADMIN_EMAIL support\@cloud.grnet.gr Administrator email to receive user creation notifications (if None disables notifications)
ASTAKOS_IM_MODULES ['local', 'shibboleth'] Signup modules
ASTAKOS_FORCE_PROFILE_UPDATE True Force user profile verification
ASTAKOS_INVITATIONS_ENABLED True Enable invitations
ASTAKOS_COOKIE_NAME _pithos2_a ``Key`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_COOKIE_DOMAIN None ``Domain`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_COOKIE_SECURE True ``Secure`` parameter passed in ``django.http.HttpResponse.set_cookie``
ASTAKOS_IM_STATIC_URL /static/im/ URL to use when referring to static files
ASTAKOS_MODERATION_ENABLED True If False and invitations are not enabled newly created user will be automatically accepted
ASTAKOS_BASEURL \http://pithos.dev.grnet.gr Astakos baseurl
ASTAKOS_SITENAME GRNET Cloud Service name that appears in emails
ASTAKOS_RECAPTCHA_ENABLED True Enable recaptcha
ASTAKOS_RECAPTCHA_PUBLIC_KEY Recaptcha public key obtained after registration here: http://recaptcha.net
ASTAKOS_RECAPTCHA_PRIVATE_KEY Recaptcha private key obtained after registration here: http://recaptcha.net
ASTAKOS_RECAPTCHA_OPTIONS {'theme': 'white'} Options for customizing reCAPTCHA look and feel
(see: http://code.google.com/intl/el-GR/apis/recaptcha/docs/customization.html)
ASTAKOS_LOGOUT_NEXT Where the user should be redirected after logout
(if not set and no next parameter is defined it renders login page with message)
ASTAKOS_BILLING_FIELDS ['id', 'is_active', 'provider', 'third_party_identifier'] AstakosUser fields to propagate in the billing system
ASTAKOS_QUEUE_CONNECTION The queue connection ex. 'rabbitmq://guest:guest@localhost:5672/astakos'
(if it is not set, it does not send messages)
ASTAKOS_RE_USER_EMAIL_PATTERNS [] Email patterns that are automatically activated ex. ['^[a-zA-Z0-9\._-]+@grnet\.gr$']
ASTAKOS_LOGIN_MESSAGES {} Notification messages to display on login page header
e.g. {'warning': 'Warning message (can contain html)'}
ASTAKOS_PROFILE_EXTRA_LINKS {} Messages to display as extra actions in account forms
e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
ASTAKOS_RATELIMIT_RETRIES_ALLOWED 3 Number of unsuccessful login requests per minute allowed for a specific account.
When this number exceeds and ASTAKOS_RECAPTCHA_ENABLED is set the user has to solve a
captcha challenge.
ASTAKOS_EMAILCHANGE_ENABLED False Enable email change mechanism
ASTAKOS_EMAILCHANGE_ACTIVATION_DAYS 10 Number of days that email change requests remain active
ASTAKOS_LOGGING_LEVEL INFO Message logging severity
ASTAKOS_INVITATION_EMAIL_SUBJECT 'Invitation to %s alpha2 testing' % SITENAME Invitation email subject
ASTAKOS_GREETING_EMAIL_SUBJECT 'Welcome to %s alpha2 testing' % SITENAME Welcome email subject
ASTAKOS_FEEDBACK_EMAIL_SUBJECT 'Feedback from %s alpha2 testing' % SITENAME Feedback email subject
ASTAKOS_VERIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activation is needed' % SITENAME Account activation email subject
ASTAKOS_ADMIN_NOTIFICATION_EMAIL_SUBJECT '%s alpha2 testing account created (%%(user)s)' % SITENAME Account creation admin notification email subject
ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT '%s alpha2 testing account activated (%%(user)s)' % SITENAME Account activation helpdesk notification email subject
ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT 'Email change on %s alpha2 testing' % SITENAME Email change subject
ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT 'Password reset on %s alpha2 testing' % SITENAME Password change email subject
ASTAKOS_QUOTA_HOLDER_URL '' The quota holder URI
e.g. ``http://localhost:8080/api/quotaholder/v``
ASTAKOS_SERVICES {'cyclades': {'url':'https://node1.example.com/ui/', 'quota': {'vm': 2}}, Cloud service default url and quota
'pithos+': {'url':'https://node2.example.com/ui/', 'quota': {
'diskspace': 50 * 1024 * 1024 * 1024}}})
ASTAKOS_AQUARIUM_URL '' The billing (aquarium) URI
ASTAKOS_SERVICES {'cyclades': {'url':'https://node1.example.com/ui/', 'quota': {'vm': 2}}, Cloud service default url and quota
'pithos+': {'url':'https://node2.example.com/ui/', 'quota': {
'diskspace': 50 * 1024 * 1024 * 1024}}})
ASTAKOS_AQUARIUM_URL '' The billing (aquarium) URI
e.g. ``http://localhost:8888/user``
ASTAKOS_PAGINATE_BY 10 Number of object to be displayed per page
=================================== ============================================================================= ===========================================================================================
ASTAKOS_PAGINATE_BY 10 Number of object to be displayed per page
=========================================== ============================================================================= ===========================================================================================
Administrator functions
-----------------------
......
......@@ -52,7 +52,8 @@ from astakos.im.models import (AstakosUser, EmailChange, AstakosGroup,
get_latest_terms)
from astakos.im.settings import (INVITATIONS_PER_LEVEL, BASEURL, SITENAME,
RECAPTCHA_PRIVATE_KEY, RECAPTCHA_ENABLED,
DEFAULT_CONTACT_EMAIL, LOGGING_LEVEL)
DEFAULT_CONTACT_EMAIL, LOGGING_LEVEL,
PASSWORD_RESET_EMAIL_SUBJECT)
from astakos.im.widgets import DummyWidget, RecaptchaWidget
from astakos.im.functions import send_change_email
......@@ -102,7 +103,7 @@ class LocalUserCreationForm(UserCreationForm):
self.fields.keyOrder.extend(['recaptcha_challenge_field',
'recaptcha_response_field', ])
if get_latest_terms():
self.fields.keyOrder.append('has_signed_terms')
self.fields.keyOrder.append('has_signed_terms')
if 'has_signed_terms' in self.fields:
# Overriding field label since we need to apply a link
......@@ -441,7 +442,7 @@ class ExtendedPasswordResetForm(PasswordResetForm):
'support': DEFAULT_CONTACT_EMAIL
}
from_email = settings.SERVER_EMAIL
send_mail(_("Password reset on %s alpha2 testing") % SITENAME,
send_mail(_(PASSWORD_RESET_EMAIL_SUBJECT),
t.render(Context(c)), from_email, [user.email])
......
......@@ -51,7 +51,13 @@ from datetime import datetime
from functools import wraps
from astakos.im.settings import (DEFAULT_CONTACT_EMAIL, SITENAME, BASEURL,
LOGGING_LEVEL)
LOGGING_LEVEL, VERIFICATION_EMAIL_SUBJECT,
ADMIN_NOTIFICATION_EMAIL_SUBJECT,
HELPDESK_NOTIFICATION_EMAIL_SUBJECT,
INVITATION_EMAIL_SUBJECT,
GREETING_EMAIL_SUBJECT,
FEEDBACK_EMAIL_SUBJECT,
EMAIL_CHANGE_EMAIL_SUBJECT)
from astakos.im.models import AstakosUser
logger = logging.getLogger(__name__)
......@@ -95,8 +101,7 @@ def send_verification(user, template_name='im/activation_email.txt'):
'support': DEFAULT_CONTACT_EMAIL})
sender = settings.SERVER_EMAIL
try:
send_mail('%s alpha2 testing account activation is needed' %
SITENAME, message, sender, [user.email])
send_mail(_(VERIFICATION_EMAIL_SUBJECT), message, sender, [user.email])
except (SMTPException, socket.error) as e:
logger.exception(e)
raise SendVerificationError()
......@@ -126,7 +131,8 @@ def send_admin_notification(template_name,
message = render_to_string(template_name, dictionary)
sender = settings.SERVER_EMAIL
try:
send_mail(subject, message, sender, [i[1] for i in settings.ADMINS])
send_mail(_(ADMIN_NOTIFICATION_EMAIL_SUBJECT) % {'user': user.email},
message, sender, [i[1] for i in settings.ADMINS])
except (SMTPException, socket.error) as e:
logger.exception(e)
raise SendNotificationError()
......@@ -149,12 +155,8 @@ def send_helpdesk_notification(user, template_name='im/account_notification.txt'
)
sender = settings.SERVER_EMAIL
try:
send_mail(
'%s alpha2 testing account activated' % SITENAME,
message,
sender,
[DEFAULT_CONTACT_EMAIL]
)
send_mail(_(HELPDESK_NOTIFICATION_EMAIL_SUBJECT) % {'user': user.email},
message, sender, [DEFAULT_CONTACT_EMAIL])
except (SMTPException, socket.error) as e:
logger.exception(e)
raise SendNotificationError()
......@@ -169,7 +171,7 @@ def send_invitation(invitation, template_name='im/invitation.txt'):
Raises SendInvitationError
"""
subject = _('Invitation to %s alpha2 testing' % SITENAME)
subject = _(INVITATION_EMAIL_SUBJECT)
url = '%s?code=%d' % (urljoin(BASEURL, reverse('index')), invitation.code)
message = render_to_string(template_name, {
'invitation': invitation,
......@@ -238,8 +240,8 @@ def send_change_email(ec, request, email_template_name='registration/email_chang
t = loader.get_template(email_template_name)
c = {'url': url, 'site_name': SITENAME}
from_email = settings.SERVER_EMAIL
send_mail(_("Email change on %s alpha2 testing") % SITENAME,
t.render(Context(c)), from_email, [ec.new_email_address])
send_mail(_(EMAIL_CHANGE_EMAIL_SUBJECT),
t.render(Context(c)), from_email, [ec.new_email_address])
except (SMTPException, socket.error) as e:
logger.exception(e)
raise ChangeEmailError()
......
......@@ -102,18 +102,23 @@ EMAILCHANGE_ACTIVATION_DAYS = getattr(
from logging import INFO
LOGGING_LEVEL = getattr(settings, 'ASTAKOS_LOGGING_LEVEL', INFO)
# Set the quota holder component URI
QUOTA_HOLDER_URL = getattr(settings, 'ASTAKOS_QUOTA_HOLDER_URL', '')
# Set the cloud service properties
SERVICES = getattr(settings, 'ASTAKOS_SERVICES',
{'cyclades': {'url':'https://node1.example.com/ui/',
'quota': {'vm': 2}},
'pithos+': {'url':'https://node2.example.com/ui/',
'quota': {'diskspace': 50 * 1024 * 1024 * 1024}}})
# Set the billing URI
AQUARIUM_URL = getattr(settings, 'ASTAKOS_AQUARIUM_URL', '')
# Configurable email subjects
INVITATION_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_INVITATION_EMAIL_SUBJECT',
'Invitation to %s alpha2 testing' % SITENAME)
GREETING_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_GREETING_EMAIL_SUBJECT',
'Welcome to %s alpha2 testing' % SITENAME)
FEEDBACK_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_FEEDBACK_EMAIL_SUBJECT',
'Feedback from %s alpha2 testing' % SITENAME)
VERIFICATION_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_VERIFICATION_EMAIL_SUBJECT',
'%s alpha2 testing account activation is needed' % SITENAME)
ADMIN_NOTIFICATION_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_ADMIN_NOTIFICATION_EMAIL_SUBJECT',
'%s alpha2 testing account created (%%(user)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)
# Configurable email subjects
INVITATION_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_INVITATION_EMAIL_SUBJECT',
......@@ -133,5 +138,18 @@ EMAIL_CHANGE_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJE
PASSWORD_RESET_EMAIL_SUBJECT = getattr(settings, 'ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT',
'Password reset on %s alpha2 testing' % SITENAME)
# Set the quota holder component URI
QUOTA_HOLDER_URL = getattr(settings, 'ASTAKOS_QUOTA_HOLDER_URL', '')
# Set the cloud service properties
SERVICES = getattr(settings, 'ASTAKOS_SERVICES',
{'cyclades': {'url':'https://node1.example.com/ui/',
'quota': {'vm': 2}},
'pithos+': {'url':'https://node2.example.com/ui/',
'quota': {'diskspace': 50 * 1024 * 1024 * 1024}}})
# Set the billing URI
AQUARIUM_URL = getattr(settings, 'ASTAKOS_AQUARIUM_URL', '')
# Set how many objects should be displayed per page
PAGINATE_BY = getattr(settings, 'ASTAKOS_PAGINATE_BY', 10)
PAGINATE_BY = getattr(settings, 'ASTAKOS_PAGINATE_BY', 10)
\ No newline at end of file
......@@ -348,4 +348,4 @@ table.alt-style tr td a.open { background-position:-16px 0}
.projects .details a.edit { float:right; margin-left:20px; }
.projects .details .data { overflow:hidden; }
.projects .editable form textarea { width:70%; height:50px; max-width:70%; width:270px; height:120px;}
\ No newline at end of file
.projects .editable form textarea { width:70%; height:50px; max-width:70%; width:270px; height:120px;}
......@@ -111,10 +111,8 @@ $(document).ready(function() {
});
});
//$('select').dropkick();
$('.top-msg .success').parents('.top-msg').addClass('success');
$('.top-msg .error').parents('.top-msg').addClass('error');
......@@ -216,4 +214,4 @@ $(window).resize(function() {
$('.widjets li div').equalHeights();
}
});
\ No newline at end of file
});
......@@ -100,6 +100,17 @@
#from logging import INFO
#ASTAKOS_LOGGING_LEVEL = INFO
# Email subjects configuration. For admin/helper notification emails %(user)s
# maps to registered/activated user email.
#ASTAKOS_INVITATION_EMAIL_SUBJECT = 'Invitation to %s alpha2 testing' % SITENAME
#ASTAKOS_GREETING_EMAIL_SUBJECT = 'Welcome to %s alpha2 testing' % SITENAME
#ASTAKOS_FEEDBACK_EMAIL_SUBJECT = 'Feedback from %s alpha2 testing' % SITENAME
#ASTAKOS_VERIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account activation is needed' % SITENAME
#ASTAKOS_ADMIN_NOTIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account created (%%(user)s)' % SITENAME
#ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account activated (%%(user)s)' % SITENAME
#ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT = 'Email change on %s alpha2 testing' % SITENAME
#ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT = 'Password reset on %s alpha2 testing' % SITENAME
# Set the quota holder component URI
#ASTAKOS_QUOTA_HOLDER_URL = ''
......@@ -113,16 +124,5 @@
# Set the billing URI
#ASTAKOS_AQUARIUM_URL = ''
# Email subjects configuration. For admin/helper notification emails %(user)s
# maps to registered/activated user email.
#ASTAKOS_INVITATION_EMAIL_SUBJECT = 'Invitation to %s alpha2 testing' % SITENAME
#ASTAKOS_GREETING_EMAIL_SUBJECT = 'Welcome to %s alpha2 testing' % SITENAME
#ASTAKOS_FEEDBACK_EMAIL_SUBJECT = 'Feedback from %s alpha2 testing' % SITENAME
#ASTAKOS_VERIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account activation is needed' % SITENAME
#ASTAKOS_ADMIN_NOTIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account created (%%(user)s)' % SITENAME
#ASTAKOS_HELPDESK_NOTIFICATION_EMAIL_SUBJECT = '%s alpha2 testing account activated (%%(user)s)' % SITENAME
#ASTAKOS_EMAIL_CHANGE_EMAIL_SUBJECT = 'Email change on %s alpha2 testing' % SITENAME
#ASTAKOS_PASSWORD_RESET_EMAIL_SUBJECT = 'Password reset on %s alpha2 testing' % SITENAME
# Set how many objects should be displayed per page
#PAGINATE_BY = getattr(settings, 'ASTAKOS_PAGINATE_BY', 10)
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment