def new_contact(): tmpl_args = {'page_title':'add contact info'} form = ContactForm() if form.validate_on_submit(): contact_info = Contact() db.session.add(contact_info) contact_info = update_model_from_form(contact_info, form) icon_file = request.files.get('icon') if icon_file: icon_filename = save_icon(icon_file) if icon_filename: contact_info.icon_filename = icon_filename db.session.commit() flash('<strong>{} has been added</strong>'.format(contact_info.name)) msg = '[{}] added to contact info'.format(contact_info.name) current_app.logger.info(msg) return redirect(url_for('Admin.contact')) if len(form.errors): flash_form_errors(form.errors) return render_template('admin_new_contact.html', form=form, **tmpl_args)
def edit_text(text_id): """ edit text """ try: text = Text.query.get(text_id) except: flash('The text couldn\'t be found') raise NotFound() if not text: raise NotFound() if request.method == 'GET': form = TextForm(obj=text) if request.method == 'POST': form = TextForm(request.form) if form.validate_on_submit(): db.session.add(text) text = update_model_from_form(text, form) db.session.commit() flash('<strong>“{}”</strong> has been updated'.format(text.title)) msg = 'Text [{}] updated'.format(text.title) current_app.logger.info(msg) return redirect(url_for('Admin.edit_text', text_id=text_id)) if len(form.errors): flash_form_errors(form.errors) tmpl_args = {'page_title': 'edit “{}”'.format(text.title)} return render_template('admin_edit_text.html', text=text, form=form, **tmpl_args)
def edit_link(link_id): """ edit link """ try: link = Link.query.get(link_id) except: flash('The link couldn\'t be found') raise NotFound() if not link: raise NotFound if request.method == 'GET': form = LinkForm(obj=link) if request.method == 'POST': form = LinkForm(request.form) if form.validate_on_submit(): db.session.add(link) link = update_model_from_form(link, form) db.session.commit() flash('<strong>“{}” has been updated</strong>'.format(link.label)) msg = 'Link [{}] updated'.format(link.label) current_app.logger.info(msg) return redirect(url_for('Admin.edit_link', link_id=link_id)) if len(form.errors): flash_form_errors(form.errors) tmpl_args = {'page_title': 'edit “{}”'.format(link.label)} return render_template('admin_edit_link.html', link=link, form=form, **tmpl_args)
def edit_contact(_id): """edit/update contact or link to social media profile """ tmpl_args = {'page_title':'edit contact info'} try: contact_info = Contact.query.get_or_404(_id) except: current_app.log_exception(sys.exc_info()) return redirect(url_for('Admin.contact')) if request.method == 'GET': form = ContactForm(obj=contact_info) if request.method == 'POST': form = ContactForm(request.form) if len(contact_info.email): tmpl_args['type'] = 'email' else: tmpl_args['type'] = 'profile' filename = contact_info.icon_filename tmpl_args['icon_filename'] = filename if form.validate_on_submit(): db.session.add(contact_info) update_model_from_form(contact_info, form) icon_file = request.files.get('icon') if icon_file: icon_filename = save_icon(icon_file) if icon_filename: contact_info.icon_filename = icon_filename if tmpl_args['type'] == 'email': name = contact_info.email if tmpl_args['type'] == 'profile': name = contact_info.name flash('<strong>“{}”</strong> has been updated'.format(name)) db.session.commit() msg = '[{}] updated'.format(name) current_app.logger.info(msg) return redirect(url_for('Admin.edit_contact', _id=_id)) if len(form.errors): flash_form_errors(form.errors) return render_template('admin_edit_contact.html', form=form, **tmpl_args)
def new_image(series_id): """ images can only be added to an existing series series_id is passed in the url and the form data TODO: choose other series """ try: series = Series.query.filter_by(id=series_id).first() assert series except: raise NotFound() form = ImageForm() tmpl_args = { 'page_title': 'add a new image to “{}”'. format(series.title) } # this fixes a bug where the same id is # getting used more than once in the image form form.id.data = uuid.uuid4() if form.validate_on_submit(): image = upsert_image_from_form(form) filename = save_image(request.files['image']) if filename: image.filename = filename db.session.commit() flash('{} <br>added to {}'.format(image.title, image.series.title)) msg = '[{}] added to [{}]'.format(image.title, image.series.title) current_app.logger.info(msg) else: flash('There was a problem saving the image') return redirect(url_for('Admin.edit_image', image_id=image.id)) if len(form.errors) > 0: flash_form_errors(form.errors) return redirect(url_for('Admin.new_image', series_id=series_id)) return render_template('admin_image.html', form=form, series=series, **tmpl_args)
def edit_image(image_id): try: image = Image.query.filter_by(id=image_id).first() except: raise NotFound() if not image: raise NotFound() series = image.series tmpl_args = { 'page_title': """ editing “{}” in “{}” """.format(image.title, series.title) } form = EditImageForm(obj=image) if form.validate_on_submit(): image = upsert_image_from_form(form) image_file = request.files.get('image') if image_file: filename = save_image(request.files['image']) if filename: image.filename = filename else: flash('There was a problem saving the image') db.session.commit() flash('“{}” has been changed'.format(image.title)) msg = 'Image [{}] in [{}] modified'.format(image.title, series.title) current_app.logger.info(msg) return redirect(url_for('Admin.edit_image', image_id=image.id)) if len(form.errors) > 0: flash_form_errors(form.errors) return redirect(url_for('Admin.edit_image', image_id=image.id)) return render_template('admin_image.html', form=form, series=series, **tmpl_args)
def new_text_link(): """ new text OR link """ text_form = TextForm() link_form = LinkForm() tmpl_args = {'page_title':'add a new text or link'} if request.method == 'POST': form = None if request.form['name'] == 'text': form = text_form model = Text() next_url = url_for('Admin.edit_text', text_id=text_form.id.data) if request.form['name'] == 'link': form = link_form model = Link() next_url = url_for('Admin.edit_link', link_id=link_form.id.data) if not form: return render_template('admin_text.html', text_form=text_form, link_form=link_form, **tmpl_args) valid = form.validate() if not valid: flash_form_errors(form.errors) else: model = update_model_from_form(model, form) db.session.add(model) db.session.commit() name = form.data.get('title') or form.data.get('label') flash('<strong>{}</strong> has been added'.format(name)) msg = '[{}] added to texts/links'.format(name) current_app.logger.info(msg) return redirect(next_url) return render_template('admin_text.html', text_form=text_form, link_form=link_form, **tmpl_args)
def post(self, series_id): self.series = self.get_series(series_id) if not self.series: raise NotFound if self.form.validate_on_submit(): self.get_image_meta() images = [self.process_image(i) for i in request.files.getlist('images')] save_images = [i for i in images if i] image_errors = [i for i in images if not i] # write images to db images_written = self.write_images(save_images) message = '' if images_written: message = '{} images added to {}. '.format( len(save_images), self.series.title ) else: message = 'There was a problem saving the images' if len(image_errors): message += '{} images could not be saved'.format( len(image_errors) ) current_app.logger.info(message) flash(message) if len(self.form.errors) > 0: flash_form_errors(self.form.errors) return redirect(url_for('Admin.bulk_upload', series_id=series_id))