Mercurial > kallithea
diff rhodecode/controllers/api/api.py @ 3840:dc4644865e8b beta
Implemented simple gist functionality ref #530.
- creation of public/private gists with given lifetime
- rhodecode-gist CLI for quick gist creation
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 11 May 2013 20:24:02 +0200 |
parents | 647fb653048e |
children | 31f8c9d76a26 |
line wrap: on
line diff
--- a/rhodecode/controllers/api/api.py Sat May 11 00:25:05 2013 +0200 +++ b/rhodecode/controllers/api/api.py Sat May 11 20:24:02 2013 +0200 @@ -42,9 +42,10 @@ from rhodecode.model.user import UserModel from rhodecode.model.users_group import UserGroupModel from rhodecode.model.db import Repository, RhodeCodeSetting, UserIpMap,\ - Permission, User + Permission, User, Gist from rhodecode.lib.compat import json from rhodecode.lib.exceptions import DefaultUserException +from rhodecode.model.gist import GistModel log = logging.getLogger(__name__) @@ -888,6 +889,7 @@ fork_name) ) + # perms handled inside def delete_repo(self, apiuser, repoid, forks=Optional(None)): """ Deletes a given repository @@ -1064,3 +1066,44 @@ users_group.users_group_name, repo.repo_name ) ) + + def create_gist(self, apiuser, files, owner=Optional(OAttr('apiuser')), + gist_type=Optional(Gist.GIST_PUBLIC), + gist_lifetime=Optional(-1), + gist_description=Optional('')): + + try: + if isinstance(owner, Optional): + owner = apiuser.user_id + + owner = get_user_or_error(owner) + description = Optional.extract(gist_description) + gist_type = Optional.extract(gist_type) + gist_lifetime = Optional.extract(gist_lifetime) + + # files: { + # 'filename': {'content':'...', 'lexer': null}, + # 'filename2': {'content':'...', 'lexer': null} + #} + gist = GistModel().create(description=description, + owner=owner, + gist_mapping=files, + gist_type=gist_type, + lifetime=gist_lifetime) + Session().commit() + return dict( + msg='created new gist', + gist_url=gist.gist_url(), + gist_id=gist.gist_access_id, + gist_type=gist.gist_type, + files=files.keys() + ) + except Exception: + log.error(traceback.format_exc()) + raise JSONRPCError('failed to create gist') + + def update_gist(self, apiuser): + pass + + def delete_gist(self, apiuser): + pass