svv/customers.py
author Tero Marttila <terom@fixme.fi>
Mon, 10 Jan 2011 17:51:08 +0200
changeset 53 06dad873204d
parent 14 5b2cc88412f7
permissions -rw-r--r--
items: use DeleteItemForm for ItemView as well
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
# coding: utf-8
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
"""
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
    Customer/contact data model/view/handler
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
"""
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
from svv.controllers import PageHandler
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
from svv.html import tags
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
from svv import database as db
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
import svv.urls
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
class CustomersView (PageHandler) :
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    """
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
        Page for main 'customers' view
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    """
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
10
4bdb45071c89 Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    16
    def render_content (self) :
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
        # database
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
        conn = self.app.get_connection()
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        # customers
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
        customers = list(conn.execute(db.select([db.customers])))
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
        contacts = list(conn.execute(db.contacts.join(db.customers).select(use_labels=True)))
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
        #[
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
        #    db.contacts.c.id, db.customers.c.id, db.customers.c.name, db.contacts.c.name,
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
        #    db.contacts.c.phone, db.contacts.c.email,
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
        #]
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
        return (
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
            tags.h1("Asiakkaat"),
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
            tags.p(u"Tunnen %d asiakasta ja %d yhteyshenkilöä." % (len(customers), len(contacts))),
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
            tags.table(
14
5b2cc88412f7 Better grouping of orders list, instead of sorting...
Tero Marttila <terom@fixme.fi>
parents: 13
diff changeset
    33
                tags.caption(u"Tilaajat"),
13
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    34
                tags.thead(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    35
                    tags.tr(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    36
                        tags.th("ID #"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    37
                        tags.th("Nimi"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    38
                    ),
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
                ),
13
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    40
                tags.tbody(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    41
                    tags.tr(class_=('alternate' if idx % 2 else None))(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    42
                        tags.td(tags.a(href=self.url_for(CustomerView, id=row[db.customers.c.id]))('#%d' % row[db.customers.c.id])),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    43
                        tags.td(tags.a(href=self.url_for(CustomerView, id=row[db.customers.c.id]))(row[db.customers.c.name])),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    44
                    ) for idx, row in enumerate(customers)
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    45
                ),
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
            ),
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
            tags.table(
14
5b2cc88412f7 Better grouping of orders list, instead of sorting...
Tero Marttila <terom@fixme.fi>
parents: 13
diff changeset
    49
                tags.caption(u"Yhteyshenkilöt"),
13
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    50
                tags.thead(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    51
                    tags.tr(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    52
                        tags.th("ID #"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    53
                        tags.th("Asiakas"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    54
                        tags.th("Nimi"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    55
                        tags.th("Puhelinnumero"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    56
                        tags.th(u"Sähköpostiosoite"),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    57
                    ),
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
                ),
13
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    59
                tags.tbody(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    60
                    tags.tr(class_=('alternate' if idx % 2 else None))(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    61
                        tags.td(tags.a(href='#')('#%d' % row[db.contacts.c.id])),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    62
                        tags.td(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    63
                            tags.a(href=self.url_for(CustomerView, id=row[db.customers.c.id]))(row[db.customers.c.name])
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    64
                                if row[db.customers.c.id] else " "
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    65
                        ),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    66
                        tags.td(
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    67
                            tags.a(href='#')(row[db.contacts.c.name]),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    68
                        ),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    69
                        tags.td(row[db.contacts.c.phone]),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    70
                        tags.td(row[db.contacts.c.email]),
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    71
                    ) for idx, row in enumerate(contacts)
cb18f86e38d9 Implement OrdersView
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
    72
                ),
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
            ),
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
        )
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
class CustomerView (PageHandler) :
10
4bdb45071c89 Fix up PageHandler.render to PageHandler.render_content, add PageHandler.process, and fix up orders
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    77
    def render_content (self, id) :
6
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        return tags.h1("Info for customer #%d" % id)
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
72c73df76db2 Split wsgi.py into controllers/customers/urls for now; start orders form
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80