return an error when trying to register a deleted user
[plstackapi.git] / planetstack / core / dashboard / views / tenant.py
index 02f388a..7794bf2 100644 (file)
@@ -4,6 +4,7 @@ import functools
 from django.contrib.auth.models import BaseUserManager
 from django.core import serializers
 from django.core.mail import EmailMultiAlternatives
+import json
 
 BLESSED_DEPLOYMENTS = ["US-MaxPlanck", "US-GeorgiaTech", "US-Princeton", "US-Washington", "US-Stanford"]
 
@@ -13,11 +14,29 @@ class RequestAccessView(View):
        firstname = request.POST.get("firstname", "0")
        lastname = request.POST.get("lastname", "0")
        site = request.POST.get("site","0")
+        # see if it already exists
+        user=User.objects.filter(email=BaseUserManager.normalize_email(email))
+        if (user):
+             user = user[0]
+             if user.is_active:
+                 # force a new email to be sent
+                 user.is_registering=True
+                 user.save()
+                 return HttpResponse(json.dumps({"error": "already_approved"}), content_type='application/javascript')
+             else:
+                 return HttpResponse(json.dumps({"error": "already_pending"}), content_type='application/javascript')
+
+        user=User.deleted_objects.filter(email=BaseUserManager.normalize_email(email))
+        if (user):
+            return HttpResponse(json.dumps({"error": "is_deleted"}), content_type='application/javascript')
+
        user = User(
             email=BaseUserManager.normalize_email(email),
             firstname=firstname,
             lastname=lastname,
-           is_active=False
+           is_active=False,
+            is_admin=False,
+            is_registering=True
         )
         user.save()
        user.site=Site.objects.get(name=site)
@@ -52,7 +71,7 @@ class TenantCreateSlice(View):
            serviceClass = ServiceClass.objects.get(name=serviceClass)
            site = request.user.site
            image = Image.objects.get(name=imageName)
-           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=image,mountDataSets=mountDataSets)
+           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,image_preference=image,mount_data_sets=mountDataSets)
            newSlice.save()
           privateTemplate="Private"
           publicTemplate="Public shared IPv4"\r
@@ -103,8 +122,8 @@ class TenantUpdateSlice(View):
                 if(entry.name==sliceName):\r
                          if (actionToDo == "update"):\r
                                 setattr(entry,'serviceClass',serviceClass)\r
-                                setattr(entry,'imagePreference',imageName)\r
-                                setattr(entry,'mountDataSets',dataSet)\r
+                                setattr(entry,'image_preference',imageName)\r
+                                setattr(entry,'mount_data_sets',dataSet)\r
                                 entry.save()\r
                                 break\r
        addOrModifyPorts(networkPorts,sliceName)\r
@@ -179,8 +198,8 @@ def getTenantInfo(user):
            sliceName = Slice.objects.get(id=entry.id).name
            slice = Slice.objects.get(name=Slice.objects.get(id=entry.id).name)
            sliceServiceClass = entry.serviceClass.name
-           preferredImage =  entry.imagePreference
-           #sliceDataSet = entry.mountDataSets
+           preferredImage =  entry.image_preference
+           #sliceDataSet = entry.mount_data_sets
            sliceNetwork = {}
            numSliver = 0
            sliceImage=""