Ejemplo n.º 1
0
def view(meeting_id, media_person_id):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)

    page_info = {}
    page_info['picture'] = {
        'edit_url': flask.url_for('.edit_photo', meeting_id=meeting.id,
                                   media_person_id=person.id),
        'remove_url': flask.url_for('.remove_photo', meeting_id=meeting.id,
                                     media_person_id=person.id),
        'url': person.image_file,

        'rotate_url': flask.url_for('media_participant.rotate_photo',
                                     meeting_id=meeting.id,
                                     media_person_id=person.id),

        'crop_url': flask.url_for('media_participant.crop_photo_view',
                                   meeting_id=meeting.id,
                                   media_person_id=person.id),
    }

    return {
        'meeting': meeting,
        'person': person,
        'page_info': page_info,
    }
Ejemplo n.º 2
0
def badge_print(meeting_id, person_id, person_type):
    app = flask.current_app
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)

    if person_type == 'person':
        person = sugar.get_person_or_404(meeting_id, person_id)
    else:
        person = sugar.get_media_person_or_404(meeting_id, person_id)
    badge = flask.request.args.get('badge', None)

    # create a temporary folder and save participant photo to disk
    temp = path(tempfile.mkdtemp())
    photo = person.data.get('photo', None)

    if photo:
        person.photo_url = app.config['UPLOADED_PHOTOS_DEST'] / photo
    else:
        person.photo_url = None

    # save badge as html
    context = dict(meeting=meeting, person=person, path=app.root_path,
                   background_path=app.config['UPLOADED_BACKGROUNDS_DEST'],
                   badge=badge, person_type=person_type)
    return sugar.render_pdf("participant/person_badge_simple.html", temp=temp,
                             height="2.15in", width="3.4in", context=context,
                             filename=secure_filename(person.name),
                             use_wkhtmltopdf=True)
Ejemplo n.º 3
0
def media_file(meeting_id, file_type, media_person_id=None, person_id=None):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    if media_person_id:
        person = sugar.get_media_person_or_404(meeting_id, media_person_id)
        redirect_url = flask.url_for('.view', meeting_id=meeting.id,
                                     media_person_id=person.id)
    elif person_id:
        person = sugar.get_person_or_404(meeting_id, person_id)
        redirect_url = flask.url_for('participant.view',
                                     meeting_id=meeting.id,
                                     person_id=person.id)
    else:
        flask.abort(400)

    app = flask.current_app
    media_file = flask.request.files[file_type]

    if media_file:
        # delete old file
        if person.data.get(file_type):
            try:
                app.config['UPLOADED_FILES_DEST'].joinpath(
                    person.data[file_type]).unlink()
            except OSError:
                pass
        filename = '%s_%s.' % (
            secure_filename(person.decoded_data['personal_last_name']),
            file_type)
        media_file_name = files.save(media_file, name=filename) if media_file else ''
        person.data[file_type] = media_file_name
        person.save()

    return flask.redirect(redirect_url)
def media_file_delete(meeting_id, media_person_id, file_type):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)
    app = flask.current_app

    if person.data.get(file_type):
        try:
            app.config['UPLOADED_FILES_DEST'].joinpath(
                person.data[file_type]).unlink()
        except OSError:
            pass
        person.data.pop(file_type, None)
        person.save()

    url = flask.url_for('.view', meeting_id=meeting.id,
                        media_person_id=person.id)
    return flask.json.dumps({'status': 'success', 'url': url})
Ejemplo n.º 5
0
def crop_photo_view(meeting_id, media_person_id):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)
    page_info = {
        'crop_url': flask.url_for('.crop_photo', meeting_id=meeting.id,
                                  media_person_id=person.id),

        'cancel_url': flask.url_for('.view', meeting_id=meeting.id,

                                    media_person_id=person.id),
        'revert_url': flask.url_for('media_participant.revert_photo',
                                     meeting_id=meeting.id,
                                     media_person_id=person.id),

    }
    return {
        'meeting': meeting,
        'person': person,
        'page_info': page_info,
    }
