Commit 7e8ef96d authored by Michal Čihař's avatar Michal Čihař

Merge branch 'master' of github.com:nijel/weblate

parents fefe398f 027ee76c
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<td>{{ item.translation.subproject }}</td> <td>{{ item.translation.subproject }}</td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslationdiff:unit }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslationdiff:unit }}</a></td>
<td>{% if item.fuzzy %}<span title="{% trans "Message is fuzzy" %}" class="ui-icon ui-icon-help"></span>{% else %}{% if item.translated %}<span title="{% trans "Message is translated" %}" class="ui-icon ui-icon-check"></span>{% endif %}{% endif %}</td> <td>{% include "unit-state.html" %}</td>
<td> <td>
{% if perms.trans.save_translation %} {% if perms.trans.save_translation %}
<a class="mergebutton" href="{{ unit.translation.get_translate_url}}?type={{ type }}&amp;pos={{ unit.position }}{{ search_url }}&amp;checksum={{ unit.checksum }}&amp;merge={{ item.id }}" class="mergebutton" title="{% trans "Use this translation for all subprojects" %}">{% trans "Use this translation" %}</a> <a class="mergebutton" href="{{ unit.translation.get_translate_url}}?type={{ type }}&amp;pos={{ unit.position }}{{ search_url }}&amp;checksum={{ unit.checksum }}&amp;merge={{ item.id }}" class="mergebutton" title="{% trans "Use this translation for all subprojects" %}">{% trans "Use this translation" %}</a>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<td>{{ item.translation.subproject }}</td> <td>{{ item.translation.subproject }}</td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslation:item.translation.language }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslation:item.translation.language }}</a></td>
<td>{% if item.fuzzy %}<span title="{% trans "Message is fuzzy" %}" class="ui-icon ui-icon-help"></span>{% else %}{% if item.translated %}<span title="{% trans "Message is translated" %}" class="ui-icon ui-icon-check"></span>{% endif %}{% endif %}</td> <td>{% include "unit-state.html" %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
......
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
<td class="number"><a href="{{ item.get_absolute_url }}">{{ item.position }}</a></td> <td class="number"><a href="{{ item.get_absolute_url }}">{{ item.position }}</a></td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.source|fmttranslation }}</a></td>
<td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslation:unit.translation.language }}</a></td> <td class="translatetext"><a href="{{ item.get_absolute_url }}">{{ item.target|fmttranslation:unit.translation.language }}</a></td>
<td>{% if item.fuzzy %}<span title="{% trans "Message is fuzzy" %}" class="ui-icon ui-icon-help"></span>{% else %}{% if item.translated %}<span title="{% trans "Message is translated" %}" class="ui-icon ui-icon-check"></span>{% endif %}{% endif %}</td> <td>{% include "unit-state.html" %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
......
{% load i18n %}
{% if item.fuzzy %}<span title="{% trans "Message is fuzzy" %}" class="ui-icon ui-icon-help"></span>{% else %}
{% if item.active_checks %}<span title="{% trans "Message has failing checks" %}" class="ui-icon ui-icon-notice"></span>{% else %}
{% if item.translated %}<span title="{% trans "Message is translated" %}" class="ui-icon ui-icon-check"></span>{% endif %}
{% endif %}{% endif %}</td>
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-04 18:40+0000\n" "PO-Revision-Date: 2011-03-04 18:40+0000\n"
"Last-Translator: JirkaV <Jirka.Vejrazka@gmail.com>\n" "Last-Translator: JirkaV <Jirka.Vejrazka@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2012-03-31 21:07+0200\n" "PO-Revision-Date: 2012-03-31 21:07+0200\n"
"Last-Translator: Jo Michael <me@mynetx.net>\n" "Last-Translator: Jo Michael <me@mynetx.net>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-20 11:41+0000\n" "PO-Revision-Date: 2011-03-20 11:41+0000\n"
"Last-Translator: pagles <y.pagles@gmail.com>\n" "Last-Translator: pagles <y.pagles@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-04 18:40+0000\n" "PO-Revision-Date: 2011-03-04 18:40+0000\n"
"Last-Translator: aaloy <antoni.aloy@trespams.com>\n" "Last-Translator: aaloy <antoni.aloy@trespams.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -3,53 +3,53 @@ ...@@ -3,53 +3,53 @@
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-27 16:38+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2012-04-27 19:55+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Mika Suomalainen <mika.henrik.mainio@hotmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: fi\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 0.10\n"
#: media/js/loader.js:36 #: media/js/loader.js:36
msgid "Failed translation" msgid "Failed translation"
msgstr "" msgstr "Epäonnistunut käännös"
#: media/js/loader.js:36 #: media/js/loader.js:36
msgid "The request for machine translation has failed." msgid "The request for machine translation has failed."
msgstr "" msgstr "Pyyntö koneellisen käännöksen tekemiseen on epäonnistunut."
#: media/js/loader.js:36 #: media/js/loader.js:36
msgid "Error details:" msgid "Error details:"
msgstr "" msgstr "Virheen lisätiedot:"
#: media/js/loader.js:55 #: media/js/loader.js:55
msgid "Translate using Apertium" msgid "Translate using Apertium"
msgstr "" msgstr "Käännä käyttämällä Apertiumia"
#: media/js/loader.js:70 #: media/js/loader.js:70
msgid "Translate using Microsoft Translator" msgid "Translate using Microsoft Translator"
msgstr "" msgstr "Käännä käyttämällä Microsoft Kääntäjää"
#: media/js/loader.js:84 #: media/js/loader.js:84
msgid "Translate using MyMemory" msgid "Translate using MyMemory"
msgstr "" msgstr "Käännä käyttämällä MyMemoryä."
#: media/js/loader.js:167 #: media/js/loader.js:167
msgid "Sort this column" msgid "Sort this column"
msgstr "" msgstr "Järjestä tämä kolumni"
#: media/js/loader.js:197 media/js/loader.js.c:223 #: media/js/loader.js:197 media/js/loader.js.c:223
msgid "AJAX request to load this content has failed!" msgid "AJAX request to load this content has failed!"
msgstr "" msgstr "AJAX pyyntö tämän sisällön lataamiseksi on epäonnistunut!"
#: media/js/loader.js:213 media/js/loader.js.c:242 #: media/js/loader.js:213 media/js/loader.js.c:242
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr "Ladataan..."
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:26+0200\n"
"PO-Revision-Date: 2011-03-04 18:40+0000\n" "PO-Revision-Date: 2011-03-04 18:40+0000\n"
"Last-Translator: claudep <claude@2xlibre.net>\n" "Last-Translator: claudep <claude@2xlibre.net>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2012-04-16 11:57+0200\n" "PO-Revision-Date: 2012-04-16 11:57+0200\n"
"Last-Translator: Yuichiro Takahashi <yuichiro@pop07.odn.ne.jp>\n" "Last-Translator: Yuichiro Takahashi <yuichiro@pop07.odn.ne.jp>\n"
"Language-Team: japanese <jp@li.org>\n" "Language-Team: japanese <jp@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2012-04-16 18:33+0200\n" "PO-Revision-Date: 2012-04-16 18:33+0200\n"
"Last-Translator: Robin Pepermans <robinp.1273@gmail.com>\n" "Last-Translator: Robin Pepermans <robinp.1273@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-15 20:36+0000\n" "PO-Revision-Date: 2011-03-15 20:36+0000\n"
"Last-Translator: angularcircle <angular.circle@gmail.com>\n" "Last-Translator: angularcircle <angular.circle@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-11 11:09+0000\n" "PO-Revision-Date: 2011-03-11 11:09+0000\n"
"Last-Translator: nmariz <nmariz@gmail.com>\n" "Last-Translator: nmariz <nmariz@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:26+0200\n"
"PO-Revision-Date: 2012-04-04 09:43-0300\n" "PO-Revision-Date: 2012-04-04 09:43-0300\n"
"Last-Translator: Claudio F Filho <filhocf@gmail.com>\n" "Last-Translator: Claudio F Filho <filhocf@gmail.com>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-doc@kde.org>\n" "Language-Team: Brazilian Portuguese <kde-i18n-doc@kde.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2012-04-06 21:07+0200\n" "PO-Revision-Date: 2012-04-06 21:07+0200\n"
"Last-Translator: Domen <dbc334@gmail.com>\n" "Last-Translator: Domen <dbc334@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: iso_639 0.37\n" "Project-Id-Version: iso_639 0.37\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:33+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2004-07-29 21:59+0200\n" "PO-Revision-Date: 2004-07-29 21:59+0200\n"
"Last-Translator: Christian Rose <menthos@menthos.com>\n" "Last-Translator: Christian Rose <menthos@menthos.com>\n"
"Language-Team: Swedish <sv@li.org>\n" "Language-Team: Swedish <sv@li.org>\n"
......
This diff is collapsed.
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:33+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Weblate\n" "Project-Id-Version: Weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2011-03-04 21:16+0000\n" "PO-Revision-Date: 2011-03-04 21:16+0000\n"
"Last-Translator: martinamca <martinamca@gmail.com>\n" "Last-Translator: martinamca <martinamca@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
This diff is collapsed.
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: weblate\n" "Project-Id-Version: weblate\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-26 09:19+0200\n" "POT-Creation-Date: 2012-05-03 15:25+0200\n"
"PO-Revision-Date: 2012-04-14 03:43+0200\n" "PO-Revision-Date: 2012-04-14 03:43+0200\n"
"Last-Translator: Chipong Luo <chipong.luo@yahoo.com>\n" "Last-Translator: Chipong Luo <chipong.luo@yahoo.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@l10n.cihar.com>\n" "Language-Team: Chinese (Simplified) <zh_CN@l10n.cihar.com>\n"
......
...@@ -303,7 +303,7 @@ class EndStopCheck(Check): ...@@ -303,7 +303,7 @@ class EndStopCheck(Check):
def check_single(self, source, target, flags, language, unit): def check_single(self, source, target, flags, language, unit):
if len(source) == 1 and len(target) == 1: if len(source) == 1 and len(target) == 1:
return False return False
if self.is_language(language, ['ja']) and source[-1] == ':': if self.is_language(language, ['ja']) and source[-1] in [':', ';']:
# Japanese sentence might need to end with full stop # Japanese sentence might need to end with full stop
# in case it's used before list. # in case it's used before list.
return self.check_chars(source, target, -1, [u':', u':', u'.', u'。']) return self.check_chars(source, target, -1, [u':', u':', u'.', u'。'])
...@@ -329,7 +329,7 @@ class EndColonCheck(Check): ...@@ -329,7 +329,7 @@ class EndColonCheck(Check):
if self.is_language(language, ['ja']): if self.is_language(language, ['ja']):
# Japanese sentence might need to end with full stop # Japanese sentence might need to end with full stop
# in case it's used before list. # in case it's used before list.
if source[-1] == ':': if source[-1] in [':', ';']:
return self.check_chars(source, target, -1, [u':', u':', u'.', u'。']) return self.check_chars(source, target, -1, [u':', u':', u'.', u'。'])
return False return False
return self.check_chars(source, target, -1, [u':', u':']) return self.check_chars(source, target, -1, [u':', u':'])
...@@ -362,6 +362,10 @@ class EndExclamationCheck(Check): ...@@ -362,6 +362,10 @@ class EndExclamationCheck(Check):
description = _('Source and translation do not both end with an exclamation mark or it is not correctly spaced') description = _('Source and translation do not both end with an exclamation mark or it is not correctly spaced')
def check_single(self, source, target, flags, language, unit): def check_single(self, source, target, flags, language, unit):
if self.is_language(language, ['eu']):
if source[-1] == '!':
if u'¡' in target and u'!' in target:
return False
if self.is_language(language, ['fr', 'br']): if self.is_language(language, ['fr', 'br']):
if len(target) == 0: if len(target) == 0:
return False return False
......
import os
import time
import errno
class FileLockException(Exception):
pass
class FileLock(object):
""" A file locking mechanism that has context-manager support so
you can use it in a with statement. This should be relatively cross
compatible as it doesn't rely on msvcrt or fcntl for the locking.
"""
def __init__(self, file_name, timeout=10, delay=.05):
""" Prepare the file locker. Specify the file to lock and optionally
the maximum timeout and the delay between each attempt to lock.
"""
self.is_locked = False
self.lockfile = os.path.join(os.getcwd(), "%s.lock" % file_name)
self.file_name = file_name
self.timeout = timeout
self.delay = delay
def acquire(self):
""" Acquire the lock, if possible. If the lock is in use, it check again
every `wait` seconds. It does this until it either gets the lock or
exceeds `timeout` number of seconds, in which case it throws
an exception.
"""
start_time = time.time()
while True:
try:
self.fd = os.open(self.lockfile, os.O_CREAT|os.O_EXCL|os.O_RDWR)
break;
except OSError as e:
if e.errno != errno.EEXIST:
raise
if (time.time() - start_time) >= self.timeout:
raise FileLockException("Timeout occured.")
time.sleep(self.delay)
self.is_locked = True
def release(self):
""" Get rid of the lock by deleting the lockfile.
When working in a `with` statement, this gets automatically
called at the end.
"""
if self.is_locked:
os.close(self.fd)
os.unlink(self.lockfile)
self.is_locked = False
def __enter__(self):
""" Activated when used in the with statement.
Should automatically acquire a lock to be used in the with block.
"""
if not self.is_locked:
self.acquire()
return self
def __exit__(self, type, value, traceback):
""" Activated at the end of the with statement.
It automatically releases the lock if it isn't locked.
"""
if self.is_locked:
self.release()
def __del__(self):
""" Make sure that the FileLock instance doesn't leave a lockfile
lying around.
"""
self.release()
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _, ugettext from django.utils.translation import ugettext_lazy as _, ugettext, pgettext_lazy
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.encoding import smart_unicode from django.utils.encoding import smart_unicode
from django.forms import ValidationError from django.forms import ValidationError
...@@ -95,7 +95,7 @@ class PluralField(forms.CharField): ...@@ -95,7 +95,7 @@ class PluralField(forms.CharField):
class TranslationForm(forms.Form): class TranslationForm(forms.Form):
checksum = forms.CharField(widget = forms.HiddenInput) checksum = forms.CharField(widget = forms.HiddenInput)
target = PluralField(required = False) target = PluralField(required = False)
fuzzy = forms.BooleanField(label = _('Fuzzy'), required = False) fuzzy = forms.BooleanField(label = pgettext_lazy('Checkbox for marking translation fuzzy', 'Fuzzy'), required = False)
class SimpleUploadForm(forms.Form): class SimpleUploadForm(forms.Form):
file = forms.FileField(label = _('File')) file = forms.FileField(label = _('File'))
......
This diff is collapsed.
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