def new_book(request): FORM_TITLE_NEW = _('New Book Submission') main = get_renderer(BASE_TEMPLATE).implementation() localizer = get_localizer(request) evaluation_form = EvaluationForm.get_form(localizer) publishers = request.rel_db_session.query(rel_models.Publisher.name_slug, rel_models.Publisher.name).all() evaluation_form['publisher'].widget = deform.widget.SelectWidget(values=(publishers), ) if request.method == 'POST': if 'btn_cancel' in request.POST: return HTTPFound(location=request.route_path('staff.panel')) controls = request.POST.items() try: appstruct = evaluation_form.validate(controls) except deform.ValidationFailure, e: return {'content':e.render(), 'main':main, 'user':get_logged_user(request), 'general_stuff':{'form_title':FORM_TITLE_NEW}, } del(appstruct['__LOCALE__']) publisher_slug = appstruct.pop('publisher') publisher = request.rel_db_session.query(rel_models.Publisher).filter_by(name_slug=publisher_slug).one() appstruct['status'] = 'under-evaluation' evaluation = rel_models.Evaluation(**appstruct) evaluation.publisher = publisher monograph = Monograph(title=evaluation.title, isbn=evaluation.isbn, publisher=evaluation.publisher.name, publisher_url=evaluation.publisher_catalog_url if evaluation.publisher_catalog_url else '', visible=False, creation_date=str(evaluation.creation_date), ) evaluation.monograph_sbid = monograph._id request.rel_db_session.add(evaluation) try: request.rel_db_session.commit() except IntegrityError: request.rel_db_session.rollback() request.session.flash(_('This record already exists! Please check the data and try again.')) return {'content':evaluation_form.render(appstruct), 'main':main, 'user':get_logged_user(request), 'general_stuff':{'form_title':FORM_TITLE_NEW}, } monograph.save(request.db) return HTTPFound(location=request.route_path('staff.edit_book', sbid=monograph._id))
def new_book(request): FORM_TITLE_NEW = _('New Book Submission') main = get_renderer(BASE_TEMPLATE).implementation() localizer = get_localizer(request) evaluation_form = EvaluationForm.get_form(localizer) publishers = request.rel_db_session.query(rel_models.Publisher.name_slug, rel_models.Publisher.name).all() evaluation_form['publisher'].widget = deform.widget.SelectWidget( values=(publishers), ) if request.method == 'POST': if 'btn_cancel' in request.POST: return HTTPFound(location=request.route_path('staff.panel')) controls = request.POST.items() try: appstruct = evaluation_form.validate(controls) except deform.ValidationFailure, e: return { 'content': e.render(), 'main': main, 'user': get_logged_user(request), 'general_stuff': { 'form_title': FORM_TITLE_NEW }, } del (appstruct['__LOCALE__']) publisher_slug = appstruct.pop('publisher') publisher = request.rel_db_session.query( rel_models.Publisher).filter_by(name_slug=publisher_slug).one() appstruct['status'] = 'under-evaluation' eisbn = appstruct.pop('eisbn') #only exists in couchdb evaluation = rel_models.Evaluation(**appstruct) evaluation.publisher = publisher monograph = Monograph( title=evaluation.title, publisher=evaluation.publisher.name, publisher_url=evaluation.publisher_catalog_url if evaluation.publisher_catalog_url else '', visible=False, creation_date=str(evaluation.creation_date), ) if evaluation.isbn: monograph.isbn = evaluation.isbn if eisbn: monograph.eisbn = eisbn evaluation.monograph_sbid = monograph._id request.rel_db_session.add(evaluation) try: request.rel_db_session.commit() except IntegrityError: request.rel_db_session.rollback() request.session.flash( _('This record already exists! Please check the data and try again.' )) return { 'content': evaluation_form.render(appstruct), 'main': main, 'user': get_logged_user(request), 'general_stuff': { 'form_title': FORM_TITLE_NEW }, } monograph.save(request.db) return HTTPFound( location=request.route_path('staff.edit_book', sbid=monograph._id))