コード例 #1
0
ファイル: app.py プロジェクト: Curtis-S/Journal-web-app
def add_edit_entry(entry_id=None):
    if entry_id:
        entry = models.Entry.get(models.Entry.id == entry_id)
        form = forms.EditForm()
        if form.validate_on_submit():
            query = (models.Entry.update({
                models.Entry.title:
                form.title.data.strip(),
                models.Entry.time_spent:
                form.time_spent.data,
                models.Entry.date:
                form.date.data,
                models.Entry.what_i_learned:
                form.what_i_learned.data.strip(),
                models.Entry.resources:
                form.resources.data.strip()
            }).where(models.Entry.id == entry_id))
            query.execute()

            return redirect(url_for('detail', entry_id=entry_id))
        return render_template('edit.html', form=form, entry=entry)
    else:
        form = forms.EntryForm()
        if form.validate_on_submit():
            models.Entry.create(
                title=form.title.data.strip(),
                date=form.date.data,
                time_spent=form.time_spent.data,
                what_i_learned=form.what_i_learned.data.strip(),
                resources=form.resources.data.strip())
            return redirect(url_for('index'))
        return render_template('new.html', form=form)
コード例 #2
0
def entries_edit(id):
    try:
        journal_entry = models.Entry.get_by_id(id)
    except models.DoesNotExist:
        flash("Journal entry does not exist!", "error")
        return redirect(url_for('index'))
    else:
        form = forms.EditForm(title=journal_entry.title,
                              date=journal_entry.date,
                              time=journal_entry.time,
                              learned=journal_entry.learned,
                              resources=journal_entry.resources)

        if form.validate_on_submit():
            models.Entry.update(user=g.user._get_current_object(),
                                title=form.title.data.strip(),
                                date=form.date.data,
                                time=form.time.data,
                                learned=form.learned.data.strip(),
                                resources=form.resources.data.strip()).where(
                                    models.Entry.id == id).execute()
            flash("Entry Updated!", "success")
            return redirect('/entries/{}'.format(id))
        else:
            print('here now')
            return render_template('edit.html', form=form, entry=journal_entry)
コード例 #3
0
ファイル: app.py プロジェクト: baiyecha404/CTFWEBchallenge
def edit(task_id):
    if 'username' not in session:
        return redirect('/')

    try:
        task_id = int(task_id)
    except:
        return render_template('error.html', message='Invalid task'), 400

    user = db.get(session['username'])
    task = next((task for task in user['tasks'] if task['id'] == task_id),
                None)

    if task is None:
        return render_template('error.html', message='Task not found'), 404

    if request.method == 'GET':
        return render_template('edit.html', id=task['id'])
    elif request.method == 'POST':
        form = forms.EditForm(request.form)

        if not form.validate():
            return render_template('error.html', message='Invalid edit'), 400

        for attribute in ['title', 'content', 'priority']:
            if form[attribute].data:
                task[attribute] = form[attribute].data

        db.put(session['username'], user)

        return redirect('/tasks')
コード例 #4
0
ファイル: views.py プロジェクト: Agheb/cuddly-bookshelf
def edit_book(bookid):
    """ Edit book form view """
    book = Item.query.get(bookid)
    # pass existing image url for preview in form
    img_url = Item.query.get(bookid).img_url

    # pre-populate edit form
    form = forms.EditForm(obj=book)

    if request.method == 'POST':
        if form.validate_on_submit():

            # check for new image and update it in db
            if request.files['image']:
                img_filename = images.save(request.files['image'])
                img_url = images.url(img_filename)
                book.img_filename = img_filename
                book.img_url = img_url

            form.populate_obj(book)
            db.session.commit()
            return redirect(url_for('show_collection'))
        else:
            return render_template('edit_form.html',
                                   form=form,
                                   id=bookid,
                                   img=img_url)
    elif request.method == 'GET':
        return render_template('edit_form.html',
                               form=form,
                               id=bookid,
                               img=img_url)
コード例 #5
0
def edit_post(id):
    """Edit a journal entry"""
    try:
        post = models.Post.get_by_id(id)
    except models.DoesNotExist:
        abort(404)
    else:
        form = forms.EditForm(title=post.title,
                              date=post.date,
                              time_spent=post.time_spent,
                              what_i_learned=post.what_i_learned,
                              resources_to_remember=post.resources_to_remember)
        if form.validate_on_submit():
            post.title = form.title.data.strip()
            post.date_created = form.date.data
            post.time_spent = form.time_spent.data
            post.what_i_learned = form.what_i_learned.data.strip()
            post.resources_to_remember = form.resources_to_remember.data.strip(
            )
            post.save()
            flash("Entry has been updated", "success")
            models.PostTags.tag_new_post(
                models.Post.get(title=form.title.data.strip()))
            models.PostTags.remove_existing_tag(
                models.Post.get(title=form.title.data.strip()))
            return redirect(url_for('view_posts'))
        return render_template('edit.html', form=form, post=post)
