merge Amisha changes
diff --git a/planetstack/core/dashboard/sites.py b/planetstack/core/dashboard/sites.py
index 7200035..a100117 100644
--- a/planetstack/core/dashboard/sites.py
+++ b/planetstack/core/dashboard/sites.py
@@ -14,8 +14,8 @@
from django.conf.urls import patterns, url
from views import DashboardCustomize, DashboardDynamicView, DashboardWelcomeView, DashboardAjaxView, SimulatorView, \
DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardUserSiteView, DashboardAnalyticsAjaxView, \
- TenantViewData,TenantCreateSlice, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView, \
- TenantUpdateSlice, DashboardSliceInteractions
+ TenantViewData,TenantCreateSlice, TenantAddUser,TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView, \
+ TenantUpdateSlice, DashboardSliceInteractions, RequestAccessView
from views import view_urls
@@ -37,6 +37,8 @@
name="customize"),
url(r'^hpcdashuserslices/', self.admin_view(DashboardUserSiteView.as_view()),
name="hpcdashuserslices"),
+ url(r'^welcome/$', self.admin_view(DashboardWelcomeView.as_view()),
+ name="welcome"),
url(r'^hpcdashboard/', self.admin_view(DashboardAjaxView.as_view()), # DEPRECATED
name="hpcdashboard"),
url(r'^simulator/', self.admin_view(SimulatorView.as_view()),
@@ -53,6 +55,10 @@
name="tenantview"),
url(r'^createnewslice/$', self.admin_view(TenantCreateSlice.as_view()),
name="createnewslice"),
+ url(r'^adduser/$', self.admin_view(TenantAddUser.as_view()),
+ name="adduser"),
+ url(r'^requestaccess/$', RequestAccessView.as_view(),
+ name="requestacces"),
url(r'^updateslice/$', self.admin_view(TenantUpdateSlice.as_view()),
name="updateslice"),
url(r'^picksites/$', self.admin_view(TenantPickSitesView.as_view()),
diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py
index 44e3f14..eec0927 100644
--- a/planetstack/core/models/user.py
+++ b/planetstack/core/models/user.py
@@ -8,6 +8,8 @@
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from timezones.fields import TimeZoneField
from operator import itemgetter, attrgetter
+from django.core.mail import EmailMultiAlternatives
+from core.middleware import get_request
# Create your models here.
class UserManager(BaseUserManager):
@@ -167,9 +169,24 @@
def save(self, *args, **kwds):
if not self.id:
- self.set_password(self.password)
+ self.set_password(self.password)
+ if self.is_active:
+ if self.password=="!":
+ self.send_temporary_password()
+
self.username = self.email
- super(User, self).save(*args, **kwds)
+ super(User, self).save(*args, **kwds)
+
+ def send_temporary_password(self):
+ password = User.objects.make_random_password()
+ self.set_password(password)
+ subject, from_email, to = 'OpenCloud Account Credentials', 'support@opencloud.us', str(self.email)
+ text_content = 'This is an important message.'
+ userUrl=get_request().META['HTTP_ORIGIN']
+ html_content = """<p>Your account has been created on OpenCloud. Please log in <a href="""+userUrl+""">here</a> to activate your account<br><br>Username: """+self.email+"""<br>Temporary Password: """+password+"""<br>Please change your password once you successully login into the site.</p>"""
+ msg = EmailMultiAlternatives(subject,text_content, from_email, [to])
+ msg.attach_alternative(html_content, "text/html")
+ msg.send()
@staticmethod
def select_by_user(user):
@@ -182,9 +199,9 @@
sites = [sp.site for sp in site_privs if sp.role.role == 'pi']
# get site privs of users at these sites
site_privs = SitePrivilege.objects.filter(site__in=sites)
- user_ids = [sp.user.id for sp in site_privs] + [user.id]
+ user_ids = [sp.user.id for sp in site_privs] + [user.id]
qs = User.objects.filter(Q(site__in=sites) | Q(id__in=user_ids))
- return qs
+ return qs
class UserDashboardView(PlCoreBase):
user = models.ForeignKey(User, related_name="dashboardViews")