示例#1
0
def edit_a_book(request, book_requested):
	if request.method == 'POST':
		formA = BookForm(request.POST, prefix='formA')
		formA.is_multipart()
		formB = AuthorForm(request.POST, prefix='formB')
		# Book Title Regex used before saving to DB --------------------------
		if formA.is_valid():
			title = formA.cleaned_data['title']
			m = re.match('(\w+\s)*(\w+)', title)
			# continue normal view as before -------------------------------------
			if all([formA.is_valid(), formB.is_valid()]) and m is not None and len(str(m.group())) == len(str(title)):
				orig_book = uncode_display_url(book_requested)
				book = get_object_or_404(Book, title=orig_book)
				author = Author.objects.get(book__title=orig_book)
				book.title = formA.cleaned_data['title']
				author.first_name = formB.cleaned_data['first_name']
				author.last_name = formB.cleaned_data['last_name']
				book.description = formA.cleaned_data['description']
				author.save()
				book.save()
				return HttpResponseRedirect(reverse('books:profile'))
	else:
		orig_book = uncode_display_url(book_requested)
		book = get_object_or_404(Book, title=orig_book)
		author = Author.objects.get(book__title=orig_book)
		formA = BookForm(prefix='formA', initial={'title': book.title, 'description': book.description})
		formB = AuthorForm(prefix='formB', initial={'first_name': author.first_name, 'last_name': author.last_name})
	return render(request, 'books/edit_a_book.html', {'formA': formA, 'formB': formB})
示例#2
0
文件: views.py 项目: piIorama/des
def addauthor(request,id=1):
	if request.POST:
		form = AuthorForm(request.POST)
		if form.is_valid():
			author=form.save(commit=False)
			form.save()
	return redirect('/authors/all',)	
示例#3
0
def add_a_book(request):
	if request.method == 'POST':
		formA = AddBookForm(request.POST, request.FILES, prefix='formA')
		formA.is_multipart()
		formB = AuthorForm(request.POST, prefix='formB')
		# Book Title Regex used before saving to DB --------------------------
		if formA.is_valid():
			title = formA.cleaned_data['title']
			m = re.match('(\w+\s)*(\w+)', title)
			# continue normal view as before -------------------------------------
			if all([formA.is_valid(), formB.is_valid()]) and m is not None and len(str(m.group())) == len(str(title)):
				title = formA.cleaned_data['title']
				first_name = formB.cleaned_data['first_name']
				last_name = formB.cleaned_data['last_name']
				description = formA.cleaned_data['description']
				date = datetime.datetime.now()
				a_book = formA
				a_author = formB
				new_book = a_book.save(commit=False)
				new_author, created_author = Author.objects.get_or_create(first_name=first_name, last_name=last_name)
				new_book.file.name = content_file_name('content', formA['file'].name)
				new_book.user = request.user
				new_book.save()
				new_book.authors.add(new_author.id)
				new_book.save()
				return HttpResponseRedirect(reverse('books:index'))
	else:
		formA = AddBookForm(prefix='formA')
		formB = AuthorForm(prefix='formB')
	return render(request, 'books/add_a_book.html', {'formA': formA, 'formB': formB})
示例#4
0
def author_edit_page(author_id):
    searchform = SearchForm()
    db = current_app.config["db"]
    author = db.get_author_by_id(author_id)
    if author is None:
        abort(404)
    if not current_user.is_admin:
        abort(401)
    form = AuthorForm()
    if form.validate_on_submit():
        name = form.data["name"]
        description = form.data["description"]
        photo = form.data["photo"]
        author_ = Author(id=author_id,
                         name=name,
                         description=description,
                         photo=photo)
        db.update_author(author_)
        flash("Author updated successfully.")
        return redirect(url_for("author_page", author_id=author_id))
    form.name.data = author.name
    form.description.data = author.description if author.description else ""
    form.photo.data = author.photo if author.photo else ""
    return render_template("author_edit.html",
                           form=form,
                           searchform=searchform)
示例#5
0
def add_author():
    form = AuthorForm(request.form)
    if request.method == 'POST' and form.validate():
        author = Author(form.name.data)
        session.add(author)
        session.commit()
        return redirect(url_for('index'))
    return render_template('author_form.html', form=form, action="/author/add")
