コード例 #1
0
ファイル: views.py プロジェクト: jamilatta/scielobooks
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))
コード例 #2
0
ファイル: views.py プロジェクト: scieloorg/scielobooks
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))