mango r250 - in branches/django: . mango www



Author: ovitters
Date: Tue Jun 24 20:24:47 2008
New Revision: 250
URL: http://svn.gnome.org/viewvc/mango?rev=250&view=rev

Log:
	* mango/models.py (Foundationmembers, FoundationmembersForm,): Require
	certain Foundationmembers model fields to be filled in. Correct the
	name of the FoundationmembersForm.
	* mango/urls.py: Add URL for the edit_foundationmember view.
	* mango/views.py (add_foundationmember_to_xml, list_foundationmembers,
	  edit_foundationmember, list_modules): Create new function
	  add_foundationmember_to_xml. This either uses the form information
	  or the form instance to add the member to the XML. Create a new view
	  called edit_foundationmember, allowing a foundationmember record to
	  be updated.
	* www/list_foundationmembers.xsl: Correct links to the
	edit_foundationmember view.
	* www/update_foundationmember.xsl: Correct link to
	edit_foundationmember view.


Modified:
   branches/django/   (props changed)
   branches/django/ChangeLog
   branches/django/mango/models.py
   branches/django/mango/urls.py
   branches/django/mango/views.py
   branches/django/www/list_foundationmembers.xsl
   branches/django/www/update_foundationmember.xsl

Modified: branches/django/mango/models.py
==============================================================================
--- branches/django/mango/models.py	(original)
+++ branches/django/mango/models.py	Tue Jun 24 20:24:47 2008
@@ -51,13 +51,14 @@
 
 class Foundationmembers(models.Model):
     id = models.AutoField(primary_key=True)
-    firstname = models.CharField(max_length=50, blank=True)
-    lastname = models.CharField(max_length=50, blank=True)
-    email = models.EmailField(max_length=255, blank=True)
+    firstname = models.CharField(max_length=50)
+    lastname = models.CharField(max_length=50)
+    email = models.EmailField(max_length=255)
     comments = models.TextField(blank=True)
+    userid = models.CharField(max_length=15, null=True, blank=True)
     first_added = models.DateField(auto_now_add=True)
-    last_renewed_on = models.DateField(null=True, blank=True)
-    last_update = models.DateTimeField()
+    last_renewed_on = models.DateField(null=True, blank=True, editable=False)
+    last_update = models.DateTimeField(auto_now=True)
     resigned_on = models.DateField(null=True, blank=True)
 
     @property
@@ -73,7 +74,7 @@
         db_table = u'foundationmembers'
         ordering = ['lastname', 'firstname']
 
-class FtpmirrorsForm(ModelForm):
+class FoundationmembersForm(ModelForm):
     class Meta:
         model = Foundationmembers
 

Modified: branches/django/mango/urls.py
==============================================================================
--- branches/django/mango/urls.py	(original)
+++ branches/django/mango/urls.py	Tue Jun 24 20:24:47 2008
@@ -15,6 +15,7 @@
     (r'^%smirrors/edit/(?P<pk>\d+)/$' % mango.settings.SITE_ROOT, view.edit_mirror),
     (r'^%smodules/$' % mango.settings.SITE_ROOT, view.list_modules),
     (r'^%sfoundationmembers/$' % mango.settings.SITE_ROOT, view.list_foundationmembers),
+    (r'^%sfoundationmembers/edit/(?P<pk>\d+)/$' % mango.settings.SITE_ROOT, view.edit_foundationmember),
     # Example:
     # (r'^mango/', include('mango.foo.urls')),
 

Modified: branches/django/mango/views.py
==============================================================================
--- branches/django/mango/views.py	(original)
+++ branches/django/mango/views.py	Tue Jun 24 20:24:47 2008
@@ -247,9 +247,28 @@
 
     return get_xmlresponse(doc, "new_ftpmirror.xsl")
 
+def add_foundationmember_to_xml(root, member=None, form=None):
+    if member is None and form is None:
+        return
+
+    instance = form and form.instance or member
+    form_or_member = form and form.data or member.__dict__
+
+    ET.SubElement(root, 'id').text = unicode(instance.id)
+    for field in ('firstname', 'lastname', 'comments', 'email'):
+        node = ET.SubElement(root, field)
+        node.text = form_or_member[field]
+    for field in ('first_added', 'last_renewed_on'):
+        node = ET.SubElement(root, field)
+        node.text = unicode(getattr(instance, field))
+    if instance.is_member:
+        ET.SubElement(root, 'member')
+    if instance.need_to_renew:
+        ET.SubElement(root, 'need_to_renew')
+
 def list_foundationmembers(request):
     doc, root = get_xmldoc('List Foundation Members', request)
