cd34
unread,Oct 2, 2009, 3:13:57 PM10/2/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to sprox
Here's a self-contained controller that illustrates what I'm trying to
do.
The ticket header should be posted to cp_tickets, detail should be
posted to cp_ticket_detail referencing the ticket_id created in the
first provider.create
in the save function, how would I use sprox to do this? The code as
listed doesn't actually work, but, is there to illustrate what I'm
trying to accomplish. The cp_ticket record is created, the
cp_ticket_detail record is not.
from pylons import request, response, session, tmpl_context
from pylons.controllers.util import abort, redirect_to
from cp.lib.base import BaseController, render
import tw.forms as twf
from tw.mods.pylonshf import validate
from tw.core import WidgetsList
from tw.forms import TableForm, TextField, TextArea, RadioButtonList,
CheckBox, HiddenField, SingleSelectField
from tw.forms.validators import NotEmpty
from sqlalchemy import *
from sqlalchemy.orm import mapper, relation
from sqlalchemy import Table, ForeignKey, Column
from sqlalchemy.types import Integer, Unicode
from sqlalchemy.orm import relation, backref
from sqlalchemy.databases import mysql
from sqlalchemy.ext.declarative import declarative_base
DeclarativeBase = declarative_base()
from sprox.saormprovider import SAORMProvider
provider=SAORMProvider(meta.Session)
class cp_ticket(DeclarativeBase):
__tablename__ = 'cp_ticket'
ticket_id = Column(mysql.MSBigInteger(20, unsigned = True),
primary_key=True, autoincrement = True)
priority = Column(mysql.MSEnum('1','2','3','4','5'), default =
'3')
ticket_detail = relation('cp_ticket_detail',
order_by='cp_ticket_detail.ticket_detail_id')
class cp_ticket_detail(DeclarativeBase):
__tablename__ = 'cp_ticket_detail'
ticket_id = Column(mysql.MSBigInteger(20, unsigned = True),
ForeignKey('cp_ticket.ticket_id'), default = '0')
ticket_detail_id = Column(mysql.MSBigInteger(20, unsigned = True),
primary_key=True, autoincrement = True)
stamp = Column(mysql.MSTimeStamp, PassiveDefault
('CURRENT_TIMESTAMP'))
detail = Column(mysql.MSLongText, default = '0')
class PageForm(TableForm):
action = '/posttest/save'
submit_text = 'Submit Ticket'
class fields(WidgetsList):
priority = SingleSelectField(options=[
(1, 'Immediate'),
(2, 'High'),
(3, 'Moderate'),
(4, 'Low'),
(5, 'Inquery')], default=3, validator=NotEmpty)
detail = TextArea(label_text='Detailed Description of
problem', attrs=dict(rows=10, cols=55),validator=NotEmpty())
page_form = PageForm()
class PosttestController(BaseController):
def index(self):
tmpl_context.form = page_form
return render('/test_test.mako')
@validate(form=page_form, error_handler='index')
def save(self):
detail = request.params
provider.create(cp_ticket, request.params)
provider.create(cp_ticket_detail, request.params)
return str(request.params)