From 63db9222698f6a809a0814c9be19f077c777bd28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Wed, 21 Jun 2017 02:48:07 +0200 Subject: [PATCH 1/2] Make all imports relative --- budget/api.py | 6 +++--- budget/forms.py | 5 +++-- budget/manage.py | 8 +++++--- budget/run.py | 8 ++++---- budget/tests/tests.py | 6 +++--- budget/web.py | 17 ++++++++++------- dev-requirements.txt | 1 + tox.ini | 2 +- 8 files changed, 30 insertions(+), 23 deletions(-) diff --git a/budget/api.py b/budget/api.py index 4b991bdf..7ce6a34f 100644 --- a/budget/api.py +++ b/budget/api.py @@ -2,9 +2,9 @@ from flask import Blueprint, request from flask_rest import RESTResource, need_auth -from models import db, Project, Person, Bill -from forms import (ProjectForm, EditProjectForm, MemberForm, - get_billform_for) +from .models import db, Project, Person, Bill +from .forms import (ProjectForm, EditProjectForm, MemberForm, + get_billform_for) api = Blueprint("api", __name__, url_prefix="/api") diff --git a/budget/forms.py b/budget/forms.py index 06df7430..bd7fc5b5 100644 --- a/budget/forms.py +++ b/budget/forms.py @@ -7,10 +7,11 @@ from flask_babel import lazy_gettext as _ from flask import request from wtforms.widgets import html_params -from models import Project, Person from datetime import datetime from jinja2 import Markup -from utils import slugify + +from .models import Project, Person +from .utils import slugify def get_billform_for(project, set_default=True, **kwargs): """Return an instance of BillForm configured for a particular project. diff --git a/budget/manage.py b/budget/manage.py index 94a21a27..dfae6c25 100755 --- a/budget/manage.py +++ b/budget/manage.py @@ -3,14 +3,16 @@ from flask_script import Manager from flask_migrate import Migrate, MigrateCommand -from run import app -from models import db +from .run import app +from .models import db migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand) +def main(): + manager.run() if __name__ == '__main__': - manager.run() + main() diff --git a/budget/run.py b/budget/run.py index 00d43264..181967d1 100644 --- a/budget/run.py +++ b/budget/run.py @@ -7,10 +7,10 @@ from flask_babel import Babel from flask_migrate import Migrate, upgrade, stamp from raven.contrib.flask import Sentry -from web import main, db, mail -from api import api -from utils import PrefixedWSGI -from utils import minimal_round +from .web import main, db, mail +from .api import api +from .utils import PrefixedWSGI +from .utils import minimal_round app = Flask(__name__, instance_path='/etc/ihatemoney', instance_relative_config=True) diff --git a/budget/tests/tests.py b/budget/tests/tests.py index a1cedfad..6611d8e2 100644 --- a/budget/tests/tests.py +++ b/budget/tests/tests.py @@ -16,9 +16,9 @@ from flask import session if 'IHATEMONEY_SETTINGS_FILE_PATH' in os.environ: del os.environ['IHATEMONEY_SETTINGS_FILE_PATH'] -import run -import models -import utils +from .. import run +from .. import models +from .. import utils __HERE__ = os.path.dirname(os.path.abspath(__file__)) diff --git a/budget/web.py b/budget/web.py index 3bfa73a1..f11a2535 100644 --- a/budget/web.py +++ b/budget/web.py @@ -9,8 +9,10 @@ some shortcuts to make your life better when coding (see `pull_project` and `add_project_id` for a quick overview) """ -from flask import Blueprint, current_app, flash, g, redirect, \ - render_template, request, session, url_for, send_file +from flask import ( + Blueprint, current_app, flash, g, redirect, render_template, request, + session, url_for, send_file +) from flask_mail import Mail, Message from flask_babel import get_locale, gettext as _ from smtplib import SMTPRecipientsRefused @@ -18,12 +20,13 @@ import werkzeug from sqlalchemy import orm from functools import wraps -# local modules -from models import db, Project, Person, Bill -from forms import AdminAuthenticationForm, AuthenticationForm, EditProjectForm, \ - InviteForm, MemberForm, PasswordReminder, ProjectForm, get_billform_for, \ +from .models import db, Project, Person, Bill +from .forms import ( + AdminAuthenticationForm, AuthenticationForm, EditProjectForm, + InviteForm, MemberForm, PasswordReminder, ProjectForm, get_billform_for, ExportForm -from utils import Redirect303, list_of_dicts2json, list_of_dicts2csv +) +from .utils import Redirect303, list_of_dicts2json, list_of_dicts2csv main = Blueprint("main", __name__) mail = Mail() diff --git a/dev-requirements.txt b/dev-requirements.txt index 0bbb0aa0..8795457f 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,2 +1,3 @@ zest.releaser tox +pytest diff --git a/tox.ini b/tox.ini index 23f54f49..b918bdbe 100644 --- a/tox.ini +++ b/tox.ini @@ -6,7 +6,7 @@ skip_missing_interpreters = True commands = python --version - python -m unittest discover -s budget + py.test budget/tests/tests.py deps = -rdev-requirements.txt -rrequirements.txt From 5f25e07b5b851815091d860eb363771a5288f50e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Wed, 21 Jun 2017 02:51:52 +0200 Subject: [PATCH 2/2] Add a ihatemoney command --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 49dab323..5db9747f 100644 --- a/setup.py +++ b/setup.py @@ -37,6 +37,9 @@ ENTRY_POINTS = { 'paste.app_factory': [ 'main = budget.run:main', ], + 'console_scripts': [ + 'ihatemoney = budget.manage:main' + ] }