Commit 8fafc294 authored by Michal Čihař's avatar Michal Čihař

Add CSV export for dictionary (issue #124)

parent 50005cc5
......@@ -76,6 +76,7 @@
{% if perms.trans.upload_dictionary %}
<li><a href="#import">{% trans "Import dictionary" %}</a></li>
{% endif %}
<li><a href="#export">{% trans "Export dictionary" %}</a></li>
</ul>
{% if perms.trans.add_dictionary %}
......@@ -108,4 +109,12 @@
</div>
{% endif %}
<div id="export">
<p>{% trans "You can download dictionary in following formats:" %}</p>
<ul>
<li><a href="{% url 'weblate.trans.views.download_dictionary' project=project.slug lang=language.code %}?format=csv">{% trans "Comma separated values (CSV)" %}</a></li>
</ul>
{% endblock %}
......@@ -46,6 +46,7 @@ import datetime
import logging
import os.path
import json
import csv
from xml.etree import ElementTree
import urllib2
......@@ -237,6 +238,31 @@ def upload_dictionary(request, project, lang):
messages.error(request, _('Failed to process form!'))
return HttpResponseRedirect(reverse('weblate.trans.views.show_dictionary', kwargs = {'project': prj.slug, 'lang': lang.code}))
def download_dictionary(request, project, lang):
'''
Exports dictionary.
'''
prj = get_object_or_404(Project, slug = project)
lang = get_object_or_404(Language, code = lang)
# Parse parameters
export_format = None
if 'format' in request.GET:
export_format = request.GET['format']
if not export_format in ['csv']:
export_format = 'csv'
if export_format == 'csv':
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=dictionary-%s-%s.csv' % (prj.slug, lang.code)
writer = csv.writer(response)
words = Dictionary.objects.filter(project = prj, language = lang).order_by('source')
for word in words.iterator():
writer.writerow((word.source.encode('utf8'), word.target.encode('utf8')))
return response
def show_dictionary(request, project, lang):
prj = get_object_or_404(Project, slug = project)
lang = get_object_or_404(Language, code = lang)
......
......@@ -51,6 +51,7 @@ urlpatterns = patterns('',
url(r'^dictionaries/(?P<project>[^/]*)/(?P<lang>[^/]*)/upload/$', 'weblate.trans.views.upload_dictionary'),
url(r'^dictionaries/(?P<project>[^/]*)/(?P<lang>[^/]*)/delete/$', 'weblate.trans.views.delete_dictionary'),
url(r'^dictionaries/(?P<project>[^/]*)/(?P<lang>[^/]*)/edit/$', 'weblate.trans.views.edit_dictionary'),
url(r'^dictionaries/(?P<project>[^/]*)/(?P<lang>[^/]*)/download/$', 'weblate.trans.views.download_dictionary'),
url(r'^projects/(?P<project>[^/]*)/(?P<subproject>[^/]*)/$', 'weblate.trans.views.show_subproject'),
url(r'^projects/(?P<project>[^/]*)/(?P<subproject>[^/]*)/(?P<lang>[^/]*)/$', 'weblate.trans.views.show_translation'),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment