app/soc/views/site/docs/edit.py
changeset 338 0d78f41dde9b
parent 329 2d90d49ce78a
child 342 72482d8e5b34
--- a/app/soc/views/site/docs/edit.py	Wed Oct 15 13:59:52 2008 +0000
+++ b/app/soc/views/site/docs/edit.py	Wed Oct 15 14:06:33 2008 +0000
@@ -32,7 +32,6 @@
 from soc.logic import out_of_band
 from soc.logic import path_link_name
 from soc.logic.models import document
-from soc.logic.site import id_user
 
 from soc.views import helper
 from soc.views import simple
@@ -47,30 +46,6 @@
 import soc.views.out_of_band
 
 
-class EditForm(helper.forms.DbModelForm):
-  """Django form displayed when Developer edits a Document.
-  """
-  doc_key_name = forms.fields.CharField(widget=forms.HiddenInput)
-  content = forms.fields.CharField(widget=helper.widgets.TinyMCE())
-  
-  class Meta:
-    model = soc.models.document.Document
-    
-    #: list of model fields which will *not* be gathered by the form
-    exclude = ['inheritance_line', 'user', 'created', 'modified']
- 
-  def clean_partial_path(self):
-    partial_path = self.cleaned_data.get('partial_path')
-    # TODO(tlarsen): combine path and link_name and check for uniqueness
-    return partial_path
-
-  def clean_link_name(self):
-    link_name = self.cleaned_data.get('link_name')
-    # TODO(tlarsen): combine path and link_name and check for uniqueness
-    return link_name
-
-
-DEF_SITE_DOCS_EDIT_TMPL = 'soc/site/docs/edit.html'
 DEF_CREATE_NEW_DOC_MSG = ' You can create a new document by visiting the' \
                          ' <a href="/site/docs/edit">Create ' \
                          'a New Document</a> page.'
@@ -100,7 +75,7 @@
   properties['short_name'] = form.cleaned_data.get('short_name')
   properties['abstract'] = form.cleaned_data.get('abstract')
   properties['content'] = form.cleaned_data.get('content')
