Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
7f18ef8f
Commit
7f18ef8f
authored
Mar 14, 2012
by
Michal Čihař
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
bd4655b1
d096ae50
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
17 deletions
+59
-17
docs/admin.rst
docs/admin.rst
+9
-2
trans/api.py
trans/api.py
+48
-0
trans/views.py
trans/views.py
+0
-14
urls.py
urls.py
+2
-1
No files found.
docs/admin.rst
View file @
7f18ef8f
...
...
@@ -83,8 +83,15 @@ Interacting with others
-----------------------
You can trigger update of underlaying git repository for every subproject by
accessing URL :file:`/hooks/p/project/subproject/update/`. This can be used for
example as as Post-Receive URLs on Github.
accessing URL :file:`/hooks/p/project/subproject/update/`.
For GitHub, there is a special URL :file:`/hooks/github/`, which parses GitHub
notifications and updates related projects automatically.
.. note::
The GitHub notification relies on Git urls you use to be in form
git://github.com/owner/repo.git
.. _privileges:
...
...
trans/api.py
0 → 100644
View file @
7f18ef8f
from
django.conf
import
settings
from
django.views.decorators.csrf
import
csrf_exempt
from
django.http
import
HttpResponse
,
HttpResponseRedirect
,
HttpResponseNotAllowed
,
HttpResponseNotFound
,
HttpResponseBadRequest
from
trans.models
import
Project
,
SubProject
,
Translation
,
Unit
,
Suggestion
,
Check
from
django.shortcuts
import
get_object_or_404
import
json
import
logging
logger
=
logging
.
getLogger
(
'weblate'
)
@
csrf_exempt
def
update_subproject
(
request
,
project
,
subproject
):
'''
API hook for updating git repos.
'''
if
not
settings
.
ENABLE_HOOKS
:
return
HttpResponseNotAllowed
([])
obj
=
get_object_or_404
(
SubProject
,
slug
=
subproject
,
project__slug
=
project
)
obj
.
update_branch
()
obj
.
create_translations
()
return
HttpResponse
(
'updated'
)
@
csrf_exempt
def
github_hook
(
request
):
'''
API to handle commit hooks from Github.
'''
if
not
settings
.
ENABLE_HOOKS
:
return
HttpResponseNotAllowed
([])
if
request
.
method
!=
'POST'
:
return
HttpResponseNotAllowed
([
'POST'
])
try
:
data
=
json
.
loads
(
request
.
raw_post_data
)
except
ValueError
:
return
HttpResponseBadRequest
(
'could not parse json!'
)
repo
=
'git://github.com/%s/%s.git'
%
(
data
[
'repository'
][
'owner'
][
'name'
],
data
[
'repository'
][
'name'
],
)
logger
.
info
(
'received GitHub notification on repository %s'
,
repo
)
for
s
in
SubProject
.
objects
.
filter
(
repo
=
repo
):
logger
.
info
(
'GitHub notification will update %s'
,
s
)
s
.
update_branch
()
s
.
create_translations
()
return
HttpResponse
(
'updated'
)
trans/views.py
View file @
7f18ef8f
...
...
@@ -2,13 +2,11 @@ from django.shortcuts import render_to_response, get_object_or_404
from
django.core.servers.basehttp
import
FileWrapper
from
django.utils.translation
import
ugettext_lazy
,
ugettext
as
_
from
django.template
import
RequestContext
,
loader
from
django.conf
import
settings
from
django.http
import
HttpResponse
,
HttpResponseRedirect
,
HttpResponseNotAllowed
,
HttpResponseNotFound
from
django.contrib
import
messages
from
django.contrib.auth.decorators
import
login_required
,
permission_required
from
django.contrib.auth.models
import
AnonymousUser
from
django.db.models
import
Q
from
django.views.decorators.csrf
import
csrf_exempt
from
trans.models
import
Project
,
SubProject
,
Translation
,
Unit
,
Suggestion
,
Check
from
lang.models
import
Language
...
...
@@ -413,18 +411,6 @@ def upload_translation(request, project, subproject, lang):
return
HttpResponseRedirect
(
obj
.
get_absolute_url
())
@
csrf_exempt
def
update_subproject
(
request
,
project
,
subproject
):
'''
API hook for updating git repos.
'''
if
not
settings
.
ENABLE_HOOKS
:
return
HttpResponseNotAllowed
([])
obj
=
get_object_or_404
(
SubProject
,
slug
=
subproject
,
project__slug
=
project
)
obj
.
update_branch
()
obj
.
create_translations
()
return
HttpResponse
(
'updated'
)
def
not_found
(
request
):
'''
Error handler showing list of available projects.
...
...
urls.py
View file @
7f18ef8f
...
...
@@ -30,7 +30,8 @@ urlpatterns = patterns('',
url
(
r'^languages/$'
,
'trans.views.show_languages'
),
url
(
r'^languages/(?P<lang>[^/]*)/$'
,
'trans.views.show_language'
),
url
(
r'^hooks/p/(?P<project>[^/]*)/(?P<subproject>[^/]*)/update/$'
,
'trans.views.update_subproject'
),
url
(
r'^hooks/p/(?P<project>[^/]*)/(?P<subproject>[^/]*)/update/$'
,
'trans.api.update_subproject'
),
url
(
r'^hooks/github/$'
,
'trans.api.github_hook'
),
url
(
r'^js/get/(?P<checksum>[^/]*)/$'
,
'trans.views.get_string'
),
url
(
r'^js/ignore-check/(?P<check_id>[0-9]*)/$'
,
'trans.views.ignore_check'
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment