Merge branch 'jordan' of ssh://git.onelab.eu/git/myslice into jordan
[myslice.git] / portal / views.py
index f03befa..27455f2 100644 (file)
@@ -5,6 +5,7 @@
 #
 # Authors:
 #   Jordan Augé <jordan.auge@lip6.fr>
 #
 # Authors:
 #   Jordan Augé <jordan.auge@lip6.fr>
+#   Mohammed Yasin Rahman <mohammed-yasin.rahman@lip6.fr>
 # Copyright 2013, UPMC Sorbonne Universités / LIP6
 #
 # This program is free software; you can redistribute it and/or modify it under
 # Copyright 2013, UPMC Sorbonne Universités / LIP6
 #
 # This program is free software; you can redistribute it and/or modify it under
 
 from django.conf                 import settings
 from django.contrib.sites.models import Site, RequestSite
 
 from django.conf                 import settings
 from django.contrib.sites.models import Site, RequestSite
+from django.contrib              import messages
 from django.views.generic        import View
 from django.views.generic.base   import TemplateView
 from django.shortcuts            import render
 from plugins.lists.simplelist    import SimpleList
 from portal                      import signals
 from django.views.generic        import View
 from django.views.generic.base   import TemplateView
 from django.shortcuts            import render
 from plugins.lists.simplelist    import SimpleList
 from portal                      import signals
-from portal.forms                import UserRegisterForm, SliceRequestForm
+from portal.forms                import UserRegisterForm, SliceRequestForm, ContactForm
 from portal.util                 import RegistrationView, ActivationView
 from portal.models               import PendingUser, PendingSlice
 from manifold.core.query         import Query
 from unfold.page                 import Page
 from myslice.viewutils           import topmenu_items, the_user
 from portal.util                 import RegistrationView, ActivationView
 from portal.models               import PendingUser, PendingSlice
 from manifold.core.query         import Query
 from unfold.page                 import Page
 from myslice.viewutils           import topmenu_items, the_user
+from django.http                 import HttpResponseRedirect
 
 class DashboardView(TemplateView):
     template_name = "dashboard.html"
 
 class DashboardView(TemplateView):
     template_name = "dashboard.html"
@@ -40,11 +43,12 @@ class DashboardView(TemplateView):
     def get_context_data(self, **kwargs):
         user_hrn = 'ple.upmc.jordan_auge'
 
     def get_context_data(self, **kwargs):
         user_hrn = 'ple.upmc.jordan_auge'
 
+        #messages.info(self.request, 'You have logged in')
         page = Page(self.request)
 
         # Slow...
         #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
         page = Page(self.request)
 
         # Slow...
         #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
-        slice_query = Query().get('user').filter_by('user_hrn', '==', user_hrn).select('slice.slice_hrn')
+        slice_query = Query().get('user').filter_by('user_hrn', '==', user_hrn).select('user_hrn', 'slice.slice_hrn')
         auth_query  = Query().get('network').select('network_hrn')
         page.enqueue_query(slice_query)
         page.enqueue_query(auth_query)
         auth_query  = Query().get('network').select('network_hrn')
         page.enqueue_query(slice_query)
         page.enqueue_query(auth_query)
@@ -74,7 +78,7 @@ class DashboardView(TemplateView):
         # more general variables expected in the template
         context['title'] = 'Test view that combines various plugins'
         # the menu items on the top
         # more general variables expected in the template
         context['title'] = 'Test view that combines various plugins'
         # the menu items on the top
-        context['topmenu_items'] = topmenu_items('dashboard', self.request) 
+        context['topmenu_items'] = topmenu_items('Dashboard', self.request) 
         # so we can sho who is logged
         context['username'] = the_user(self.request) 
 
         # so we can sho who is logged
         context['username'] = the_user(self.request) 
 
@@ -149,8 +153,10 @@ class UserRegisterView(RegistrationView):
         """
         first_name = cleaned_data['first_name']
         last_name  = cleaned_data['last_name']
         """
         first_name = cleaned_data['first_name']
         last_name  = cleaned_data['last_name']
+        affiliation= cleaned_data['affiliation']
         email      = cleaned_data['email']
         password   = cleaned_data['password1']
         email      = cleaned_data['email']
         password   = cleaned_data['password1']
+        
         #password2  = cleaned_data['password2']
         keypair    = cleaned_data['keypair']
 
         #password2  = cleaned_data['password2']
         keypair    = cleaned_data['keypair']
 
@@ -166,6 +172,12 @@ class UserRegisterView(RegistrationView):
                                      request=request)
         return new_user
 
                                      request=request)
         return new_user
 
+    def get_context_data(self, **kwargs):
+        context = super(UserRegisterView, self).get_context_data(**kwargs)
+        context['topmenu_items'] = topmenu_items('Register', self.request)
+        context['username'] = the_user (self.request)
+        return context
+
     def registration_allowed(self, request):
         """
         Indicate whether account registration is currently permitted,
     def registration_allowed(self, request):
         """
         Indicate whether account registration is currently permitted,