示例#6
0
文件: main.py 项目: zemlanin/Libr
def addauthor():
    form = AuthorForm(request.form)
    if form.validate():
        a = Author(form.name.data)
        db_session.add(a)
        db_session.commit()
        return redirect(url_for("singleauthor", a_id=a.id))
    else:
        return redirect(url_for("index"))
示例#7
0
文件: views.py 项目: bilunyk/elibrary
 def dispatch_request(self):
     form = AuthorForm()
     form.books.query = Book.query.all()
     if request.method == "POST":
         if form.validate_on_submit():
             obj = Author()
             form.populate_obj(obj)
             obj.save()
             return redirect("/authors/")
     return render_template("author_add.html", form=form)
示例#8
0
文件: views.py 项目: bilunyk/elibrary
 def dispatch_request(self, obj_id):
     obj = Author.query.get_or_404(obj_id)
     form = AuthorForm(obj=obj)
     form.books.query = Book.query.join(Author.books).union(Book.query)
     if request.method == "POST":
         if form.validate_on_submit():
             form.populate_obj(obj)
             obj.save()
             return redirect("/authors/")
     return render_template("author_edit.html", form=form, obj=obj)
示例#9
0
def edit_author(author_id):
    form = AuthorForm(request.form)
    if request.method == 'GET':
        form = AuthorForm(request.form, session.query(Author).get(author_id))
    if request.method == 'POST' and form.validate():
        author_edited = Author(form.name.data)
        author_db = session.query(Author).get(author_id)
        author_db.name = author_edited.name
        session.commit()
        return redirect(url_for('index'))
    return render_template('author_form.html', form=form, action="/author/%s/edit" % author_id, submit_text="Save")
示例#10
0
def authors_add():
    form = AuthorForm(request.form)

    if request.method == "POST" and form.validate():
        new_author = Author(name=form.data.get('name'))
        db.session.add(new_author)
        db.session.commit()
        flash("Author added")
        return redirect(url_for('authors_view_all'))

    return render_template('authors/add.html', **locals())
示例#11
0
文件: views.py 项目: bunnyitvn/webptn
def create_author(request):
	if request.POST:
		form = AuthorForm(request.POST,request.FILES)
		if form.is_valid():
			form.save()			
			return HttpResponseRedirect('/appwptn/all/author')
	else:
		form = AuthorForm()
	args = {}
	args.update(csrf(request))
	args['form'] = form
	return render_to_response('create_author.html',args)	
示例#12
0
def authors_edit(author_id):
    author = Author.query.get_or_404(author_id)

    form = AuthorForm(request.form, obj=author)

    if request.method == "POST" and form.validate():
        author.name = form.data.get('name')
        db.session.commit()
        flash("Author changed")
        return redirect(url_for('authors_view_all'))

    return render_template('authors/edit.html', **locals())
示例#13
0
def create_author():
    if request.method == 'GET':
        form = AuthorForm()
    else:   # POST
        form = AuthorForm(request.form)
        if form.validate():
            author = Author('')
            form.populate_obj(author)
            db.session.add(author)
            db.session.commit()
            return redirect(url_for('edit_authors'))
    return render_template('authors_edit_page.html', form=form)
示例#14
0
文件: views.py 项目: 45253321/myblog
def login():
    af = AuthorForm()
    if af.validate_on_submit():
        user =  models.Author.query.filter_by(name=af.name.data, passwd=af.passwd.data).first()
        if not user:
            user = models.Author(af.name.data, af.passwd.data)
            db.session.add(user)
            db.session.commit()
        login_user(user)
        flash("User successful login")
        return redirect(request.args.get('next') or url_for('index'))
    else:
        return render_template('login.html', aform = af)
示例#15
0
文件: app.py 项目: nastyako/prom-ua
def add_author():
    form = AuthorForm(request.form)
    if request.method == 'POST' and form.validate():
        author = Author(form.name.data)
        session.add(author)
        session.commit()
        return redirect(url_for('index'))
    return render_template('author_form.html',
                           form=form,
                           action="/author/add",
                           user_name=current_user.name,
                           user_picture=current_user.picture,
                           if_administrator=verify_administrator())
示例#16
0
def author():
	form = AuthorForm(formdata=request.form or None)
	if request.method == 'POST':
		if request.form and form.validate():
			a = Author(name=form.name.data)
			db.session.add(a)
			db.session.commit()
			return redirect(url_for('author'))
		else:
		    flash('There was an error with your input: %s' % form.errors)
		    return redirect(url_for('author'))
		
	else:
		authors = Author.query.all()
		return render_template('author.html', authors=authors, form=form)
