Пример #1
0
def best(monkey_id):
    """Make a monkey your best friend."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)
    if not dba.set_best_friend(monkey_self, monkey):
        flash('Error setting best friend!')
    return redirect(request.referrer or url_for('index'))
Пример #2
0
def add(monkey_id):
    """Add a monkey to friends."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)
    if not dba.add_friend(monkey_self, monkey):
        flash('Error adding friend!')
    return redirect(request.referrer or url_for('index'))
Пример #3
0
def add(monkey_id):
    """Add a monkey to friends."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)
    if not dba.add_friend(monkey_self, monkey):
        flash('Error adding friend!')
    return redirect(request.referrer or url_for('index'))
Пример #4
0
def profile(monkey_id):
    """Display a monkey's profile, own or not."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    # This condition avoids running a second query when viewing own
    # profile:
    if monkey_id == session['id']:
        # Viewing your own profile
        monkey = monkey_self
    else:
        # Viewing somebody else's profile
        monkey = dba.get_monkey_by_id(monkey_id)

    if monkey:
        profile = dba.get_monkey_profile(monkey)
    else:
        # Non-existent id in the URL
        return redirect(url_for('index'))

    return render_template('profile.html',
                            monkey=monkey,
                            monkey_self=monkey_self,
                            mutual_friends=profile['mutual_friends'],
                            other_friends=profile['other_friends'],
                            also_friend_of=profile['also_friend_of'])
Пример #5
0
def best(monkey_id):
    """Make a monkey your best friend."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)
    if not dba.set_best_friend(monkey_self, monkey):
        flash('Error setting best friend!')
    return redirect(request.referrer or url_for('index'))
Пример #6
0
def profile(monkey_id):
    """Display a monkey's profile, own or not."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    # This condition avoids running a second query when viewing own
    # profile:
    if monkey_id == session['id']:
        # Viewing your own profile
        monkey = monkey_self
    else:
        # Viewing somebody else's profile
        monkey = dba.get_monkey_by_id(monkey_id)

    if monkey:
        profile = dba.get_monkey_profile(monkey)
    else:
        # Non-existent id in the URL
        return redirect(url_for('index'))

    return render_template('profile.html',
                           monkey=monkey,
                           monkey_self=monkey_self,
                           mutual_friends=profile['mutual_friends'],
                           other_friends=profile['other_friends'],
                           also_friend_of=profile['also_friend_of'])
Пример #7
0
def remove(monkey_id):
    """Remove a monkey from friends."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)

    # Only a friend can be the best friend:
    if monkey is monkey_self.best_friend:
        if not dba.clear_best_friend(monkey_self):
            flash('Error clearing best friend!')

    if not dba.remove_friend(monkey_self, monkey):
        flash('Error removing friend!')
    return redirect(request.referrer or url_for('index'))
Пример #8
0
def remove(monkey_id):
    """Remove a monkey from friends."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    monkey = dba.get_monkey_by_id(monkey_id)

    # Only a friend can be the best friend:
    if monkey is monkey_self.best_friend:
        if not dba.clear_best_friend(monkey_self):
            flash('Error clearing best friend!')

    if not dba.remove_friend(monkey_self, monkey):
        flash('Error removing friend!')
    return redirect(request.referrer or url_for('index'))
Пример #9
0
def list(order=None, page=1):
    """List all monkeys."""
    # Handling unacceptable sort orders:
    if order is not None and order not in ['best_friend', 'friends']:
        return redirect(url_for('list'))

    # Counting pages:
    monkeys_per_page = 10
    page_count = math.ceil(dba.count_monkeys() / monkeys_per_page)
    
    # At least one page must always be present:
    if page_count < 1:
        page_count = 1

    # Handling unacceptable page numbers:
    if page < 1 or page > page_count:
        return redirect(url_for('list'))

    monkey_self = dba.get_monkey_by_id(session['id'])
    monkeys = dba.list_monkeys(order, page, monkeys_per_page)
    if monkey_self is None or monkeys is None:
        return redirect(url_for('index'))

    return render_template('list.html', monkeys=monkeys,
                            monkey_self=monkey_self, order=order)