@@ -416,3 +428,127 @@ class UserValidateView(ActivationView):
 # DEPRECATED #    p << wizard.render(request) # in portal page if possible
 # DEPRECATED #
 # DEPRECATED #    return p.render()
 # DEPRECATED #    p << wizard.render(request) # in portal page if possible
 # DEPRECATED #
 # DEPRECATED #    return p.render()
+
+class MyAccountView(TemplateView):
+    template_name = "my_account.html"
+
+    def get_context_data(self, **kwargs):
+        #user_hrn = 'ple.upmc.jordan_auge'
+
+        #messages.info(self.request, 'You have logged in')
+        page = Page(self.request)
+
+        # Slow...
+        #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
+        #slice_query = Query().get('user').filter_by('user_hrn', '==', user_hrn).select('slice.slice_hrn')
+        #auth_query  = Query().get('network').select('network_hrn')
+        #page.enqueue_query(slice_query)
+        #page.enqueue_query(auth_query)
+
+        #page.expose_queries()
+
+        #slicelist = SimpleList(
+        #    title = None,
+        #    page  = page,
+        #    key   = 'slice.slice_hrn',
+        #    query = slice_query,
+        #)
+
+        #authlist = SimpleList(
+        #    title = None,
+        #    page  = page,
+        #    key   = 'network_hrn',
+        #    query = auth_query,
+        #)
+
+        context = super(MyAccountView, self).get_context_data(**kwargs)
+        context['person']   = self.request.user
+        #context['networks'] = authlist.render(self.request)
+        #context['slices']   = slicelist.render(self.request)
+
+        # XXX This is repeated in all pages
+        # more general variables expected in the template
+        context['title'] = 'User Profile Page'
+        # the menu items on the top
+        context['topmenu_items'] = topmenu_items('my_account', self.request)
+        # so we can sho who is logged
+        context['username'] = the_user(self.request)
+
+        context.update(page.prelude_env())
+
+        return context
+
+
+
+
+
+
+
+# view for contact form
+def contact(request):
+    if request.method == 'POST': # If the form has been submitted...
+        form = ContactForm(request.POST) # A form bound to the POST data
+        if form.is_valid(): # All validation rules pass
+            # Process the data in form.cleaned_data
+            first_name = form.cleaned_data['first_name']
+            last_name = form.cleaned_data['last_name']
+            affiliation = form.cleaned_data['affiliation']
+            subject = form.cleaned_data['subject']
+            message = form.cleaned_data['message']
+            email = form.cleaned_data['email'] # email of the sender
+            cc_myself = form.cleaned_data['cc_myself']
+
+            recipients = ['yasin.upmc@gmail.com']
+            if cc_myself:
+                recipients.append(email)
+
+            from django.core.mail import send_mail
+            send_mail("Onelab user submitted a query ", [first_name,last_name,affiliation,subject,message], email, recipients)
+            return render(request,'contact_sent.html') # Redirect after POST
+    else:
+        form = ContactForm() # An unbound form
+
+    return render(request, 'contact.html', {
+        'form': form,
+    })
+
+
+def slice_request(request):
+    if request.method == 'POST': # If the form has been submitted...
+        form = SliceRequestForm(request.POST) # A form bound to the POST data
+        if form.is_valid(): # All validation rules pass
+            # Process the data in form.cleaned_data
+            slice_name = form.cleaned_data['slice_name']
+            number_of_nodes = form.cleaned_data['number_of_nodes']
+            type_of_nodes = form.cleaned_data['type_of_nodes']
+            purpose = form.cleaned_data['purpose']
+            email = form.cleaned_data['email'] # email of the sender
+            cc_myself = form.cleaned_data['cc_myself']
+
+            recipients = ['yasin.upmc@gmail.com','jordan.auge@lip6.fr']
+            if cc_myself:
+                recipients.append(email)
+
+            from django.core.mail import send_mail
+            send_mail("Onelab New Slice request form submitted", [slice_name,number_of_nodes,type_of_nodes,purpose], email, recipients)
+            return render(request,'slicereq_recvd.html') # Redirect after POST
+    else:
+        form = SliceRequestForm() # An unbound form
+
+#    template_env = {}
+#    template_env['form'] = form
+#    template_env['topmenu_items'] = topmenu_items('Request a slice', request) 
+#    template_env['unfold1_main'] = render(request, 'slice_request_.html', {
+#        'form': form,
+#    })
+#    from django.shortcuts                import render_to_response
+#    from django.template                 import RequestContext
+#    return render_to_response ('view-unfold1.html',template_env,
+#                               context_instance=RequestContext(request))
+
+    return render(request, 'slice_request.html', {
+        'form': form,
+        'topmenu_items': topmenu_items('Request a slice', request),
+        'username': the_user (request) 
+    })
+