示例#17
0
文件: views.py 项目: zedzew/zlibrary
def author_add():
    form = LoginForm()
    author_form = AuthorForm(request.form)
    author_form.books.choices = [(p.id, p.title) for p in db_session.query(Book).order_by('id')]

    if author_form.validate_on_submit():
        author = Author()
        author.name = author_form.name.data
        author.books = [db_session.query(Book).get(o) for o in author_form.books.data]
        db_session.add(author)
        db_session.commit()
        flash('Successfully added.', 'success')
        return redirect(url_for('index'))

    return render_template("add_author.html", bform=author_form, form=form, user=current_user, is_authenticated=True)
示例#18
0
def author_create(request):
    if request.user.author_profile.count() != 0:
        return HttpResponseRedirect(reverse('author_detail', args=[request.user.get_profile().id]))
    if request.method == 'POST':
        form = AuthorForm(request.POST)
        if form.is_valid():
            new_author = form.save(commit=False)
            new_author.user = request.user
            new_author.save()
            return HttpResponseRedirect(reverse('author_detail', args=[new_author.id]))
        else:
           form = AuthorForm(request.POST)
    else:
        form = AuthorForm()
    return render_to_response('author_create.html', {'form': form}, context_instance = RequestContext(request))
示例#19
0
文件: views.py 项目: rg3915/django
def author_manager(request, author):
    BookInlineFormSet = inlineformset_factory(Author, Book, extra=1,
                                              formfield_callback=add_category)

    form = AuthorForm(request.POST or None, instance=author)
    formset = BookInlineFormSet(request.POST or None, instance=author)

    if form.is_valid() and formset.is_valid():
        form.save()
        formset.save()
        return HttpResponseRedirect('/inlines/')

    return render_to_response("manage_authors.html",
                              {"formset": formset,
                               "form": form},
                              RequestContext(request))
示例#20
0
文件: views.py 项目: zedzew/zlibrary
def author_edit(id):
    form = LoginForm()
    author = db_session.query(Author).get(id)
    author_form = AuthorForm(request.form, obj=author)
    author_form.books.choices = [(p.id, p.title) for p in db_session.query(Book).order_by('id')]

    if author_form.validate_on_submit():
        author = db_session.query(Author).get(id)
        author.name = author_form.name.data
        author.books = [db_session.query(Book).get(o) for o in author_form.books.data]
        db_session.commit()
        flash('Saved.', 'info')
        return redirect(url_for('index'))

    author_form.books.data = [p.id for p in author.books]
    return render_template("author.html", bform=author_form, form=form, author=author, user=current_user, is_authenticated=True)
示例#21
0
def author_add(request, object_id):
	"""
	FIXME
	@param request:
	@type request:
	@param object_id:
	@type object_id:
	"""
	aLarp = get_object_or_404(Larp, pk=object_id)
	anAuthor = Author(larp=aLarp, user=request.user)
	if request.method == "POST":
		form = AuthorForm(request.POST,instance=anAuthor)
		if form.is_valid():
			run=form.save()
			return HttpResponseRedirect(anAuthor.larp.get_absolute_url())
	return HttpResponseRedirect(run.get_absolute_url())
示例#22
0
文件: app.py 项目: nastyako/prom-ua
def edit_author(author_id):
    form = AuthorForm(request.form)
    if request.method == 'GET':
        form = AuthorForm(request.form, session.query(Author).get(author_id))
    if request.method == 'POST' and form.validate():
        author_edited = Author(form.name.data)
        author_db = session.query(Author).get(author_id)
        author_db.name = author_edited.name
        session.commit()
        return redirect(url_for('index'))
    return render_template('author_form.html',
                           form=form,
                           action="/author/%s/edit" % (author_id),
                           submit_text="Save",
                           user_name=current_user.name,
                           user_picture=current_user.picture,
                           if_administrator=verify_administrator())
示例#23
0
def addauthor():
    """ Добавление писателя (только админ) """
    form = AuthorForm()
    session = db_session.create_session()
    if form.validate_on_submit():
        if session:
            author = Author(name=form.name.data,
                            surname=form.surname.data,
                            years=form.years.data,
                            list_of_books=form.list_of_books.data)
            session.add(author)
            session.commit()
            return redirect("/")
        return redirect('/logout')
    return render_template('addauthor.html',
                           title='Добавление писателя',
                           form=form)
