예제 #1
0
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)
예제 #2
0
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>&ldquo;{}&rdquo;</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 &ldquo;{}&rdquo;'.format(text.title)}

    return render_template('admin_edit_text.html', text=text, form=form, **tmpl_args)
예제 #3
0
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>&ldquo;{}&rdquo; 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 &ldquo;{}&rdquo;'.format(link.label)}

    return render_template('admin_edit_link.html', link=link, form=form, **tmpl_args)
예제 #4
0
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>&ldquo;{}&rdquo;</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) 
예제 #5
0
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 &ldquo;{}&rdquo;'.
        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)
예제 #6
0
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 &ldquo;{}&rdquo; in &ldquo;{}&rdquo;
        """.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('&ldquo;{}&rdquo; 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)
예제 #7
0
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)
예제 #8
0
    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))