Example #1
0
def add_person():
    app.logger.info("Route /person called - Adding a new person")
    form = PersonForm()
    if form.validate_on_submit():
        flash('{} {} has been added to the database'.format(
            form.first_name.data, form.last_name.data))
        app.logger.info("New person {} {} added to database".format(
            form.first_name.data, form.last_name.data))
        person = Person(firstname=form.first_name.data,
                        lastname=form.last_name.data,
                        email=form.email.data,
                        mobile=form.mobile.data,
                        ismember=form.is_member.data,
                        gender=form.gender.data,
                        address1=form.address1.data,
                        address2=form.address2.data,
                        suburb=form.suburb.data,
                        postcode=form.postcode.data,
                        accept_newsletter=form.accept_newsletter.data,
                        accept_social_media=form.accept_social_media.data,
                        signed_disclaimer=form.has_signed_disclaimer.data)
        db.session.add(person)
        db.session.commit()
    return render_template('add_person.html',
                           title='Add Person',
                           form=form,
                           pagetitle='Add Person')
Example #2
0
def register():
    form = PersonForm()
    if form.validate_on_submit():
        person = Person(last_name=form.last_name.data,
                        first_name=form.first_name.data,
                        country=form.country.data,
                        city=form.city.data,
                        street=form.street.data,
                        number=form.number.data,
                        products=form.products.data)
        person.calculate_coords()
        if person.longitude and person.latitude:
            db.session.add(person)
            db.session.commit()
        else:
            print("Person " + person.last_name + " " + person.first_name +
                  " does not have a valid address!")
        return redirect(url_for('index'))
    return render_template('register.html', form=form)
Example #3
0
def new_person() -> Any:
    session = new_session()
    person = Person()

    form = PersonForm(request.form)

    if form.validate_on_submit():
        person.name = form.name.data
        person.alt_name = form.alt_name.data
        person.first_name = form.first_name.data
        person.last_name = form.last_name.data
        if form.dob.data != 0:
            person.dob = form.dob.data
        if form.dod.data != 0:
            person.dod = form.dod.data
        session.add(person)
        session.commit()
        log_change(session, 'Person', person.id, action='NEW')
        return redirect(url_for('person', personid=person.id))
    # else:
    #     app.logger.debug("Errors: {}".format(form.errors))
    return render_template('new_person.html', form=form, personid=person.id)
Example #4
0
def person(personid: Any) -> Any:
    session = new_session()
    if personid.isdigit():
        person = session.query(Person).filter(Person.id == personid).first()
    else:
        personid = urllib.parse.unquote(personid)
        person = session.query(Person).filter(Person.name == personid).first()
        if not person:
            person = session.query(Person).filter(
                Person.alt_name == personid).first()

    series = session.query(Bookseries)\
                    .join(Work)\
                    .join(Part.authors)\
                    .filter(Bookseries.id == Work.bookseries_id)\
                    .filter(Part.work_id == Work.id)\
                    .filter(Person.id == personid)\
                    .group_by(Bookseries.id)\
                    .all()
    form = PersonForm(request.form)

    genres = session.query(Genre.name, Genre.abbr, func.count(Genre.id).label('count'))\
                    .join(Work.genres)\
                    .join(Work.parts)\
                    .filter(Part.shortstory_id == None)\
                    .join(Contributor.person)\
                    .filter(Contributor.role_id == 0)\
                    .filter(Contributor.part_id == Part.id)\
                    .filter(Person.id == person.id)\
                    .group_by(Genre.name)\
                    .all()

    genre_list: Dict[str, List[str]] = {}
    for genre in genres:
        genre_list[genre.abbr] = [genre.count, genre.name]

    if request.method == 'GET':
        form.name.data = person.name
        form.alt_name.data = person.alt_name
        form.fullname.data = person.fullname
        form.image_attr.data = person.image_attr
        form.dob.data = person.dob
        form.dod.data = person.dod
        form.bio.data = person.bio
        form.bio_src.data = person.bio_src
    elif form.validate_on_submit():
        person.name = form.name.data
        person.alt_name = form.alt_name.data
        person.fullname = form.fullname.data
        person.image_attr = form.image_attr.data
        person.dob = form.dob.data
        person.dod = form.dod.data
        person.bio = form.bio.data.strip()
        person.bio_src = form.bio_src.data
        session.add(person)
        session.commit()
        log_change(session, 'Person', person.id)
        # Reload data so changes are updated to view
        person = session.query(Person).filter(Person.id == person.id).first()
    else:
        app.logger.error('Errors: {}'.format(form.errors))
        print(f'Errors: {form.errors}')
    return render_template('person.html', person=person,
                           genres=genre_list,
                           series=series,
                           form=form)