示例#24
0
def author_manager(request, author):
    BookInlineFormSet = inlineformset_factory(Author,
                                              Book,
                                              extra=1,
                                              formfield_callback=add_category)

    form = AuthorForm(request.POST or None, instance=author)
    formset = BookInlineFormSet(request.POST or None, instance=author)

    if form.is_valid() and formset.is_valid():
        form.save()
        formset.save()
        return HttpResponseRedirect('/inlines/')

    return render_to_response("manage_authors.html", {
        "formset": formset,
        "form": form
    }, RequestContext(request))
示例#25
0
def submit_proposal(request):
    if request.method=='POST':
        author_form = AuthorForm(request.POST)
        proposal_form = ProposalForm(request.POST, request.FILES)
        
        if author_form.is_valid() and proposal_form.is_valid:
            author = author_form.save(commit=False)
            author.save()
            
            proposal = proposal_form.save(commit=False)
            proposal.author = author
            proposal.save()

            return HttpResponseRedirect(reverse('program-submit-proposal-complete'))
    else:
        author_form = AuthorForm()
        proposal_form = ProposalForm()

    return render_to_response('program/submit_proposal_form.html',
        {'author_form': author_form, 'proposal_form': proposal_form})
示例#26
0
def add_author(author_id):
    a = Author.query.filter(Author.id == author_id).first()
    form = AuthorForm(user=g.user, author=a)
    msg = "Success!"
    if not form.validate_on_submit():
        msg = '; '.join(form.errors.items())

    # update feeds
    for feed in Feed.query.filter(Feed.id.in_(form.feeds.data)):
        for sa_id, sa_name in form.similar_authors.choices:
            author = Author.query.filter(Author.id == int(sa_id)).first()
            if author in feed.authors:
                feed.authors.remove(author)
        for sa_id in form.similar_authors.data:
            author = Author.query.filter(Author.id == int(sa_id)).first()
            feed.authors.append(author)
        db.session.add(feed)
    db.session.commit()

    return msg
示例#27
0
def edit_authors(id_=None):
    if id_ is None:
        authors = Author.query.all()
        return render_template('authors_list_page.html', authors=authors)
    else:
        author = Author.query.get_or_404(id_)
        if request.method == 'GET':
            form = AuthorForm(obj=author)
        elif request.method == 'POST':
            form = AuthorForm(request.form)
            if form.validate():
                form.populate_obj(author)
                db.session.add(author)
                db.session.commit()
                return redirect(url_for('edit_authors'))
        else:    # request.method == 'DELETE'
            db.session.delete(author)
            db.session.commit()
            return '', 200
    return render_template('authors_edit_page.html', form=form, obj_id=author.id)
示例#28
0
def add_author(author_id):
    a = Author.query.filter(Author.id == author_id).first()
    form = AuthorForm(user=g.user, author=a)
    msg = "Success!"
    if not form.validate_on_submit():
        msg = '; '.join(form.errors.items())

    # update feeds
    for feed in Feed.query.filter(Feed.id.in_(form.feeds.data)):
        for sa_id, sa_name in form.similar_authors.choices:
            author = Author.query.filter(Author.id == int(sa_id)).first()
            if author in feed.authors:
                feed.authors.remove(author)
        for sa_id in form.similar_authors.data:
            author = Author.query.filter(Author.id == int(sa_id)).first()
            feed.authors.append(author)
        db.session.add(feed)
    db.session.commit()

    return msg
示例#29
0
def edit_a_book(request, book_requested):
    if request.method == 'POST':
        formA = BookForm(request.POST, prefix='formA')
        formA.is_multipart()
        formB = AuthorForm(request.POST, prefix='formB')
        # Book Title Regex used before saving to DB --------------------------
        if formA.is_valid():
            title = formA.cleaned_data['title']
            m = re.match('(\w+\s)*(\w+)', title)
            # continue normal view as before -------------------------------------
            if all([formA.is_valid(), formB.is_valid()
                    ]) and m is not None and len(str(m.group())) == len(
                        str(title)):
                orig_book = uncode_display_url(book_requested)
                book = get_object_or_404(Book, title=orig_book)
                author = Author.objects.get(book__title=orig_book)
                book.title = formA.cleaned_data['title']
                author.first_name = formB.cleaned_data['first_name']
                author.last_name = formB.cleaned_data['last_name']
                book.description = formA.cleaned_data['description']
                author.save()
                book.save()
                return HttpResponseRedirect(reverse('books:profile'))
    else:
        orig_book = uncode_display_url(book_requested)
        book = get_object_or_404(Book, title=orig_book)
        author = Author.objects.get(book__title=orig_book)
        formA = BookForm(prefix='formA',
                         initial={
                             'title': book.title,
                             'description': book.description
                         })
        formB = AuthorForm(prefix='formB',
                           initial={
                               'first_name': author.first_name,
                               'last_name': author.last_name
                           })
    return render(request, 'books/edit_a_book.html', {
        'formA': formA,
        'formB': formB
    })
