project/kiwipycon/proceedings/views.py
changeset 96 3ece0de11641
parent 94 e86755df35da
child 101 fb27be005a5c
--- a/project/kiwipycon/proceedings/views.py	Tue May 11 03:47:41 2010 +0530
+++ b/project/kiwipycon/proceedings/views.py	Tue May 11 03:48:47 2010 +0530
@@ -9,13 +9,16 @@
 from django.core.urlresolvers import reverse
 from django.shortcuts import render_to_response
 from django.template import RequestContext
+from django.utils import simplejson as json
 
+from project.kiwipycon.proceedings.booklet import mk_scipy_paper
+from project.kiwipycon.proceedings.forms import ProceedingsForm
 from project.kiwipycon.proceedings.models import Paper
 from project.kiwipycon.user.forms import RegisterForm
 from project.kiwipycon.user.models import UserProfile
+from project.kiwipycon.user.utils import kiwipycon_createuser
 from project.kiwipycon.utils import set_message_cookie
-from project.kiwipycon.proceedings.booklet import mk_scipy_paper
-from project.kiwipycon.proceedings.forms import ProceedingsForm
+from project import settings
 
 
 def handleUploadedFile(proceedings_form_data, rst_file):
@@ -25,15 +28,15 @@
     title = proceedings_form_data.get('title')
     abstract = proceedings_form_data.get('abstract')
     body = proceedings_form_data.get('body')
-    authors = proceedings_form_data.get('authors')
 
     if rst_file:
+        # TODO: using stating only for testing purposes.
         destination = open('some/file/name.txt', 'wb+')
         for chunk in rst_file.chunks():
             destination.write(chunk)
         destination.close()
 
-    return title, abstract, body, authors
+    return title, abstract, body
 
 
 @login_required
@@ -41,6 +44,8 @@
     """View to submit the proceedings paper.
     """
 
+    context = RequestContext(request, {})
+
     user = request.user
     if user.is_authenticated():
         try:
@@ -67,17 +72,17 @@
         if request.POST.get('action', None) == 'register':
             # add the new user
             if register_form.is_valid():
-
                 user = kiwipycon_createuser(request, register_form.data)
 
         proceedings_form = ProceedingsForm(data=request.POST,
                                            files=request.FILES)
-  
+
         if proceedings_form.is_valid():
             if user.is_authenticated():
                 # Data from reSt file is appended to the data in fields
-                title, abstract, body, authors = handleUploadedFile(
+                title, abstract, body = handleUploadedFile(
                     proceedings_form.cleaned_data, request.FILES.get('file'))
+                authors = request.POST.get('as_values_authors')
 
                 paper = edit(id, title=title,
                     abstract=abstract, body=body,
@@ -104,9 +109,11 @@
                 initial={'title': paper.title,
                          'abstract': paper.abstract,
                          'body': paper.body,
-                         'authors': ', '.join([
-                             author.username for author in paper.authors.all()])
                 })
+            context['initial_authors'] = json.dumps([
+                {'name': str(author.username),
+                 'value': '%s (%s)' % (author.get_full_name(), author.username)
+                } for author in paper.authors.all()])
         else:
             # Otherwise create a new form
             proceedings_form = ProceedingsForm()
@@ -114,13 +121,10 @@
         register_form = RegisterForm()
         login_form = AuthenticationForm()
 
-    context = RequestContext(request, {
-        'proceedings_form': proceedings_form,
-        'register_form' : register_form,
-        'message' : message,
-        'login_form' : login_form
-        })
-
+    context['proceedings_form'] = proceedings_form
+    context['register_form'] = register_form
+    context['message'] = message
+    context['login_form'] = login_form
     context['id'] = id if id else None
 
     return render_to_response(template, context)
@@ -159,7 +163,7 @@
     authors = kwargs.get('authors')
 
     if authors:
-        authors = authors.split(',')
+        authors = authors.strip(' ,').split(',')
         for author in authors:
             user = User.objects.get(username=author.strip())
             paper.authors.add(user)
@@ -172,32 +176,37 @@
 def show_paper(request, id):
     """Display the thumbnail of the rendered paper for download
     """
-    
+
     paper = Paper.objects.get(id=id)
 
+    # TODO: Address and country should be required field in the user forms
+    # henceforth. Also contact numbers.
     paper_data = {
       'paper_abstract': paper.abstract,
       'authors': [
           {'first_names': author.first_name,
             'surname': author.last_name,
-            'address': 'XXX',
-            'country': 'XXX',
-            'email_address': 'XXX@xx.com',
-            'institution': 'XXX'
+            'address': 'None',
+            'country': 'India',
+            'email_address': author.email,
+            'institution': author.registration_set.get().organisation,
+            'city': author.registration_set.get().city
            } for author in paper.authors.all()],
       'title': paper.title
       }
-    
+
     abstract = mk_scipy_paper.Bunch(**paper_data)
     abstract.authors = [mk_scipy_paper.Bunch(**a) for a in abstract.authors]
 
     abstract['paper_text'] = paper.body
 
-    outfilename = '/media/python/workspace/kiwipycon/project/kiwipycon/proceedings/booklet/output/paper.pdf'
-    attach_dir = os.path.dirname('/media/python/workspace/kiwipycon/project/kiwipycon/proceedings/booklet/output/')
+    out_dir = attach_dir = os.path.join(settings.STATIC_ROOT,
+                                        'proceedings', 'output')
+    outfilename = os.path.join(out_dir, 'paper%d.pdf' % (paper.id))
     mk_scipy_paper.mk_abstract_preview(abstract, outfilename, attach_dir)
 
-    from django.http import HttpResponse
-    return HttpResponse('Machi')
+    context = {'paper_id': paper.id,
+               'out_path': '/static/proceedings/output' }
+    template = 'proceedings/show_paper_preview.html'
 
- 
\ No newline at end of file
+    return render_to_response(template, context)