File: controller.py

package info (click to toggle)
pyamf 0.6.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 7,692 kB
  • sloc: python: 17,944; xml: 455; makefile: 116; sql: 38; java: 11; sh: 7
file content (78 lines) | stat: -rw-r--r-- 2,197 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Copyright (c) The PyAMF Project.
# See LICENSE.txt for details.

"""
Controller for SQLAlchemy Addressbook example.

@since: 0.4.1
"""

from datetime import datetime

import pyamf

import models
from persistent import Schema


class SAObject(object):
    """
    Handles common operations for persistent objects.
    """
    
    def load(self, class_alias, key):
        klass = pyamf.load_class(class_alias).klass
        session = Schema().session
        return session.query(klass).get(key)

    def loadAll(self, class_alias):
        klass = pyamf.load_class(class_alias).klass
        session = Schema().session
        return session.query(klass).all()

    def loadAttr(self, class_alias, key, attr):
        obj = self.load(class_alias, key)
        return getattr(obj, attr)

    def save(self, obj):
        session = Schema().session
        merged_obj = session.merge(obj)
        session.commit()

    def saveList(self, objs):
        for obj in objs:
            self.save(obj)

    def remove(self, class_alias, key):
        klass = pyamf.load_class(class_alias).klass
        session = Schema().session
        obj = session.query(klass).get(key)
        session.delete(obj)
        session.commit()

    def removeList(self, class_alias, keys):
        for key in keys:
            self.remove(class_alias, key)

    def insertDefaultData(self):
        user = models.User()
        user.first_name = 'Bill'
        user.last_name = 'Lumbergh'
        user.created = datetime.utcnow()
        for label, email in {'personal': 'bill@yahoo.com', 'work': 'bill@initech.com'}.iteritems():
            email_obj = models.Email()
            email_obj.label = label
            email_obj.email = email
            user.emails.append(email_obj)

        for label, number in {'personal': '1-800-555-5555', 'work': '1-555-555-5555'}.iteritems():
            phone_obj = models.PhoneNumber()
            phone_obj.label = label
            phone_obj.number = number
            user.phone_numbers.append(phone_obj)

        session = Schema().session
        session.add(user)
        session.commit()
        
        return 'Added user: %s %s' % (user.first_name, user.last_name)