示例#30
0
def add_author():
    if not current_user.is_admin:
        return abort(401)
    db = current_app.config["db"]
    form = AuthorForm()
    if form.validate_on_submit():
        values = author_take_info_from_form(form)

        person_id = db.person.add(*values[0])
        db.author.add(person_id, values[1])

        flash("Author is added successfully", "success")
        next_page = request.args.get("next", url_for("home_page"))
        return redirect(next_page)

    empty_person = PersonObj()
    empty_author = AuthorObj("", "", "")
    return render_template("author/author_form.html",
                           form=form,
                           person=empty_person,
                           author=empty_author)
示例#31
0
文件: views.py 项目: piIorama/des
def addauthor(request, id=1):
    if request.POST:
        form = AuthorForm(request.POST)
        if form.is_valid():
            author = form.save(commit=False)
            form.save()
    return redirect('/authors/all', )
示例#32
0
def author_add():
    # form = LoginForm()
    author_form = AuthorForm(request.form)
    author_form.books.choices = [
        (p.id, p.title) for p in db_session.query(Book).order_by('id')
    ]

    if author_form.validate_on_submit():
        author = Author()
        author.name = author_form.name.data
        author.books = [
            db_session.query(Book).get(o) for o in author_form.books.data
        ]
        db_session.add(author)
        db_session.commit()
        flash('Successfully added.', 'success')
        return redirect(url_for('index'))

    return render_template("new_author.html",
                           bform=author_form,
                           user=current_user,
                           is_authenticated=True)
示例#33
0
def author_edit_page(author_id):
    if not current_user.is_admin:
        return abort(401)
    db = current_app.config["db"]
    form = AuthorForm()
    author_obj = db.author.get_row("*", "AUTHOR_ID", author_id)
    person_obj = db.person.get_row("*", "PERSON_ID", author_obj.person_id)
    if form.validate_on_submit():
        values = author_take_info_from_form(form)
        db.person.update([
            "PERSON_NAME", "SURNAME", "GENDER", "DATE_OF_BIRTH", "NATIONALITY"
        ], values[0], "PERSON_ID", author_obj.person_id)
        db.author.update("BIOGRAPHY", values[1], "AUTHOR_ID", author_id)

        flash("Author is updated successfully", "success")
        next_page = request.args.get("next", url_for("home_page"))
        return redirect(next_page)

    return render_template("author/author_form.html",
                           form=form,
                           person=person_obj,
                           author=author_obj)
示例#34
0
def create_author():
    if request.method == 'GET':
        form = AuthorForm()
    else:  # POST
        form = AuthorForm(request.form)
        if form.validate():
            author = Author('')
            form.populate_obj(author)
            db.session.add(author)
            db.session.commit()
            return redirect(url_for('edit_authors'))
    return render_template('authors_edit_page.html', form=form)
示例#35
0
文件: views.py 项目: leevg/library
def edit_author(id):
    '''Editing or adding author depending on given id.'''
    if id == 'new':
        author = Author()
    else:
        author = Author.query.filter_by(id=id).first_or_404()
    form = AuthorForm(request.form, obj=author)
    if request.method == 'GET':
        return render_template('edit_author.html', form=form)
    if request.method == 'POST' and form.validate():
        form.populate_obj(author)
        author.name = form.name.data
        author.books = form.books.data
        if id == 'new':
            db.session.add(author)
            flash('Author was successfully added')
        else:
            db.session.merge(author)
            flash('Author info was successfully updated')
        db.session.commit()
        return redirect(url_for('author', id=author.id))
    else:
        return render_template('edit_author.html', form=form)