Пример #10
0
def list(order=None, page=1):
    """List all monkeys."""
    # Handling unacceptable sort orders:
    if order is not None and order not in ['best_friend', 'friends']:
        return redirect(url_for('list'))

    # Counting pages:
    monkeys_per_page = 10
    page_count = math.ceil(dba.count_monkeys() / monkeys_per_page)

    # At least one page must always be present:
    if page_count < 1:
        page_count = 1

    # Handling unacceptable page numbers:
    if page < 1 or page > page_count:
        return redirect(url_for('list'))

    monkey_self = dba.get_monkey_by_id(session['id'])
    monkeys = dba.list_monkeys(order, page, monkeys_per_page)
    if monkey_self is None or monkeys is None:
        return redirect(url_for('index'))

    return render_template('list.html',
                           monkeys=monkeys,
                           monkey_self=monkey_self,
                           order=order)
Пример #11
0
def delete(confirmed=None):
    """Delete monkey's profile."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    if confirmed == 'confirmed':
        if dba.delete_monkey(monkey_self):
            # If deleted, log out:
            session.pop('id', None)
            flash('Profile deleted')
            return redirect(url_for('index'))
        else:
            flash('Error deleting profile!')
            return redirect(url_for('edit'))
    else:
        return render_template('delete.html', monkey_self=monkey_self)
Пример #12
0
def delete(confirmed=None):
    """Delete monkey's profile."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    if confirmed == 'confirmed':
        if dba.delete_monkey(monkey_self):
            # If deleted, log out:
            session.pop('id', None)
            flash('Profile deleted')
            return redirect(url_for('index'))
        else:
            flash('Error deleting profile!')
            return redirect(url_for('edit'))
    else:
        return render_template('delete.html', monkey_self=monkey_self)
Пример #13
0
def edit():
    """Edit monkey's own profile."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    # If no formdata is present in the request, the form is populated
    # from the object:
    form = ProfileEditForm(request.form, monkey_self)

    if request.method == 'POST' and form.validate():
        # Check for email uniqueness by querying for another monkey
        # with the same address:
        if dba.check_unique_email(form['email'].data, monkey_self.id):
            # If no duplicate found:
            if dba.edit_monkey_profile(monkey_self, form):
                flash('Changes saved')
            else:
                flash('Error saving changes!')
        else:
            form.email.errors.append(
                'This e-mail address is registered with another user')

    return render_template('edit.html', form=form, monkey_self=monkey_self)
Пример #14
0
def edit():
    """Edit monkey's own profile."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if monkey_self is None:
        return redirect(url_for('index'))

    # If no formdata is present in the request, the form is populated
    # from the object:
    form = ProfileEditForm(request.form, monkey_self)

    if request.method == 'POST' and form.validate():
        # Check for email uniqueness by querying for another monkey
        # with the same address:
        if dba.check_unique_email(form['email'].data, monkey_self.id):
            # If no duplicate found:
            if dba.edit_monkey_profile(monkey_self, form):
                flash('Changes saved')
            else:
                flash('Error saving changes!')
        else:
            form.email.errors.append(
                'This e-mail address is registered with another user')

    return render_template('edit.html', form=form, monkey_self=monkey_self)
Пример #15
0
 def test_get_monkey_by_id(self, test_monkey):
     """Test get_monkey_by_id()."""
     monkey = test_monkey
     same_monkey = dba.get_monkey_by_id(monkey.id)
     assert isinstance(same_monkey, Monkey)
     assert same_monkey.id == monkey.id
Пример #16
0
def clear_best():
    """Clear your best friend."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if not dba.clear_best_friend(monkey_self):
        flash('Error clearing best friend!')
    return redirect(request.referrer or url_for('index'))
Пример #17
0
def index():
    """Display the index page, logged in or not."""
    monkey_self = None
    if 'id' in session:
        monkey_self = dba.get_monkey_by_id(session['id'])
    return render_template('index.html', monkey_self=monkey_self)
Пример #18
0
def clear_best():
    """Clear your best friend."""
    monkey_self = dba.get_monkey_by_id(session['id'])
    if not dba.clear_best_friend(monkey_self):
        flash('Error clearing best friend!')
    return redirect(request.referrer or url_for('index'))
Пример #19
0
def index():
    """Display the index page, logged in or not."""
    monkey_self = None
    if 'id' in session:
        monkey_self = dba.get_monkey_by_id(session['id'])
    return render_template('index.html', monkey_self=monkey_self)