def test_project_task_users(self): import transaction from osmtm.models import Task, TaskState, TaskLock, User, DBSession from . import USER1_ID, USER2_ID project_id = self.create_project() ''' No contributions, users sorted alphabetically ''' res = self.testapp.get('/project/%d/task/2/users' % project_id, status=200, xhr=True) self.assertEqual(res.json[0], u'admin_user') task_id = 2 task = DBSession.query(Task).get((project_id, task_id)) user1 = DBSession.query(User).get(USER1_ID) task.states.append(TaskState(state=TaskState.state_done, user=user1)) user2 = DBSession.query(User).get(USER2_ID) task.locks.append(TaskLock(lock=True, user=user2)) DBSession.add(task) transaction.commit() ''' Contributors and then lockers should appear first ''' res = self.testapp.get('/project/%d/task/2/users' % project_id, status=200, xhr=True) self.assertEqual(res.json[0], u'user1') self.assertEqual(res.json[1], u'user2')
def test_task_random__bordering_busy_tasks(self): import geoalchemy2 import shapely import transaction from osmtm.models import Task, TaskLock, Area, Project, User, DBSession shape = shapely.geometry.Polygon([(7.23, 41.25), (7.23, 41.12), (7.41, 41.20)]) geometry = geoalchemy2.shape.from_shape(shape, 4326) area = Area(geometry) project = Project(u'test project') project.area = area project.auto_fill(12) DBSession.add(project) DBSession.flush() project_id = project.id user2 = DBSession.query(User).filter(User.id == self.user2_id).one() task = DBSession.query(Task).filter(Task.project_id == project_id) \ .first() task.locks.append(TaskLock(user=user2, lock=True)) DBSession.add(task) transaction.commit() headers = self.login_as_user1() res = self.testapp.get('/project/%d/random' % project_id, status=200, headers=headers, xhr=True) self.assertTrue(res.json['success'])
session_v2.execute(d) d = TaskLock.__table__.delete( and_(TaskLock.project_id == job.id, TaskLock.task_id == task.id)) session_v2.execute(d) # initial state task_state = TaskState() task_state.date = datetime.datetime(2010, 01, 01) task_state.task_id = task.id task_state.project_id = project_id session_v2.add(task_state) # initial state task_lock = TaskLock() task_lock.date = datetime.datetime(2010, 01, 01) task_lock.task_id = task.id task_lock.project_id = project_id session_v2.add(task_lock) prev_checkin = None for h in session_v1.query(tiles_history) \ .filter( tiles_history.c.job_id == job.id, tiles_history.c.x == tile.x, tiles_history.c.y == tile.y, tiles_history.c.zoom == tile.zoom) \ .order_by('tiles_history."update"'): # noqa # we don't care about locks (checkout)
and_( TaskLock.project_id == job.id, TaskLock.task_id == task.id ) ) session_v2.execute(d) # initial state task_state = TaskState() task_state.date = datetime.datetime(2010, 01, 01) task_state.task_id = task.id task_state.project_id = project_id session_v2.add(task_state) # initial state task_lock = TaskLock() task_lock.date = datetime.datetime(2010, 01, 01) task_lock.task_id = task.id task_lock.project_id = project_id session_v2.add(task_lock) prev_checkin = None for h in session_v1.query(tiles_history) \ .filter( tiles_history.c.job_id == job.id, tiles_history.c.x == tile.x, tiles_history.c.y == tile.y, tiles_history.c.zoom == tile.zoom) \ .order_by('tiles_history."update"'): # noqa # we don't care about locks (checkout)