示例#36
0
文件: main.py 项目: zemlanin/Libr
def singleauthor(a_id):
    author = Author.query.filter(Author.id == a_id).one()
    if request.method == "GET":
        books = author.books
        page = {'title': author.name}
        forms = {
            'author': AuthorForm(),
            'book': BookForm(),
            'authorship': AuthorshipForm(),
            'search': SearchForm()
        }
        forms['authorship'].books.choices = [(b.id, b.title) for b in Book.query.all()]
        return render_template("author.html", **locals())
    elif request.method == "POST":
        form = AuthorForm(request.form)
        if form.validate():
            author.name = form.name.data
            db_session.commit()
        return redirect(url_for("singleauthor", a_id=a_id)) # либо рендерить?..
    elif request.method == "DELETE":
        db_session.delete(author)
        db_session.commit()
        return url_for("index")
示例#37
0
def add_a_book(request):
    if request.method == 'POST':
        formA = AddBookForm(request.POST, request.FILES, prefix='formA')
        formA.is_multipart()
        formB = AuthorForm(request.POST, prefix='formB')
        # Book Title Regex used before saving to DB --------------------------
        if formA.is_valid():
            title = formA.cleaned_data['title']
            m = re.match('(\w+\s)*(\w+)', title)
            # continue normal view as before -------------------------------------
            if all([formA.is_valid(), formB.is_valid()
                    ]) and m is not None and len(str(m.group())) == len(
                        str(title)):
                title = formA.cleaned_data['title']
                first_name = formB.cleaned_data['first_name']
                last_name = formB.cleaned_data['last_name']
                description = formA.cleaned_data['description']
                date = datetime.datetime.now()
                a_book = formA
                a_author = formB
                new_book = a_book.save(commit=False)
                new_author, created_author = Author.objects.get_or_create(
                    first_name=first_name, last_name=last_name)
                new_book.file.name = content_file_name('content',
                                                       formA['file'].name)
                new_book.user = request.user
                new_book.save()
                new_book.authors.add(new_author.id)
                new_book.save()
                return HttpResponseRedirect(reverse('books:index'))
    else:
        formA = AddBookForm(prefix='formA')
        formB = AuthorForm(prefix='formB')
    return render(request, 'books/add_a_book.html', {
        'formA': formA,
        'formB': formB
    })
示例#38
0
def author_edit(id):
    # form = LoginForm()
    author = db_session.query(Author).get(id)
    author_form = AuthorForm(request.form, obj=author)
    author_form.books.choices = [
        (p.id, p.title) for p in db_session.query(Book).order_by('id')
    ]

    if author_form.validate_on_submit():
        author = db_session.query(Author).get(id)
        author.name = author_form.name.data
        author.books = [
            db_session.query(Book).get(o) for o in author_form.books.data
        ]
        db_session.commit()
        flash('Saved.', 'info')
        return redirect(url_for('index'))

    author_form.books.data = [p.id for p in author.books]
    return render_template("author.html",
                           bform=author_form,
                           author=author,
                           user=current_user,
                           is_authenticated=True)
示例#39
0
def author_create(request):
    if request.user.author_profile.count() != 0:
        return HttpResponseRedirect(
            reverse('author_detail', args=[request.user.get_profile().id]))
    if request.method == 'POST':
        form = AuthorForm(request.POST)
        if form.is_valid():
            new_author = form.save(commit=False)
            new_author.user = request.user
            new_author.save()
            return HttpResponseRedirect(
                reverse('author_detail', args=[new_author.id]))
        else:
            form = AuthorForm(request.POST)
    else:
        form = AuthorForm()
    return render_to_response('author_create.html', {'form': form},
                              context_instance=RequestContext(request))
示例#40
0
def author_edit(request, id):
    author = get_object_or_404(Author, pk=id)
    if request.user != author.user:
        resp = render_to_response('403.html',
                                  context_instance=RequestContext(request))
        resp.status_code = 403
        return resp
    if request.method == 'POST':
        form = AuthorForm(request.POST, instance=author)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(
                reverse('author_detail', args=[author.id]))
        else:
            form = AuthorForm(request.POST, instance=author)
    else:
        form = AuthorForm(instance=author)
    return render_to_response('author_edit.html', {
        'form': form,
        'author': author
    },
                              context_instance=RequestContext(request))
