Browse Source

Minor code improvement

Fabs 10 years ago
parent
commit
08f039cbf5

+ 9 - 7
coin/billing/templates/billing/invoice_pdf.html

@@ -6,14 +6,14 @@
 		<style>
 		    @page {
 		        size: a4 portrait;
-		        @frame header_frame {          
+		        @frame header_frame {
 		            -pdf-frame-content: header_content;
 		            left: 50pt; width: 512pt; top: 50pt; height: 70pt;
 		        }
 		        @frame content_frame {
 		            left: 50pt; width: 512pt; top: 120pt; height: 632pt;
 		        }
-		        @frame footer_frame { 
+		        @frame footer_frame {
 		            -pdf-frame-content: footer_content;
 		            left: 50pt; width: 512pt; top: 772pt; height: 30pt;
 		        }
@@ -60,7 +60,7 @@
 				<td><h1>Facture N°{{ invoice.number }}</h1>
 					Le {{ invoice.date }}</td>
 			</tr>
-		</table>		
+		</table>
 	</div>
 	<div id="footer_content">
 		<hr />
@@ -87,10 +87,12 @@
 			</td>
 			<td id="coordonnees_client">
 				<strong>Facturé à :</strong><br/>
-				{{ member.last_name }} {{ member.first_name }}<br />
-				{% if member.organization_name != "" %}{{ member.organization_name }}<br />{% endif %}
-				{{ member.address }}<br />
-				{{ member.postal_code }} {{ member.city}}
+                {% with member=invoice.member %}
+                    {{ member.last_name }} {{ member.first_name }}<br />
+                    {% if member.organization_name != "" %}{{ member.organization_name }}<br />{% endif %}
+                    {{ member.address }}<br />
+                    {{ member.postal_code }} {{ member.city}}
+                {% endwith %}
 			</td>
 		</tr>
 	</table>

+ 1 - 1
coin/billing/urls.py

@@ -5,6 +5,6 @@ from coin.billing import views
 urlpatterns = patterns(
     '',
     url(r'^invoice/(?P<id>.+).pdf$', views.invoice_pdf, name="invoice_pdf"),
-    url(r'^invoice/(?P<id>.+).html$', views.invoice_html, name="invoice_html"),
+    url(r'^invoice/(?P<id>.+)$', views.invoice, name="invoice"),
     url('invoice/create_all_members_invoices_for_a_period', views.gen_invoices)
 )

+ 8 - 0
coin/billing/utils.py

@@ -0,0 +1,8 @@
+from coin.billing.models import Invoice
+from django.shortcuts import render, get_object_or_404
+
+def get_invoice_from_id_or_number(id):
+    try:
+        return Invoice.objects.get(pk=id)
+    except:
+        return get_object_or_404(Invoice, number=id)

+ 12 - 21
coin/billing/views.py

@@ -1,12 +1,13 @@
 # -*- coding: utf-8 -*-
 from django.http import HttpResponse
 from django.template import RequestContext
-from django.shortcuts import render, get_object_or_404, render_to_response
+from django.shortcuts import render, render_to_response
 from django.core.exceptions import PermissionDenied
 from coin.billing.models import Invoice
 from coin.members.models import Member
 from coin.html2pdf import render_as_pdf
 from coin.billing.create_subscriptions_invoices import create_all_members_invoices_for_a_period
+from coin.billing.utils import get_invoice_from_id_or_number
 
 def gen_invoices(request):
     create_all_members_invoices_for_a_period()
@@ -17,20 +18,14 @@ def invoice_pdf(request, id):
     Renvoi une facture générée en format pdf
     id peut être soit la pk d'une facture, soit le numero de facture
     """
-    try:
-        invoice = Invoice.objects.get(pk=id)
-    except:
-        invoice = get_object_or_404(Invoice, number=id)
+
+    invoice = get_invoice_from_id_or_number(id)
 
     if not invoice.has_owner(request.user.username)\
        and not request.user.is_superuser:
         raise PermissionDenied
 
-    member = invoice.member
-
-    context = {"invoice": invoice, 'member': member}
-
-    pdf = render_as_pdf('billing/invoice_pdf.html', context)
+    pdf = render_as_pdf('billing/invoice_pdf.html', {"invoice": invoice})
 
     response = HttpResponse(content_type='application/pdf')
     #response['Content-Disposition'] = 'attachment; filename="facture.pdf"'
@@ -39,25 +34,21 @@ def invoice_pdf(request, id):
 
     return response
 
-def invoice_html(request, id):
+def invoice(request, id):
     """
-    Renvoi une facture générée en format pdf
+    Affiche une facture et son détail
     id peut être soit la pk d'une facture, soit le numero de facture
     """
-    try:
-        invoice = Invoice.objects.get(pk=id)
-    except:
-        invoice = get_object_or_404(Invoice, number=id)
+    invoice = get_invoice_from_id_or_number(id)
 
     if not invoice.has_owner(request.user.username)\
        and not request.user.is_superuser:
         raise PermissionDenied
 
-    member = invoice.member
-
-    context = {"invoice": invoice, 'member': member}
-
-    return render_to_response('billing/invoice.html', context,
+    return render_to_response('billing/invoice.html', {"invoice": invoice},
                               context_instance=RequestContext(request))
 
     return response
+
+
+

+ 1 - 1
coin/members/templates/members/invoices.html

@@ -15,7 +15,7 @@
     <tbody>
         {% for invoice in invoices %}
         <tr>
-            <td><a href="{% url 'billing:invoice_html' id=invoice.number %}">{{ invoice.number }}</a></td>
+            <td><a href="{% url 'billing:invoice' id=invoice.number %}">{{ invoice.number }}</a></td>
             <td>{{ invoice.date }}</td>
             <td>{{ invoice.amount }}</td>
             <td><a href="{% url 'billing:invoice_pdf' id=invoice.number %}">PDF</a></td>