-    el1 = ET.SubElement(root, 'listfoundationmembers')
+    pagenode = ET.SubElement(root, 'listfoundationmembers')
 
     members = models.Foundationmembers.objects.all()
     paginator = QuerySetPaginator(members, 25)
@@ -257,25 +276,29 @@
         page = paginator.page(request.GET.get('page', 1))
     except InvalidPage:
         raise Http404('Invalid page')
-    add_paginator_to_xml(el1, page)
+    add_paginator_to_xml(pagenode, page)
     for member in page.object_list:
-        membernode = ET.SubElement(el1, 'foundationmember')
+        membernode = ET.SubElement(pagenode, 'foundationmember')
         membernode.set('id', unicode(member.id))
-        ET.SubElement(membernode, 'id').text = unicode(member.id)
-        for field in ('firstname', 'lastname', 'comments', 'email'):
-            node = ET.SubElement(membernode, field)
-            node.text = getattr(member, field)
-        for field in ('first_added', 'last_renewed_on'):
-            node = ET.SubElement(membernode, field)
-            node.text = unicode(getattr(member, field))
-        if member.is_member:
-            ET.SubElement(membernode, 'member')
-        if member.need_to_renew:
-            ET.SubElement(membernode, 'need_to_renew')
-
+        add_foundationmember_to_xml(membernode, member)
 
     return get_xmlresponse(doc, "list_foundationmembers.xsl")
 
+def edit_foundationmember(request, pk):
+    doc, root = get_xmldoc('Update Foundation Member', request)
+    pagenode = ET.SubElement(root, 'updatefoundationmember')
+
+    obj = get_object_or_404(models.Foundationmembers.objects, pk=pk)
+
+    f = models.FoundationmembersForm(request.POST, instance=obj)
+    if request.method == 'POST':
+        if add_form_errors_to_xml(pagenode, f):
+            f.save()
+
+    add_foundationmember_to_xml(pagenode, obj, f)
+
+    return get_xmlresponse(doc, "update_foundationmember.xsl")
+
 def list_modules(request):
     doc, root = get_xmldoc('List Modules', request)
     pagenode = ET.SubElement(root, 'listmodules')

Modified: branches/django/www/list_foundationmembers.xsl
==============================================================================
--- branches/django/www/list_foundationmembers.xsl	(original)
+++ branches/django/www/list_foundationmembers.xsl	Tue Jun 24 20:24:47 2008
@@ -68,7 +68,7 @@
          <xsl:value-of select="concat('row-', position() mod 2)"/>
        </xsl:attribute>
        <td>
-        <a href="update_foundationmember.php?id={id}">
+	 <a href="edit/{id}/">
          <xsl:apply-templates select="lastname"/>
         </a>
        </td>
@@ -86,7 +86,7 @@
        <td>
         <xsl:choose>
           <xsl:when test="boolean(member)">
-           <a class="button" href="update_foundationmember.php?id={id}">Update</a>
+          <a class="button" href="edit/{id}/">Update</a>
         	<xsl:if test="boolean(need_to_renew)">
 		  <form method="POST" action="{$script}" name="filterform" style="display: inline">
 		    <input type="hidden" name="mango_token" value="{/page/@token}"/>

Modified: branches/django/www/update_foundationmember.xsl
==============================================================================
--- branches/django/www/update_foundationmember.xsl	(original)
+++ branches/django/www/update_foundationmember.xsl	Tue Jun 24 20:24:47 2008
@@ -7,7 +7,7 @@
  
   <xsl:include href="common.xsl" />
 
-  <xsl:variable name="script" select="'update_foundationmember.php'"/>
+  <xsl:variable name="script" select="'.'"/>
 
   <xsl:template match="updatefoundationmember">
    <xsl:apply-templates select="error"/>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]