コード例 #6
0
ファイル: app.py プロジェクト: janthenelli/Learning-Journal
def edit_entry(id):
    """Edit a journal entry"""
    try:
        entry = models.Entry.get_by_id(id)
    except models.DoesNotExist:
        abort(404)
    else:
        form = forms.EditForm(title=entry.title,
                              time_spent=entry.time_spent,
                              date_created=entry.date_created,
                              content=entry.content,
                              resources=entry.resources)
        if form.validate_on_submit():
            entry.title = form.title.data.strip()
            entry.time_spent = form.time_spent.data
            entry.date_created = form.date_created.data
            entry.content = form.content.data.strip()
            entry.resources = form.resources.data.strip()
            entry.save()
            flash("Entry has been updated", "success")
            models.EntryTags.tag_new_entry(
                models.Entry.get(title=form.title.data.strip()))
            models.EntryTags.remove_existing_tag(
                models.Entry.get(title=form.title.data.strip()))
            return redirect(url_for('view_entries'))
        return render_template('edit.html', form=form, entry=entry)
コード例 #7
0
def edit_entry(id):
    try:
        entry = models.Entry.get(models.Entry.id == id)
    except models.DoesNotExist:
        abort(404)
    else:
        form = forms.EditForm(title=entry.title,
                              date=entry.date,
                              time_spent=entry.time_spent,
                              learned=entry.learned,
                              resources=entry.resources)
        if form.validate_on_submit():
            entry.title = form.title.data.strip()
            entry.date = form.date.data
            entry.time_spent = form.time_spent.data
            entry.learned = form.learned.data.strip()
            entry.resources = form.resources.data.strip()
            entry.save()
            flash("Entry updated.", "success")
            models.EntryTag.remove_tag(
                models.Entry.get(title=form.title.data.strip()))
            models.EntryTag.tag_new_entry(
                models.Entry.get(title=form.title.data.strip()))
            return redirect(url_for('index'))
    return render_template('edit.html', form=form, entry=entry)
コード例 #8
0
def edit_post(post_id):
    form = forms.EditForm()
    if form.validate_on_submit():
        query = models.Post.update(content=form.content.data.strip()).where(
            models.Post.id == post_id)
        query.execute()
        flash("Message Saved: Thanks!", "success")
        user = current_user
        return redirect(url_for('profile', username=user.username))
    return render_template('edit_post.html', form=form)
コード例 #9
0
def edit(entry_title):
    '''Allows user to edit a journal entry'''
    post = models.Entry.get(models.Entry.title == entry_title)
    form = forms.EditForm(obj=post)
    if form.validate_on_submit():
        flash('Entry update successful!', 'success')
        models.Entry.edit_entry(entry_title, form.title.data, form.date.data,
                                form.timespent.data, form.learned.data,
                                form.resources.data)
        return redirect(url_for('list'))
    else:
        flash('Failed!')
    print(form.errors)
    return render_template('edit.html', form=form)
コード例 #10
0
def edit_profile(id):
    cur = mysql.connection.cursor()
    cur.execute("SELECT * FROM users WHERE id = %s", (id))
    user_edit = cur.fetchone()
    cur.close()

    form = forms.EditForm(request.form)
    form.name.data = user_edit['name']
    form.email.data = user_edit['email']

    print(form.validate())

    if request.method == 'POST' and form.validate():
        print(request.method)

        if request.form['password']:
            password = sha256_crypt.encrypt(str(request.form['password']))
        else:
            password = user_edit['password']

        name = request.form['name']
        email = request.form['email']

        print(name)
        print(email)
        print(password)

        #Create cursor
        cur = mysql.connection.cursor()
        #Execute
        if user_edit['name'] != name:
            cur.execute("UPDATE users SET name = %s WHERE id = %s", (name, id))
            flash('Tu nombre quedo editado', 'success')
        if user_edit['email'] != email:
            cur.execute("UPDATE users SET email = %s WHERE id = %s",
                        (email, id))
            flash('Tu email quedo editado', 'success')
        if user_edit['password'] != password:
            cur.execute("UPDATE users SET password = %s WHERE id = %s",
                        (password, id))
            flash('Tu password quedo editado', 'success')

        # Commit to DB
        mysql.connection.commit()
        # Close connection
        cur.close()
        return redirect(url_for('my_notes'))

    return render_template('edit_profile.html', form=form)