示例#41
0
def author_edit(request, id):
    author = get_object_or_404(Author, pk=id)
    if request.user != author.user:
        resp = render_to_response('403.html', context_instance=RequestContext(request))
        resp.status_code = 403
        return resp
    if request.method == 'POST':
        form = AuthorForm(request.POST, instance=author)
        if form.is_valid():
           form.save()
           return HttpResponseRedirect(reverse('author_detail', args=[author.id]))
        else:
           form = AuthorForm(request.POST, instance=author)
    else:
        form = AuthorForm(instance=author)
    return render_to_response('author_edit.html', {'form': form, 'author': author}, context_instance = RequestContext(request))
示例#42
0
def edit_authors(id_=None):
    if id_ is None:
        authors = Author.query.all()
        return render_template('authors_list_page.html', authors=authors)
    else:
        author = Author.query.get_or_404(id_)
        if request.method == 'GET':
            form = AuthorForm(obj=author)
        elif request.method == 'POST':
            form = AuthorForm(request.form)
            if form.validate():
                form.populate_obj(author)
                db.session.add(author)
                db.session.commit()
                return redirect(url_for('edit_authors'))
        else:  # request.method == 'DELETE'
            db.session.delete(author)
            db.session.commit()
            return '', 200
    return render_template('authors_edit_page.html',
                           form=form,
                           obj_id=author.id)
示例#43
0
def add_feed_author():
    similar_authors = None
    author = None

    if 'query' in request.values:
        similar_authors = Author.auto_complete_authors(
            request.values['query']).all()
        names = request.values['query'].split(' ')
        author = Author.query.filter(Author.lastname == names[-1]).filter(
            Author.forenames == ' '.join(names[:-1])).first()

    if 'author_id' in request.values:
        author = Author.query.filter(
            Author.id == request.values['author_id']).first()
        if author is not None:
            similar_authors = author.similar_authors()

    if 'feed_id' in request.values:
        feed_id = int(request.values['feed_id'])
    else:
        feed_id = None

    if author is None:
        author = Author.query.filter(
            Author.id == similar_authors[0].id).first()

    if similar_authors is None:
        return no_found_error("Error: author not found!")

    author_form = AuthorForm(user=g.user, author=author, feed_id=feed_id)

    return render_template('add_feed_author.html',
                           author=author,
                           similar_authors=similar_authors,
                           author_form=author_form,
                           endpoint=request.values['endpoint'])
示例#44
0
def edit_author(number):
	if number == 'new':
		author = Author()
		title = 'Ajouter un auteur dans la bibliotheque'
	else:
		author = Author.query.get(number)
		title = author
		if os.path.exists('app/static/photos/' + str(author.id)):
			author.img = True
	#global author
	#a = author
	form = AuthorForm()
	form.booktoadd.choices = Book.query.filter(Book!=author.books)
	update = False
	#if form.validate_on_submit():
	if request.form=='POST' and form.validate():
		#print form.errors
		author.firstname = unicode(form.firstname.data)
		author.familyname = unicode(form.familyname.data)
		if form.nationality.data != author.nationality:
			author.nationality= unicode(form.nationality.data)
			update = True
		#a.dateofbirth= form.dateofbirth.data
		if form.placeofbirth.data != author.placeofbirth:
			author.placeofbirth = unicode(form.placeofbirth.data)
			update = True
		if form.website.data != author.website:
			author.website = unicode(form.website.data)
			update = True
		if form.biography.data != author.biography:
			author.biography = unicode(form.biography.data)
			update = True

		# gestion des livres
		if request.form.getlist('booktodelete'):
			for item in request.form.getlist('booktodelete'):
				a = Book.query.get(item)
				author.remove_book(a)
				update = True
		
		if request.form.getlist('booktoadd'):
			for item in request.form.getlist('booktoadd'):
				# even if noting is select, the field return something, a unicode string '__None'
				# this "if" not to block the whole thing. Same on books !
				if item != '__None':
					a = Book.query.get(item)
					author.add_book(a)
					update = True
		
		if update:
			db.session.add(author)
			db.session.commit()
			db.session.refresh(author)
		
		# the photo will overwrite the previous if existing.
		# thus, only one per author and nothing else to check
		if request.method == 'POST' and request.files['portrait']:
			fileurl = 'app/static/photos/' + str(author.id)
			image = request.files['portrait'].save(fileurl)
		
		return redirect('/admin')
	return render_template('edit_author.html', form = form, author = author, title = title)