The models Module

kallithea.model.__init__

The application’s model objects

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Nov 25, 2010 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

example:
from paste.deploy import appconfig
from pylons import config
from sqlalchemy import engine_from_config
from kallithea.config.environment import load_environment

conf = appconfig('config:development.ini', relative_to = './../../')
load_environment(conf.global_conf, conf.local_conf)

engine = engine_from_config(config, 'sqlalchemy.')
init_model(engine)
# RUN YOUR CODE HERE
class kallithea.model.BaseModel(sa=None)[source]

Base Model for all Kallithea models, it adds sql alchemy session into instance of model

Parameters:sa – If passed it reuses this session instead of creating a new one
classmethod get_all()[source]

Returns all instances of what is defined in cls class variable

kallithea.model.init_model(engine)[source]

Initializes db session, bind the engine with the metadata, Call this before using any of the tables or classes in the model, preferably once in application start

Parameters:engine – engine to bind to

kallithea.model.comment

comments model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Nov 11, 2011 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

kallithea.model.notification

Model for notifications

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Nov 20, 2011 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

kallithea.model.permission

permissions model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Aug 20, 2010 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

class kallithea.model.permission.PermissionModel(sa=None)[source]

Permissions model for Kallithea

create_default_permissions(user, force=False)[source]

Creates only missing default permissions for user, if force is set it resets the default permissions for that user

Parameters:user
create_permissions()[source]

Create permissions for whole system

kallithea.model.users_group

repository permission model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Oct 1, 2011 :author: nvinot, marcink

kallithea.model.repo

Repository model for kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Jun 5, 2010 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

kallithea.model.user_group

repo group model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Jan 25, 2011 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

kallithea.model.scm

Scm model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Apr 9, 2010 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

class kallithea.model.scm.CachedRepoList(db_repo_list, repos_path, order_by=None, perm_set=None)[source]

Cached repo list, uses in-memory cache after initialization, that is super fast

class kallithea.model.scm.ScmModel(sa=None)[source]

Generic Scm Model

commit_change(repo, repo_name, cs, user, author, message, content, f_path)[source]

Commits changes

Parameters:repo – SCM instance
create_nodes(user, repo, message, nodes, parent_cs=None, author=None, trigger_push_hook=True)[source]

Commits given multiple nodes into repo

Parameters:
  • user – Kallithea User object or user_id, the commiter
  • repo – Kallithea Repository object
  • message – commit message
  • nodes – mapping {filename:{‘content’:content},...}
  • parent_cs – parent changeset, can be empty than it’s initial commit
  • author – author of commit, cna be different that commiter only for git
  • trigger_push_hook – trigger push hooks
Returns:

new commited changeset

delete_nodes(user, repo, message, nodes, parent_cs=None, author=None, trigger_push_hook=True)[source]

Deletes given multiple nodes into repo

Parameters:
  • user – Kallithea User object or user_id, the commiter
  • repo – Kallithea Repository object
  • message – commit message
  • nodes – mapping {filename:{‘content’:content},...}
  • parent_cs – parent changeset, can be empty than it’s initial commit
  • author – author of commit, cna be different that commiter only for git
  • trigger_push_hook – trigger push hooks
Returns:

new commited changeset after deletion

get_nodes(repo_name, revision, root_path='/', flat=True)[source]

recursive walk in root dir and return a set of all path in that dir based on repository walk function

Parameters:
  • repo_name – name of repository
  • revision – revision for which to list nodes
  • root_path – root path to list
  • flat – return as a list, if False returns a dict with decription
get_repo_landing_revs(repo=None)[source]

Generates select option with tags branches and bookmarks (for hg only) grouped by type

Parameters:repo
get_repos(all_repos=None, sort_key=None, simple=False)[source]

Get all repos from db and for each repo create it’s backend instance and fill that backed with information from database

Parameters:
  • all_repos – list of repository names as strings give specific repositories list, good for filtering
  • sort_key – initial sorting of repos
  • simple – use SimpleCachedList - one without the SCM info
install_git_hook(repo, force_create=False)[source]

Creates a kallithea hook inside a git repository

Parameters:
  • repo – Instance of VCS repo
  • force_create – Create even if same name hook exists
mark_for_invalidation(repo_name, delete=False)[source]

Mark caches of this repo invalid in the database.

Parameters:repo_name – the repo for which caches should be marked invalid
repo_scan(repos_path=None)[source]

Listing of repositories in given path. This path should not be a repository itself. Return a dictionary of repository objects

Parameters:repos_path – path to directory containing repositories
repos_path[source]

Gets the repositories root path from database

class kallithea.model.scm.SimpleCachedRepoList(db_repo_list, repos_path, order_by=None, perm_set=None)[source]

Lighter version of CachedRepoList without the scm initialisation

kallithea.model.user

users model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Apr 9, 2010 :author: marcink :copyright: (c) 2013 RhodeCode GmbH, and others. :license: GPLv3, see LICENSE.md for more details.

kallithea.model.users_group

user group model for Kallithea

This file was forked by the Kallithea project in July 2014. Original author and date, and relevant copyright and licensing information is below: :created_on: Oct 1, 2011 :author: nvinot, marcink