コード例 #11
0
def edit(id):
    """Edit the entry."""
    form = forms.EditForm()
    entry = models.Entries.select().where(models.Entries.id == id)
    if form.validate_on_submit():
        try:
            record = models.Entries.get(models.Entries.id == id)
            record.title = form.title.data.strip()
            record.slug = utils.slugcheck(form)
            record.date = form.date.data
            record.timeSpent = form.timeSpent.data
            record.whatILearned = form.whatILearned.data
            record.resourcesToRemember = form.ResourcesToRemember.data
            record.save()
            # process the tags
            new_tags = utils.tagger(form.tags.data)
            tags_in_db = {tag.tag for tag in models.Entries.tags(id)}
            tags_to_delete = tags_in_db - new_tags
            tags_to_add = new_tags - tags_in_db

            # Remove unused tag references
            for tag_to_delete in tags_to_delete:
                tagref = (models.Tag.select()
                          .where(models.Tag.tag == tag_to_delete))
                for tag in tagref:
                    tagrecord = (models.EntriesTagged
                                 .get(models.EntriesTagged
                                            .entry_ref == id and models
                                            .EntriesTagged.tag_ref == tag.id))
                    tagrecord.delete_instance()

            # Add any new tags
            utils.add_tags(tags_to_add, id)
            flash("Entry edited successfully!", "success")
            return redirect(url_for('index'))
        except models.IntegrityError:
            flash("An error occured. Please try again.", "error")
    for field, errors in form.errors.items():
        for error in errors:
            flash(error, "error")
    return render_template('edit.html', form=form, entry=entry)
コード例 #12
0
def edit_entries(entry_id):
    """
    handles logic for updating both Entry and Tags

    The entry_id is passed to the view through the URL
    then the that id corresponding entry is queried: entry_to_edit
    corresponding tags queried: entry_tags
    entry_to_edit attr are processed before sending data to form
    to ensure correct formatting of data. data is populated into
    form1 ann form2 if form validates on submit
    the form data is assigned to each attribute of entry_to_edit
    then update query called upon the instance corresponding to
    entry_to_edit and rows are updated new data.
    if form2 is updated and validates on submit data is preprocessed
    into  list lists items are checked for duplication and membership:
    classmethods create_or_get_tags is called if new tags are present
    and classmethod Journaltags.create_relationship is called to instantiate
    many to many relationship between entry_to_edit and tags. if tags are deleted
    by user JournalTags.destroy_retionship classmethod is called severing relationship
    between tags and entry

    @var:form
    @type:<forms.EditForm obj>
    @var:tags
    @type: list[str]
    @var:parsed_tags
    @type: str()
    @param entry_id:
    @type entry_id: int
    @return: template render and response edit.html
    @rtype: Union[str, None, werkzeug.wrappers.Response]


    """
    # store value of query Entry with id that matches value passed
    # queries
    entry_to_edit = models.Entry.select().where(
        models.Entry.id == entry_id).get()
    entry_tags = (models.Tag.select().join(models.JournalTags).where(
        models.JournalTags.entry == entry_to_edit).order_by(models.Tag.name))

    # all_tags = models.Tag.select()
    # variables

    tags = [tag.name for tag in entry_tags]
    parsed_tags = ','.join(tags)
    entry_owner = entry_to_edit.user
    entry_to_edit.date = datetime.strptime(entry_to_edit.date, '%Y-%m-%d')
    entry_to_edit.resources = str.join('\n', entry_to_edit.resources)
    entry_to_edit.time_spent = entry_to_edit.time_spent.hour * 60 + entry_to_edit.time_spent.minute

    form = forms.EditForm(obj=entry_to_edit)

    form1 = forms.TagForm(name=parsed_tags)

    # constraints = if owner of the Entry is not the current user do not allow edit
    if current_user == entry_owner:
        # populate the entry form with data from select query
        # upon the submit button update the contents of the entry

        if form.validate_on_submit():
            entry_to_edit.title = form.title.data
            entry_to_edit.date = form.date.data
            entry_to_edit.time_spent = timedelta(
                minutes=float(form.time_spent.data))
            entry_to_edit.knowledge = form.knowledge.data
            entry_to_edit.resources = form.resources.data.splitlines()
            models.Entry.save(entry_to_edit)

        if form1.validate_on_submit():
            # first convert form data into a list
            tag_data = form1.name.data.split(',')
            # iterate through unedited tags
            for tag_obj in entry_tags:
                # if the tag is not found in form data the relationship to the entry is broken
                if tag_obj.name not in tag_data:
                    # break relations is a class method performs delete query at the through table
                    models.JournalTags.break_relations(tag_obj, entry_to_edit)
            # iterate through the form tag list
            for item in tag_data:
                if item not in tags:
                    tag_data[:].remove(item)
                    tag = [models.Tag.get_or_create_tags(item)]
                    models.JournalTags.create_relations(entry_to_edit, tag)

            # alert the user that the update has taken place
            flash('hey we updated your entry', category='success')
            return redirect(url_for('index'))
    else:
        flash('you need to be the entries owner to edit this',
              category='error')
        return redirect(url_for('index'))

    return render_template('edit.html', form=form, form1=form1)