| from functools import wraps |
| |
| from ming.orm import ThreadLocalORMSession |
| |
| from allura.model.project import Project, Neighborhood, AppConfig |
| from allura.model.auth import User |
| from allura.model.discuss import Discussion, Thread, Post |
| |
| |
| def flush_on_return(fn): |
| @wraps(fn) |
| def new_fn(*args, **kwargs): |
| result = fn(*args, **kwargs) |
| ThreadLocalORMSession.flush_all() |
| return result |
| return new_fn |
| |
| |
| @flush_on_return |
| def create_project(shortname): |
| neighborhood = create_neighborhood() |
| return Project(shortname=shortname, |
| database_uri='mim://test/myproject_db', |
| neighborhood_id=neighborhood._id, |
| is_root=True) |
| |
| |
| @flush_on_return |
| def create_neighborhood(): |
| neighborhood = Neighborhood(url_prefix='http://example.com/myproject') |
| return neighborhood |
| |
| |
| @flush_on_return |
| def create_app_config(project, mount_point): |
| return AppConfig( |
| project_id=project._id, |
| tool_name='myapp', |
| options={'mount_point': 'my_mounted_app'}, |
| acl=[]) |
| |
| |
| @flush_on_return |
| def create_post(slug): |
| discussion = create_discussion() |
| thread = create_thread(discussion=discussion) |
| author = create_user() |
| return Post(slug=slug, |
| thread_id=thread._id, |
| full_slug='%s:%s' % (thread._id,slug), |
| discussion_id=discussion._id, |
| author_id=author._id) |
| |
| |
| @flush_on_return |
| def create_thread(discussion): |
| return Thread(discussion_id=discussion._id) |
| |
| |
| @flush_on_return |
| def create_discussion(): |
| return Discussion() |
| |
| |
| @flush_on_return |
| def create_user(): |
| return User() |
| |