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, }
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)
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})
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, }
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, }
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'})
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, }
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)
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)
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)