Ejemplo n.º 6
0
def badge(meeting_id, person_id, person_type):
    from printouts import _get_meeting_description

    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    if person_type == 'person':
        person = sugar.get_person_or_404(meeting_id, person_id)
    else:
        person = sugar.get_media_person_or_404(meeting_id, person_id)

    badge = flask.request.args.get('badge', None)
    person.photo_url = person.image_file

    return {
        'person': person,
        'meeting': meeting,
        'category': person.category_model(meeting.id),
        'meeting_description': _get_meeting_description(meeting, 'E'),
        'badge': badge,
        'person_type': person_type,
    }
Ejemplo n.º 7
0
def delete(meeting_id, media_person_id):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)
    person_meeting = sugar.get_object_or_404(models.MediaMeeting,
                                             person=person.id,
                                             meeting=meeting_id)
    app = flask.current_app
    if person.press_card:
        try:
            app.config['UPLOADED_FILES_DEST'].joinpath(
                person.press_card).unlink()
        except OSError:
            pass

    if person.editor_letter:
        try:
            app.config['UPLOADED_FILES_DEST'].joinpath(
                person.editor_letter).unlink()
        except OSError:
            pass

    person_meeting.delete_instance()
    return flask.jsonify({'status': 'success'})
Ejemplo n.º 8
0
def edit(meeting_id, media_person_id=None):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)

    if media_person_id:
        person = sugar.get_media_person_or_404(meeting_id, media_person_id)
        person_meeting = sugar.get_object_or_404(models.MediaMeeting,
                                                 person=person.id,
                                                 meeting=meeting_id)
        form = CitesMediaParticipantForm(obj=person.data_as_attributes(meeting_id),
                                         meeting=meeting)
        subject = 'edit-media-participant'

    else:
        person = models.MediaPerson()
        person.data = {}
        person_meeting = None
        form = CitesMediaParticipantForm(meeting=meeting)
        subject = 'add-media-participant'

    if flask.request.method == 'POST':
        if form.validate():
            form.save(person, person_meeting)
            sugar.activity(meeting_id, subject, person.name, person.id)
            flask.flash('Person information saved', 'success')
            view_url = flask.url_for('.view', meeting_id=meeting.id,
                                     media_person_id=person.id)
            return flask.redirect(view_url)
        else:
            flask.flash('Errors in person information', 'error')
    else:
        pass

    return {
        'meeting': meeting,
        'person': person,
        'form': form,
    }
Ejemplo n.º 9
0
def badge_print(meeting_id, person_id, person_type):
    app = flask.current_app
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)

    if person_type == 'person':
        person = sugar.get_person_or_404(meeting_id, person_id)
    else:
        person = sugar.get_media_person_or_404(meeting_id, person_id)
    badge = flask.request.args.get('badge', None)

    # create a temporary folder and save participant photo to disk
    temp = path(tempfile.mkdtemp())
    photo = person.data.get('photo', None)

    if photo:
        person.photo_url = app.config['UPLOADED_PHOTOS_DEST'] / photo
    else:
        person.photo_url = None

    if badge and badge == 'nostripe':
        color = 'all-white'
    else:
        category = person.category_model(meeting.id)
        color = category.data['badge_color'].replace(' ', '-')
    filename = color + '-left.png'
    if not app.config['BADGES_LOGOS'].joinpath(filename).exists():
        generate_badge_logo(color)

    # save badge as html
    context = dict(meeting=meeting, person=person, path=app.root_path,
                   background_path=app.config['UPLOADED_BACKGROUNDS_DEST'],
                   badge_logo_path=app.config['BADGES_LOGOS'],
                   badge=badge, person_type=person_type)
    return sugar.render_pdf("participant/person_badge_simple.html", temp=temp,
                             height="2.15in", width="3.4in", context=context,
                             filename=secure_filename(person.name),
                             use_wkhtmltopdf=True)
Ejemplo n.º 10
0
def revert_photo(meeting_id, media_person_id):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)
    url = flask.url_for('.view', meeting_id=meeting.id, media_person_id=person.id)
    return _revert_photo(meeting, person, url)
Ejemplo n.º 11
0
def rotate_photo(meeting_id, media_person_id):
    meeting = sugar.get_object_or_404(models.Meeting, id=meeting_id)
    person = sugar.get_media_person_or_404(meeting_id, media_person_id)
    return _rotate_photo(meeting, person)