diff --git a/alembic/env.py b/alembic/env.py index 040877bc..8b63773e 100755 --- a/alembic/env.py +++ b/alembic/env.py @@ -61,7 +61,8 @@ def run_migrations_online(): connection = engine.connect() context.configure( connection=connection, - target_metadata=target_metadata + target_metadata=target_metadata, + compare_type=True ) try: diff --git a/alembic/versions/336f4518e8e6_change_integer_to_float_for_done_.py b/alembic/versions/336f4518e8e6_change_integer_to_float_for_done_.py new file mode 100644 index 00000000..cd5c1e36 --- /dev/null +++ b/alembic/versions/336f4518e8e6_change_integer_to_float_for_done_.py @@ -0,0 +1,36 @@ +"""Change integer to float for done/validated + +Revision ID: 336f4518e8e6 +Revises: 3f282468e66e +Create Date: 2014-12-12 22:14:06.904066 + +""" + +# revision identifiers, used by Alembic. +revision = '336f4518e8e6' +down_revision = '3f282468e66e' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + op.alter_column('project', 'done', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_nullable=True) + op.alter_column('project', 'validated', + existing_type=sa.INTEGER(), + type_=sa.Float(), + existing_nullable=True) + + +def downgrade(): + op.alter_column('project', 'validated', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_nullable=True) + op.alter_column('project', 'done', + existing_type=sa.Float(), + type_=sa.INTEGER(), + existing_nullable=True) diff --git a/osmtm/models.py b/osmtm/models.py index f1af1052..8382a303 100644 --- a/osmtm/models.py +++ b/osmtm/models.py @@ -1,8 +1,7 @@ -import math - from sqlalchemy import ( Table, Column, + Float, Integer, BigInteger, Unicode, @@ -453,9 +452,9 @@ class Project(Base, Translatable): priority = Column(Integer, default=2) # percentage of done tasks - done = Column(Integer, default=0) + done = Column(Float, default=0) # percentage of validated tasks - validated = Column(Integer, default=0) + validated = Column(Float, default=0) __table_args__ = (CheckConstraint(priority.in_(range(0, 4))), ) @@ -530,7 +529,7 @@ def get_done(self): if not done: done = 0 - return math.floor(done * 100 / total) if total != 0 else 0 + return round(done * 100 / total, 2) if total != 0 else 0 def get_validated(self): total = DBSession.query(func.sum(ST_Area(Task.geometry))) \ @@ -551,7 +550,7 @@ def get_validated(self): if not validated: validated = 0 - return math.floor(validated * 100 / total) if total != 0 else 0 + return round(validated * 100 / total, 2) if total != 0 else 0 def to_bbox(self): return shape.to_shape(self.area.geometry).bounds diff --git a/osmtm/templates/home.mako b/osmtm/templates/home.mako index a30d3ff7..96d35628 100644 --- a/osmtm/templates/home.mako +++ b/osmtm/templates/home.mako @@ -106,6 +106,7 @@ sorts = [('priority', 'asc', _('High priority first')), <% import markdown import bleach + import math if request.locale_name: project.locale = request.locale_name priority = priorities[project.priority] @@ -143,7 +144,7 @@ sorts = [('priority', 'asc', _('High priority first')),
-  ${project.done + project.validated}% +  ${int(math.floor(project.done + project.validated))}%