-  properties['user'] = models.user.logic.getFromFields(email=email)
+  properties['founder'] = models.user.logic.getFromFields(email=email)
   properties['is_featured'] = form.cleaned_data.get('is_featured')
 
   doc = document.logic.updateOrCreateFromFields(properties,
@@ -109,6 +84,87 @@
   return doc
 
 
+class CreateForm(helper.forms.DbModelForm):
+  """Django form displayed when Developer creates a Document.
+  """
+  content = forms.fields.CharField(widget=helper.widgets.TinyMCE(
+      attrs={'rows':10, 'cols':40}))
+
+  class Meta:
+    model = soc.models.document.Document
+
+    #: list of model fields which will *not* be gathered by the form
+    exclude = ['inheritance_line', 'founder', 'created', 'modified']
+
+  def clean_partial_path(self):
+    partial_path = self.cleaned_data.get('partial_path')
+    # TODO(tlarsen): combine path and link_name and check for uniqueness
+    return partial_path
+
+  def clean_link_name(self):
+    link_name = self.cleaned_data.get('link_name')
+    # TODO(tlarsen): combine path and link_name and check for uniqueness
+    return link_name
+
+
+DEF_SITE_DOCS_CREATE_TMPL = 'soc/site/docs/edit.html'
+
+def create(request, template=DEF_SITE_DOCS_CREATE_TMPL):
+  """View for a Developer to create a new Document entity.
+
+  Args:
+    request: the standard django request object
+    template: the "sibling" template (or a search list of such templates)
+      from which to construct the public.html template name (or names)
+
+  Returns:
+    A subclass of django.http.HttpResponse which either contains the form to
+    be filled out, or a redirect to the correct view in the interface.
+  """
+
+  try:
+    access.checkIsDeveloper(request)
+  except  soc.views.out_of_band.AccessViolationResponse, alt_response:
+    return alt_response.response()
+
+  # create default template context for use with any templates
+  context = helper.responses.getUniversalContext(request)
+
+  if request.method == 'POST':
+    form = CreateForm(request.POST)
+
+    if form.is_valid():
+      doc = getDocForForm(form)
+
+      if not doc:
+        return http.HttpResponseRedirect('/')
+
+      new_path = path_link_name.combinePath([doc.partial_path, doc.link_name])
+
+      # redirect to new /site/docs/edit/new_path?s=0
+      # (causes 'Profile saved' message to be displayed)
+      return helper.responses.redirectToChangedSuffix(
+          request, None, new_path,
+          params=profile.SUBMIT_PROFILE_SAVED_PARAMS)
+  else: # method == 'GET':
+    # no link name specified, so start with an empty form
+    form = CreateForm()
+
+  context['form'] = form
+
+  return helper.responses.respond(request, template, context)
+
+
+DEF_SITE_DOCS_EDIT_TMPL = 'soc/site/docs/edit.html'
+
+class EditForm(CreateForm):
+  """Django form displayed when Developer edits a Document.
+  """
+  doc_key_name = forms.fields.CharField(widget=forms.HiddenInput)
+  created_by = forms.fields.CharField(widget=helper.widgets.ReadOnlyInput(),
+                                      required=False)
+
+
 def edit(request, partial_path=None, link_name=None,
          template=DEF_SITE_DOCS_EDIT_TMPL):
   """View for a Developer to modify the properties of a Document Model entity.
@@ -134,7 +190,6 @@
 
 # create default template context for use with any templates
   context = helper.responses.getUniversalContext(request)
-  logged_in_id = users.get_current_user()
 
   doc = None  # assume that no Document entity will be found
 
@@ -184,12 +239,14 @@
                 request, profile.SUBMIT_MSG_PARAM_NAME,
                 values=SUBMIT_MESSAGES))
 
-        # populate form with the existing User entity
+        # populate form with the existing Document entity
+        founder_link_name = doc.founder.link_name
         form = EditForm(initial={'doc_key_name': doc.key().name(),
             'title': doc.title, 'partial_path': doc.partial_path,
             'link_name': doc.link_name, 'short_name': doc.short_name,
             'abstract': doc.abstract, 'content': doc.content,
-            'user': doc.user, 'is_featured': doc.is_featured})       
+            'founder': doc.founder, 'is_featured': doc.is_featured,
+            'created_by': founder_link_name})       
       else:
         if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME):
           # redirect to aggressively remove 'Profile saved' query parameter
@@ -212,77 +269,6 @@
   return helper.responses.respond(request, template, context)
 
 
-class CreateForm(helper.forms.DbModelForm):
-  """Django form displayed when Developer creates a Document.
-  """
-  content = forms.fields.CharField(widget=helper.widgets.TinyMCE())
-  
-  class Meta:
-    model = soc.models.document.Document
-    
-    #: list of model fields which will *not* be gathered by the form
-    exclude = ['inheritance_line', 'user', 'created', 'modified']
- 
-  def clean_partial_path(self):
-    partial_path = self.cleaned_data.get('partial_path')
-    # TODO(tlarsen): combine path and link_name and check for uniqueness
-    return partial_path
-
-  def clean_link_name(self):
-    link_name = self.cleaned_data.get('link_name')
-    # TODO(tlarsen): combine path and link_name and check for uniqueness
-    return link_name
-
-
-DEF_SITE_DOCS_CREATE_TMPL = 'soc/site/docs/edit.html'
-
-def create(request, template=DEF_SITE_DOCS_CREATE_TMPL):
-  """View for a Developer to create a new Document entity.
-
-  Args:
-    request: the standard django request object
-    template: the "sibling" template (or a search list of such templates)
-      from which to construct the public.html template name (or names)
-
-  Returns:
-    A subclass of django.http.HttpResponse which either contains the form to
-    be filled out, or a redirect to the correct view in the interface.
-  """
-
-  try:
-    access.checkIsDeveloper(request)
-  except  soc.views.out_of_band.AccessViolationResponse, alt_response:
-    return alt_response.response()
-
-  # create default template context for use with any templates
-  context = helper.responses.getUniversalContext(request)
-  logged_in_id = users.get_current_user()
-
-  if request.method == 'POST':
-    form = CreateForm(request.POST)
-
-    if form.is_valid():
-      doc = getDocForForm(form)
-
-      if not doc:
-        return http.HttpResponseRedirect('/')
-
-      new_path = path_link_name.combinePath([doc.partial_path, doc.link_name])
-        
-      # redirect to new /site/docs/edit/new_path?s=0
-      # (causes 'Profile saved' message to be displayed)
-      return helper.responses.redirectToChangedSuffix(
-          request, None, new_path,
-          params=profile.SUBMIT_PROFILE_SAVED_PARAMS)
-  else: # method == 'GET':
-    # no link name specified, so start with an empty form
-    form = CreateForm()
-
-  context['form'] = form
-
-  return helper.responses.respond(request, template, context)
-
-
 def delete(request, partial_path=None, link_name=None,
            template=DEF_SITE_DOCS_EDIT_TMPL):
   """Request handler for a Developer to delete Document Model entity.