[Python-modules-commits] [python-django-mptt] 01/04: Import python-django-mptt_0.8.7.orig.tar.gz

Brian May bam at moszumanska.debian.org
Thu Feb 2 21:11:09 UTC 2017


This is an automated email from the git hooks/post-receive script.

bam pushed a commit to branch master
in repository python-django-mptt.

commit f1be583238e9aab224984117530c18a34744f390
Author: Brian May <bam at debian.org>
Date:   Fri Feb 3 08:01:00 2017 +1100

    Import python-django-mptt_0.8.7.orig.tar.gz
---
 MANIFEST.in                                |    1 -
 PKG-INFO                                   |    2 +-
 README.rst                                 |   13 +-
 django_mptt.egg-info/PKG-INFO              |    2 +-
 django_mptt.egg-info/SOURCES.txt           |   27 +-
 docs/admin.rst                             |   38 +-
 docs/install.rst                           |    7 +-
 docs/models.rst                            |    2 +-
 docs/templates.rst                         |    6 +-
 docs/upgrade.rst                           |   29 +-
 mptt/__init__.py                           |    2 +-
 mptt/admin.py                              |  119 +-
 mptt/compat.py                             |    8 +
 mptt/locale/de/LC_MESSAGES/django.mo       |  Bin 2953 -> 4514 bytes
 mptt/locale/de/LC_MESSAGES/django.po       |  161 ++-
 mptt/locale/fi/LC_MESSAGES/django.mo       |  Bin 0 -> 4355 bytes
 mptt/locale/fi/LC_MESSAGES/django.po       |  198 +++
 mptt/locale/fr/LC_MESSAGES/django.mo       |  Bin 3624 -> 4633 bytes
 mptt/locale/fr/LC_MESSAGES/django.po       |  200 ++-
 mptt/locale/hu/LC_MESSAGES/django.mo       |  Bin 0 -> 4507 bytes
 mptt/locale/hu/LC_MESSAGES/django.po       |  194 +++
 mptt/locale/zh_Hant/LC_MESSAGES/django.mo  |  Bin 0 -> 4030 bytes
 mptt/locale/zh_Hant/LC_MESSAGES/django.po  |  160 +++
 mptt/managers.py                           |    7 +-
 mptt/models.py                             |   16 +-
 mptt/templates/admin/mptt_change_list.html |    4 +-
 mptt/templates/admin/mptt_filter.html      |    9 +
 mptt/templatetags/mptt_admin.py            |  169 ++-
 tests/.coveragerc                          |   24 -
 tests/.gitignore                           |    2 -
 tests/__init__.py                          |    1 -
 tests/myapp/__init__.py                    |    1 -
 tests/myapp/admin.py                       |   13 -
 tests/myapp/doctests.txt                   | 1593 ---------------------
 tests/myapp/fixtures/categories.json       |  132 --
 tests/myapp/fixtures/genres.json           |  134 --
 tests/myapp/fixtures/items.json            |   20 -
 tests/myapp/fixtures/persons.json          |   14 -
 tests/myapp/models.py                      |  306 ----
 tests/myapp/tests.py                       | 2126 ----------------------------
 tests/myapp/urls.py                        |   11 -
 tests/mydatabase                           |  Bin 610304 -> 0 bytes
 tests/requirements.txt                     |    3 -
 tests/runtests.sh                          |   22 -
 tests/settings.py                          |   55 -
 45 files changed, 1146 insertions(+), 4685 deletions(-)

diff --git a/MANIFEST.in b/MANIFEST.in
index a3526cc..90b4a97 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -5,7 +5,6 @@ include NOTES
 include README.rst
 recursive-include docs *.rst *.py Makefile
 recursive-include mptt *.json
-recursive-include tests *
 recursive-include mptt/templates *
 recursive-include mptt/locale *
 recursive-include mptt/static *
diff --git a/PKG-INFO b/PKG-INFO
index 58a920f..cbd0346 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: django-mptt
-Version: 0.8.5
+Version: 0.8.7
 Summary: Utilities for implementing Modified Preorder Tree Traversal
         with your Django Models and working with trees of Model instances.
 Home-page: http://github.com/django-mptt/django-mptt
diff --git a/README.rst b/README.rst
index 664ce9b..908c9ea 100644
--- a/README.rst
+++ b/README.rst
@@ -78,11 +78,16 @@ Feature overview
   * rebuild the MPTT fields for the tree (useful when you do bulk updates
     outside of django)
 
-* Form fields for tree models.
+* `Form fields`_ for tree models.
 
-* Utility functions for tree models.
+* `Utility functions`_ for tree models.
 
-* Template tags and filters for rendering trees.
+* `Template tags and filters`_ for rendering trees.
 
-* Admin classes for visualizing and modifying trees in Django's administration
+* `Admin classes`_ for visualizing and modifying trees in Django's administration
   interface.
+
+.. _`Form fields`: http://django-mptt.github.io/django-mptt/forms.html
+.. _`Utility functions`: http://django-mptt.github.io/django-mptt/utilities.html
+.. _`Template tags and filters`: http://django-mptt.github.io/django-mptt/templates.html
+.. _`Admin classes`: http://django-mptt.github.io/django-mptt/admin.html
diff --git a/django_mptt.egg-info/PKG-INFO b/django_mptt.egg-info/PKG-INFO
index 58a920f..cbd0346 100644
--- a/django_mptt.egg-info/PKG-INFO
+++ b/django_mptt.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: django-mptt
-Version: 0.8.5
+Version: 0.8.7
 Summary: Utilities for implementing Modified Preorder Tree Traversal
         with your Django Models and working with trees of Model instances.
 Home-page: http://github.com/django-mptt/django-mptt
diff --git a/django_mptt.egg-info/SOURCES.txt b/django_mptt.egg-info/SOURCES.txt
index 8a5da12..2893fb7 100644
--- a/django_mptt.egg-info/SOURCES.txt
+++ b/django_mptt.egg-info/SOURCES.txt
@@ -34,6 +34,7 @@ docs/upgrade.rst
 docs/utilities.rst
 mptt/__init__.py
 mptt/admin.py
+mptt/compat.py
 mptt/exceptions.py
 mptt/fields.py
 mptt/forms.py
@@ -51,8 +52,12 @@ mptt/locale/es/LC_MESSAGES/django.mo
 mptt/locale/es/LC_MESSAGES/django.po
 mptt/locale/es_AR/LC_MESSAGES/django.mo
 mptt/locale/es_AR/LC_MESSAGES/django.po
+mptt/locale/fi/LC_MESSAGES/django.mo
+mptt/locale/fi/LC_MESSAGES/django.po
 mptt/locale/fr/LC_MESSAGES/django.mo
 mptt/locale/fr/LC_MESSAGES/django.po
+mptt/locale/hu/LC_MESSAGES/django.mo
+mptt/locale/hu/LC_MESSAGES/django.po
 mptt/locale/mn/LC_MESSAGES/django.mo
 mptt/locale/mn/LC_MESSAGES/django.po
 mptt/locale/nb/LC_MESSAGES/django.mo
@@ -63,6 +68,8 @@ mptt/locale/pt_BR/LC_MESSAGES/django.mo
 mptt/locale/pt_BR/LC_MESSAGES/django.po
 mptt/locale/ru/LC_MESSAGES/django.mo
 mptt/locale/ru/LC_MESSAGES/django.po
+mptt/locale/zh_Hant/LC_MESSAGES/django.mo
+mptt/locale/zh_Hant/LC_MESSAGES/django.po
 mptt/static/mptt/arrow-move.png
 mptt/static/mptt/disclosure-down.png
 mptt/static/mptt/disclosure-right.png
@@ -72,23 +79,7 @@ mptt/templates/admin/grappelli_mptt_change_list.html
 mptt/templates/admin/grappelli_mptt_change_list_results.html
 mptt/templates/admin/mptt_change_list.html
 mptt/templates/admin/mptt_change_list_results.html
+mptt/templates/admin/mptt_filter.html
 mptt/templatetags/__init__.py
 mptt/templatetags/mptt_admin.py
-mptt/templatetags/mptt_tags.py
-tests/.coveragerc
-tests/.gitignore
-tests/__init__.py
-tests/mydatabase
-tests/requirements.txt
-tests/runtests.sh
-tests/settings.py
-tests/myapp/__init__.py
-tests/myapp/admin.py
-tests/myapp/doctests.txt
-tests/myapp/models.py
-tests/myapp/tests.py
-tests/myapp/urls.py
-tests/myapp/fixtures/categories.json
-tests/myapp/fixtures/genres.json
-tests/myapp/fixtures/items.json
-tests/myapp/fixtures/persons.json
\ No newline at end of file
+mptt/templatetags/mptt_tags.py
\ No newline at end of file
diff --git a/docs/admin.rst b/docs/admin.rst
index 8f5027b..d75bdd0 100644
--- a/docs/admin.rst
+++ b/docs/admin.rst
@@ -120,7 +120,7 @@ recommend using the following code::
             return format_html(
                 '<div style="text-indent:{}px">{}</div>',
                 instance._mpttfield('level') * self.mptt_level_indent,
-                item.name,  # Or whatever you want to put here
+                instance.name,  # Or whatever you want to put here
             )
         something.short_description = _('something nice')
 
@@ -151,3 +151,39 @@ to ``20``)::
 
 .. _overriding admin templates: https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#overriding-admin-templates
 .. _FeinCMS: https://github.com/feincms/feincms/
+
+
+``mptt.admin.TreeRelatedFieldListFilter``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Admin filter class which filters models related to parent model with all it's descendants.
+
+.. image:: treerelatedfieldlistlilter-genres.png
+    :align: center
+    :width: 26.21cm
+    :alt: MPTTModelAdmin screenshot
+
+Usage::
+
+    from mptt.admin import TreeRelatedFieldListFilter
+
+    @admin.register(models.MyModel)
+    class MyModelAdmin(admin.ModelAdmin):
+        model = models.MyModel
+        list_filter =
+        (
+            ('my_related_model', TreeRelatedFieldListFilter),
+        )
+
+
+Changing the indentation of list filter nodes
+---------------------------------------------
+
+Simply set ``mptt_level_indent`` to a different pixel value (defaults
+to ``10``)::
+
+    # ...
+    class MyTreeRelatedFieldListFilter(TreeRelatedFieldListFilter):
+    mptt_level_indent = 20
+    # ...
+
diff --git a/docs/install.rst b/docs/install.rst
index 9e648eb..0009a59 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -8,9 +8,11 @@ Installation
 Official releases
 =================
 
-Official releases are available from `PyPI`_.
+Official releases are available from `PyPI`_. You can install it using the `pip`_
 
-Download the .zip distribution file and unpack it. Inside is a script
+   pip install django-mptt
+
+You can also download the .zip distribution file and unpack it. Inside is a script
 named ``setup.py``. Enter this command::
 
    python setup.py install
@@ -18,6 +20,7 @@ named ``setup.py``. Enter this command::
 ...and the package will install automatically.
 
 .. _`PyPI`: http://pypi.python.org/pypi/django-mptt/
+.. _`pip`: https://pip.pypa.io/en/stable/
 
 
 Development version
diff --git a/docs/models.rst b/docs/models.rst
index dc8a4b1..420339a 100644
--- a/docs/models.rst
+++ b/docs/models.rst
@@ -339,7 +339,7 @@ The ``TreeManager`` custom manager
 The default manager for an MPTTModel is a ``TreeManager``.
 
 Any ``QuerySet`` created with this manager will be ordered based on the
-tree structure, with root nodes appearing in tree id order and and their
+tree structure, with root nodes appearing in tree id order and their
 descendants being ordered in a depth-first fashion.
 
 Methods
diff --git a/docs/templates.rst b/docs/templates.rst
index 0cef6f0..c911723 100644
--- a/docs/templates.rst
+++ b/docs/templates.rst
@@ -209,12 +209,12 @@ children::
     {% drilldown_tree_for_node genre as drilldown cumulative count tests.Game.genre in game_count %}
     {% for node,structure in drilldown|tree_info %}
         {% if structure.new_level %}<ul><li>{% else %}</li><li>{% endif %}
-        {% ifequal node genre %}
+        {% if node == genre %}
             <strong>{{ node.name }}</strong>
         {% else %}
             <a href="{{ node.get_absolute_url }}">{{ node.name }}</a>
-            {% ifequal node.parent_id genre.pk %}({{ node.game_count }}){% endifequal %}
-        {% endifequal %}
+            {% if node.parent_id == genre.pk %}({{ node.game_count }}){% endif %}
+        {% endif %}
         {% for level in structure.closed_levels %}</li></ul>{% endfor %}
     {% endfor %}
 
diff --git a/docs/upgrade.rst b/docs/upgrade.rst
index bbaf69f..7f04a8b 100644
--- a/docs/upgrade.rst
+++ b/docs/upgrade.rst
@@ -2,8 +2,25 @@
 Upgrade notes
 =============
 
+0.8.6
+=====
+
+Now supports django 1.10. After upgrading, you may come across this error when running migrations::
+
+    Unhandled exception in thread started by <function wrapper at 0x7f32e681faa0>
+    Traceback (most recent call last):
+      #...
+      File "venv/lib/python2.7/site-packages/django/db/models/manager.py", line 120, in contribute_to_class
+        setattr(model, name, ManagerDescriptor(self))
+    AttributeError: can't set attribute
+
+To fix this, please replace ``._default_manager`` in your historic migrations with ``.objects``. For more detailed information see `#469`_, `#498`_
+
+.. _`#469`: https://github.com/django-mptt/django-mptt/issues/469
+.. _`#498`: https://github.com/django-mptt/django-mptt/issues/498
+
 0.8.0
-===================
+=====
 
 Dropped support for old Django versions and Python 2.6
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -71,7 +88,7 @@ otherwise you will start seeing new '--------' choices appearing in them.
 Deprecated FeinCMSModelAdmin
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-If you were using ``mptt.admin.FeinCMSModelAdmin``, you should switch to using 
+If you were using ``mptt.admin.FeinCMSModelAdmin``, you should switch to using
 ``feincms.admin.tree_editor.TreeEditor`` instead, or you'll get a loud deprecation warning.
 
 0.4.2 to 0.5.5
@@ -155,14 +172,14 @@ Suppose you start with this::
 
     class Node(models.Model):
         ...
-    
+
     mptt.register(Node, order_insertion_by=['name'], parent_attr='padre')
 
 
 First, Make your model a subclass of ``MPTTModel``, instead of ``models.Model``::
 
     from mptt.models import MPTTModel
-    
+
     class Node(MPTTModel):
         ...
 
@@ -200,12 +217,12 @@ You should always put MPTTModel as the first model base. This is because there's
 complicated metaclass stuff going on behind the scenes, and if Django's model metaclass
 gets called before the MPTT one, strange things can happen.
 
-Isn't multiple inheritance evil? Well, maybe. However, the 
+Isn't multiple inheritance evil? Well, maybe. However, the
 `Django model docs`_ don't forbid this, and as long as your other model doesn't have conflicting methods, it should be fine.
 
 .. note::
    As always when dealing with multiple inheritance, approach with a bit of caution.
-   
+
    Our brief testing says it works, but if you find that the Django internals are somehow
    breaking this approach for you, please `create an issue`_ with specifics.
 
diff --git a/mptt/__init__.py b/mptt/__init__.py
index c67eb72..418b385 100644
--- a/mptt/__init__.py
+++ b/mptt/__init__.py
@@ -1,6 +1,6 @@
 from __future__ import unicode_literals
 
-VERSION = (0, 8, 5)
+VERSION = (0, 8, 7)
 __version__ = '.'.join(str(v) for v in VERSION)
 
 
diff --git a/mptt/admin.py b/mptt/admin.py
index 730a146..dbb18f2 100644
--- a/mptt/admin.py
+++ b/mptt/admin.py
@@ -12,7 +12,15 @@ from django.templatetags.static import static
 from django.utils.encoding import force_text
 from django.utils.html import format_html, mark_safe
 from django.utils.translation import ugettext as _, ugettext_lazy
-
+from django.contrib.admin import RelatedFieldListFilter
+from django.contrib.admin.utils import get_model_from_relation
+from django.contrib.admin.options import IncorrectLookupParameters
+from django.core.exceptions import ValidationError
+from django.utils.encoding import smart_text
+from django.utils.translation import get_language_bidi
+from django.db.models.fields.related import ForeignObjectRel, ManyToManyField
+
+from mptt.compat import remote_field, remote_model
 from mptt.exceptions import InvalidMove
 from mptt.forms import MPTTAdminForm, TreeNodeChoiceField
 from mptt.models import MPTTModel, TreeForeignKey
@@ -36,7 +44,7 @@ class MPTTModelAdmin(ModelAdmin):
     form = MPTTAdminForm
 
     def formfield_for_foreignkey(self, db_field, request, **kwargs):
-        if issubclass(db_field.rel.to, MPTTModel) \
+        if issubclass(remote_model(db_field), MPTTModel) \
                 and not isinstance(db_field, TreeForeignKey) \
                 and db_field.name not in self.raw_id_fields:
             db = kwargs.get('using')
@@ -44,7 +52,7 @@ class MPTTModelAdmin(ModelAdmin):
             limit_choices_to = db_field.get_limit_choices_to()
             defaults = dict(
                 form_class=TreeNodeChoiceField,
-                queryset=db_field.rel.to._default_manager.using(
+                queryset=remote_model(db_field)._default_manager.using(
                     db).complex_filter(limit_choices_to),
                 required=False)
             defaults.update(kwargs)
@@ -273,3 +281,108 @@ class DraggableMPTTAdmin(MPTTModelAdmin):
                 [],
             ).append(p_id)
         return all_nodes
+
+
+class TreeRelatedFieldListFilter(RelatedFieldListFilter):
+    """
+    Admin filter class which filters models related to parent model with all it's descendants.
+
+     Usage:
+
+    from mptt.admin import TreeRelatedFieldListFilter
+
+    @admin.register(models.MyModel)
+    class MyModelAdmin(admin.ModelAdmin):
+        model = models.MyModel
+        list_filter =
+        (
+            ('my_related_model', TreeRelatedFieldListFilter),
+        )
+    """
+    template = 'admin/mptt_filter.html'
+    mptt_level_indent = 10
+
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        self.other_model = get_model_from_relation(field)
+        if remote_field(field) is not None and hasattr(remote_field(field), 'get_related_field'):
+            self.rel_name = remote_field(field).get_related_field().name
+        else:
+            self.rel_name = self.other_model._meta.pk.name
+        self.changed_lookup_kwarg = '%s__%s__inhierarchy' % (field_path, self.rel_name)
+        super(TreeRelatedFieldListFilter, self).__init__(field, request, params,
+                                                         model, model_admin, field_path)
+        self.lookup_val = request.GET.get(self.changed_lookup_kwarg)
+
+    def expected_parameters(self):
+        return [self.changed_lookup_kwarg, self.lookup_kwarg_isnull]
+
+    # Ripped from contrib.admin.filters,FieldListFilter Django 1.8 to deal with
+    # lookup name 'inhierarchy'
+    def queryset(self, request, queryset):
+        try:
+            # #### MPTT ADDITION START
+            if self.lookup_val:
+                other_model = self.other_model.objects.get(pk=self.lookup_val)
+                other_models = other_model.get_descendants(True)
+                del self.used_parameters[self.changed_lookup_kwarg]
+                self.used_parameters.update(
+                    {'%s__%s__in' % (self.field_path, self.rel_name): other_models}
+                )
+            # #### MPTT ADDITION END
+            return queryset.filter(**self.used_parameters)
+        except ValidationError as e:
+            raise IncorrectLookupParameters(e)
+
+    # Adding padding_style to each choice tuple
+    def field_choices(self, field, request, model_admin):
+        mptt_level_indent = getattr(model_admin, 'mptt_level_indent', self.mptt_level_indent)
+        language_bidi = get_language_bidi()
+        initial_choices = field.get_choices(include_blank=False)
+        pks = [pk for pk, val in initial_choices]
+        models = field.related_model._default_manager.filter(pk__in=pks)
+        levels_dict = {model.pk: getattr(model, model._mptt_meta.level_attr) for model in models}
+        choices = []
+        for pk, val in initial_choices:
+            padding_style = ' style="padding-%s:%spx"' % (
+                'right' if language_bidi else 'left',
+                mptt_level_indent * levels_dict[pk])
+            choices.append((pk, val, mark_safe(padding_style)))
+        return choices
+
+    # Ripped from contrib.admin.filters,RelatedFieldListFilter Django 1.8 to
+    # yield padding_style
+    def choices(self, cl):
+        # #### MPTT ADDITION START
+        try:
+            # EMPTY_CHANGELIST_VALUE has been removed in django 1.9
+            from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
+        except:
+            EMPTY_CHANGELIST_VALUE = self.empty_value_display
+        # #### MPTT ADDITION END
+        yield {
+            'selected': self.lookup_val is None and not self.lookup_val_isnull,
+            'query_string': cl.get_query_string({}, [self.lookup_kwarg, self.lookup_kwarg_isnull]),
+            'display': _('All'),
+        }
+        for pk_val, val, padding_style in self.lookup_choices:
+            yield {
+                'selected': self.lookup_val == smart_text(pk_val),
+                'query_string': cl.get_query_string({
+                    self.lookup_kwarg: pk_val,
+                }, [self.lookup_kwarg_isnull]),
+                'display': val,
+                # #### MPTT ADDITION START
+                'padding_style': padding_style,
+                # #### MPTT ADDITION END
+            }
+        if (isinstance(self.field, ForeignObjectRel) and
+                (self.field.field.null or isinstance(self.field.field, ManyToManyField)) or
+                remote_field(self.field) is not None and
+                (self.field.null or isinstance(self.field, ManyToManyField))):
+            yield {
+                'selected': bool(self.lookup_val_isnull),
+                'query_string': cl.get_query_string({
+                    self.lookup_kwarg_isnull: 'True',
+                }, [self.lookup_kwarg]),
+                'display': EMPTY_CHANGELIST_VALUE,
+            }
diff --git a/mptt/compat.py b/mptt/compat.py
new file mode 100644
index 0000000..907f8ff
--- /dev/null
+++ b/mptt/compat.py
@@ -0,0 +1,8 @@
+def remote_field(field):
+    # remote_field is new in Django 1.9
+    return field.remote_field if hasattr(field, 'remote_field') else getattr(field, 'rel', None)
+
+
+def remote_model(field):
+    # remote_field is new in Django 1.9
+    return field.remote_field.model if hasattr(field, 'remote_field') else field.rel.to
diff --git a/mptt/locale/de/LC_MESSAGES/django.mo b/mptt/locale/de/LC_MESSAGES/django.mo
index 56f2722..898d048 100644
Binary files a/mptt/locale/de/LC_MESSAGES/django.mo and b/mptt/locale/de/LC_MESSAGES/django.mo differ
diff --git a/mptt/locale/de/LC_MESSAGES/django.po b/mptt/locale/de/LC_MESSAGES/django.po
index 9ba719c..5871057 100644
--- a/mptt/locale/de/LC_MESSAGES/django.po
+++ b/mptt/locale/de/LC_MESSAGES/django.po
@@ -3,118 +3,199 @@
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: django-mptt\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-23 14:44+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"POT-Creation-Date: 2016-08-24 12:25+0200\n"
+"PO-Revision-Date: 2016-08-24 12:32+0200\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: Henning Hraban Ramm <hraban at fiee.net>\n"
+"Language-Team: fiëé visuëlle <hraban at fiee.net>\n"
+"X-Generator: Poedit 1.8.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
 
-#: __init__.py:34
+#: admin.py:87
 #, python-format
-msgid "The model %s has already been registered."
-msgstr "%s wurde schon registriert."
+msgid "Successfully deleted %(count)d items."
+msgstr "%(count)d Einträge gelöscht."
 
-#: forms.py:41
+#: admin.py:100
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Ausgewählte %(verbose_name_plural)s löschen"
+
+#: admin.py:182
+msgid "title"
+msgstr "Titel"
+
+#: admin.py:212
+msgid "Did not understand moving instruction."
+msgstr "Unbekannter Verschiebe-Befehl."
+
+#: admin.py:220
+msgid "Objects have disappeared, try again."
+msgstr "Objekte sind verschwunden, bitte noch einmal versuchen."
+
+#: admin.py:224
+msgid "No permission"
+msgstr "Keine Berechtigung"
+
+#: admin.py:233
+#, python-format
+msgid "Database error: %s"
+msgstr "Datenbankfehler: %s"
+
+#: admin.py:238
+#, python-format
+msgid "%s has been successfully moved."
+msgstr "%s wurde erfolgreich verschoben."
+
+#: admin.py:249
+msgid "move node before node"
+msgstr "Knoten vor den Knoten verschieben"
+
+#: admin.py:250
+msgid "move node to child position"
+msgstr "Knoten als Unterknoten einfügen"
+
+#: admin.py:251
+msgid "move node after node"
+msgstr "Knoten nach den Knoten verschieben"
+
+#: admin.py:252
+msgid "Collapse tree"
+msgstr "Alles zuklappen"
+
+#: admin.py:253
+msgid "Expand tree"
+msgstr "Alles aufklappen"
+
+#: admin.py:364
+msgid "All"
+msgstr "Alle"
+
+#: forms.py:63
 msgid "First child"
 msgstr "Erstes Unterelement"
 
-#: forms.py:42
+#: forms.py:64
 msgid "Last child"
 msgstr "Letztes Unterelement"
 
-#: forms.py:43
+#: forms.py:65
 msgid "Left sibling"
-msgstr ""
+msgstr "Linker Nachbar"
 
-#: forms.py:44
+#: forms.py:66
 msgid "Right sibling"
-msgstr ""
+msgstr "Rechter Nachbar"
+
+#: forms.py:184
+msgid "Invalid parent"
+msgstr "Ungültiges Eltern-Element"
 
-#: managers.py:121
+#: managers.py:521
 msgid "Cannot insert a node which has already been saved."
 msgstr "Kann ein Element, welches schon gespeichert wurde, nicht einfügen."
 
-#: managers.py:306 managers.py:480 managers.py:516 managers.py:673
+#: managers.py:739 managers.py:912 managers.py:948 managers.py:1114
 #, python-format
 msgid "An invalid position was given: %s."
 msgstr "Eine ungültige Position wurde angegeben: %s."
 
-#: managers.py:466 managers.py:653
+#: managers.py:898 managers.py:1094
 msgid "A node may not be made a sibling of itself."
 msgstr "Ein Element kann nicht in ein Geschwister von sich selbst umgewandelt werden."
 
-#: managers.py:632 managers.py:753
+#: managers.py:1073 managers.py:1199
 msgid "A node may not be made a child of itself."
 msgstr "Ein Element kann nicht Unterelement von sich selbst sein."
 
-#: managers.py:634 managers.py:755
+#: managers.py:1075 managers.py:1201
 msgid "A node may not be made a child of any of its descendants."
 msgstr "Ein Element kann nicht Unterelement eines seiner Unterlemente sein."
 
-#: managers.py:655
+#: managers.py:1096
 msgid "A node may not be made a sibling of any of its descendants."
 msgstr "Ein Element kann nicht ein Geschwister eines seiner Unterelemente sein."
 
-#: templatetags/mptt_tags.py:23
+#: models.py:292
+msgid "register() expects a Django model class argument"
+msgstr "register() erwartet als Argument eine Django-Modell-Klasse"
+
+#: templates/admin/mptt_filter.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Nach %(filter_title)s "
+
+#: templatetags/mptt_tags.py:31
 #, python-format
 msgid "full_tree_for_model tag was given an invalid model: %s"
 msgstr "full_tree_for_model Tag bekam ein ungültiges Modell: %s"
 
-#: templatetags/mptt_tags.py:44
+#: templatetags/mptt_tags.py:55
 #, python-format
 msgid "drilldown_tree_for_node tag was given an invalid model: %s"
-msgstr "drilldown_tree_for_node tag bekam ein ungültiges Modell: %s"
+msgstr "drilldown_tree_for_node-Tag bekam ein ungültiges Modell: %s"
 
-#: templatetags/mptt_tags.py:48
+#: templatetags/mptt_tags.py:62
 #, python-format
 msgid "drilldown_tree_for_node tag was given an invalid model field: %s"
-msgstr "drilldown_tree_for_node Tag bekam ein ungültiges Modellfeld: %s"
+msgstr "drilldown_tree_for_node-Tag bekam ein ungültiges Modellfeld: %s"
 
-#: templatetags/mptt_tags.py:72
+#: templatetags/mptt_tags.py:89
 #, python-format
 msgid "%s tag requires three arguments"
 msgstr "%s Tag benötigt drei Argumente"
 
-#: templatetags/mptt_tags.py:74 templatetags/mptt_tags.py:125
+#: templatetags/mptt_tags.py:91 templatetags/mptt_tags.py:146
 #, python-format
 msgid "second argument to %s tag must be 'as'"
-msgstr "Zweites Argument für %s Tag muss 'as' sein"
+msgstr "Zweites Argument für %s-Tag muss 'as' sein"
 
-#: templatetags/mptt_tags.py:123
+#: templatetags/mptt_tags.py:143
 #, python-format
 msgid "%s tag requires either three, seven or eight arguments"
-msgstr "%s Tag benötigt entweder drei, sieben oder acht Argumente"
+msgstr "%s-Tag benötigt entweder drei, sieben oder acht Argumente"
 
-#: templatetags/mptt_tags.py:128
+#: templatetags/mptt_tags.py:150
 #, python-format
 msgid "if seven arguments are given, fourth argument to %s tag must be 'with'"
 msgstr "wenn '%s' sieben Argumente übergeben werden, muss das vierte 'with' sein"
 
-#: templatetags/mptt_tags.py:130
+#: templatetags/mptt_tags.py:154
 #, python-format
 msgid "if seven arguments are given, sixth argument to %s tag must be 'in'"
 msgstr "wenn '%s' sieben Argumente übergeben werden, muss das sechste 'in' sein"
 
-#: templatetags/mptt_tags.py:134
+#: templatetags/mptt_tags.py:160
 #, python-format
-msgid ""
-"if eight arguments are given, fourth argument to %s tag must be 'cumulative'"
-msgstr ""
-"wenn '%s' acht Argumente übergeben werden, muss das vierte 'cumulative' sein"
+msgid "if eight arguments are given, fourth argument to %s tag must be 'cumulative'"
+msgstr "wenn '%s' acht Argumente übergeben werden, muss das vierte 'cumulative' sein"
 
-#: templatetags/mptt_tags.py:136
+#: templatetags/mptt_tags.py:164
 #, python-format
 msgid "if eight arguments are given, fifth argument to %s tag must be 'count'"
 msgstr "wenn '%s' acht Argumente übergeben werden, muss das fünfte 'count' sein"
 
-#: templatetags/mptt_tags.py:138
+#: templatetags/mptt_tags.py:168
 #, python-format
 msgid "if eight arguments are given, seventh argument to %s tag must be 'in'"
 msgstr "wenn '%s' acht Argumente übergeben werden, muss das achte 'in' sein"
+
+#: templatetags/mptt_tags.py:287
+#, python-format
+msgid "%s tag requires a queryset"
+msgstr "%s-Tag benötigt ein Queryset"
+
+#: utils.py:240
+#, python-format
+msgid "Node %s not in depth-first order"
+msgstr "Knoten %s ist nicht in Tiefe-zuerst-Reihenfolge"
+
+#~ msgid "The model %s has already been registered."
+#~ msgstr "%s wurde schon registriert."
diff --git a/mptt/locale/fi/LC_MESSAGES/django.mo b/mptt/locale/fi/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..c528f7e
Binary files /dev/null and b/mptt/locale/fi/LC_MESSAGES/django.mo differ
diff --git a/mptt/locale/fi/LC_MESSAGES/django.po b/mptt/locale/fi/LC_MESSAGES/django.po
new file mode 100644
index 0000000..5996179
--- /dev/null
+++ b/mptt/locale/fi/LC_MESSAGES/django.po
@@ -0,0 +1,198 @@
+# django-mptt Finnish translation (suomeksi).
+# This file is distributed under the same license as the django-mptt package.
+# Taija Mertanen <taija299 at gmail.com>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Django-mptt\n"
+"POT-Creation-Date: 2016-11-24 02:16+0200\n"
+"PO-Revision-Date: 2016-11-24 02:47+0200\n"
+"Last-Translator: Taija Mertanen <taija299 at gmail.com>\n"
+"Language-Team: Taija Mertanen <taija299 at gmail.com>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: mptt/forms.py:63
+msgid "First child"
+msgstr "Ensimmäinen lapsi"
+
+#: mptt/forms.py:64
+msgid "Last child"
+msgstr "Viimeinen lapsi"
+
+#: mptt/forms.py:65
+msgid "Left sibling"
+msgstr "Vasemmanpuoleinen sisarus"
+
+#: mptt/forms.py:66
+msgid "Right sibling"
+msgstr "Oikeanpuoleinen sisarus"
+
+#: mptt/forms.py:184
+msgid "Invalid parent"
+msgstr "Invalidi vanhempi"
+
+#: mptt/models.py:292
+msgid "register() expects a Django model class argument"
+msgstr "register() odottaa Djangon model-luokan argumenttia"
+
+#: mptt/admin.py:87
+#, python-format
+msgid "Successfully deleted %(count)d items."
+msgstr "Onnistuneesti poistettiin %(count)d asiaa."
+
+#: mptt/admin.py:100
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "Poista valitut %(verbose_name_plural)s"
+
+#: mptt/admin.py:212
+msgid "Did not understand moving instruction."
+msgstr "Siirto-ohjetta ei ymmärretty"
+
+#: mptt/admin.py:220
+msgid "Objects have disappeared, try again."
+msgstr "Objektit ovat kadonneet, yritä uudelleen."
+
+#: mptt/admin.py:224
+msgid "No permission"
+msgstr "Ei lupaa"
+
+#: mptt/admin.py:233
+#, python-format
+msgid "Database error: %s"
+msgstr "Tietokantavirhe: %s"
+
+#: mptt/admin.py:238
+#, python-format
+msgid "%s has been successfully moved."
+msgstr "%s on onnistuneesti liikutettu."
+
+#: mptt/admin.py:249
+msgid "move node before node"
+msgstr "liikuta solmu solmun edelle"
+
+#: mptt/admin.py:250
+msgid "move node to child position"
+msgstr "liikuta solmu lapsisijaintiin"
+
+#: mptt/admin.py:251
+msgid "move node after node"
+msgstr "liikuta solmu solmun jälkeen"
+
+#: mptt/admin.py:252
+msgid "Collapse tree"
+msgstr "Piilota puu"
+
+#: mptt/admin.py:253
+msgid "Expand tree"
+msgstr "Laajenna puu"
+
+#: mptt/admin.py:364
+msgid "All"
+msgstr "Kaikki"
+
+#: mptt/utils.py:240
+#, python-format
+msgid "Node %s not in depth-first order"
+msgstr "Solmu %s ei ole syvyys-ensin järjestyksessä"
+
+#: mptt/managers.py:521
+msgid "Cannot insert a node which has already been saved."
+msgstr "Ei voida lisätä solmua joka on jo tallennettu."
+
+#: mptt/managers.py:739 mptt/managers.py:912 mptt/managers.py:948
+#: mptt/managers.py:1114
+#, python-format
+msgid "An invalid position was given: %s."
+msgstr "Invalidi sijainti annettu: %s."
+
+#: mptt/managers.py:898 mptt/managers.py:1094
+msgid "A node may not be made a sibling of itself."
+msgstr "Solmusta ei voi tehdä itsensä sisarusta."
+
+#: mptt/managers.py:1073 mptt/managers.py:1199
+msgid "A node may not be made a child of itself."
+msgstr "Solmusta ei voi tehdä itsensä lasta."
+
+#: mptt/managers.py:1075 mptt/managers.py:1201
+msgid "A node may not be made a child of any of its descendants."
+msgstr "Solmusta ei voi tehdä oman jälkeläisensä lasta."
+
+#: mptt/managers.py:1096
+msgid "A node may not be made a sibling of any of its descendants."
+msgstr "Solmusta ei voi tehdä oman jälkeläisensä sisarusta."
+
+#: mptt/templatetags/mptt_tags.py:31
+#, python-format
+msgid "full_tree_for_model tag was given an invalid model: %s"
+msgstr "full_tree_for_model -tägille annettiin invalidi malli: %s"
+
+#: mptt/templatetags/mptt_tags.py:55
+#, python-format
+msgid "drilldown_tree_for_node tag was given an invalid model: %s"
+msgstr "drilldown_tree_for_node -tägille annettiin invalidi malli: %s"
+
+#: mptt/templatetags/mptt_tags.py:62
+#, python-format
+msgid "drilldown_tree_for_node tag was given an invalid model field: %s"
+msgstr "drilldown_tree_for_node -tägille annettiin invalidi malli kenttä: %s"
+
+#: mptt/templatetags/mptt_tags.py:89
+#, python-format
+msgid "%s tag requires three arguments"
+msgstr "%s tägi vaatii kolme argumenttia"
+
+#: mptt/templatetags/mptt_tags.py:91 mptt/templatetags/mptt_tags.py:146
+#, python-format
+msgid "second argument to %s tag must be 'as'"
+msgstr "toinen argumentti %s tägille pitää olla 'as'"
+
+#: mptt/templatetags/mptt_tags.py:143
+#, python-format
+msgid "%s tag requires either three, seven or eight arguments"
+msgstr "%s tägi vaatii joko kolme, seitsemän tai kahdeksan argumenttia"
+
+#: mptt/templatetags/mptt_tags.py:150
+#, python-format
+msgid "if seven arguments are given, fourth argument to %s tag must be 'with'"
+msgstr ""
+"jos seitsemän argumenttia annetaan, neljännen argumentin %s tägille pitää "
+"olla 'with'"
+
+#: mptt/templatetags/mptt_tags.py:154
+#, python-format
+msgid "if seven arguments are given, sixth argument to %s tag must be 'in'"
+msgstr ""
+"jos seitsemän argumenttia annetaan, kuudennen argumentin %s tägille pitää "
+"olla 'in'"
+
+#: mptt/templatetags/mptt_tags.py:160
+#, python-format
+msgid ""
+"if eight arguments are given, fourth argument to %s tag must be 'cumulative'"
+msgstr ""
+"jos kahdeksan argumenttia annetaan, neljännen argumentin %s tägille pitää "
+"olla 'cumulative'"
+
+#: mptt/templatetags/mptt_tags.py:164
+#, python-format
+msgid "if eight arguments are given, fifth argument to %s tag must be 'count'"
+msgstr ""
+"jos kahdeksan argumenttia annetaan, viidennen argumentin %s tägille pitää "
+"olla 'count'"
+
+#: mptt/templatetags/mptt_tags.py:168
+#, python-format
+msgid "if eight arguments are given, seventh argument to %s tag must be 'in'"
+msgstr ""
+"jos kahdeksan argumenttia annetaan, seitsemännen argumentin %s tägille pitää "
+"olla 'in'"
+
+#: mptt/templatetags/mptt_tags.py:287
+#, python-format
+msgid "%s tag requires a queryset"
+msgstr "%s tägi vaatii querysetin"
diff --git a/mptt/locale/fr/LC_MESSAGES/django.mo b/mptt/locale/fr/LC_MESSAGES/django.mo
index eaf2e30..f423c75 100644
Binary files a/mptt/locale/fr/LC_MESSAGES/django.mo and b/mptt/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/mptt/locale/fr/LC_MESSAGES/django.po b/mptt/locale/fr/LC_MESSAGES/django.po
index f427164..8de6113 100644
--- a/mptt/locale/fr/LC_MESSAGES/django.po
+++ b/mptt/locale/fr/LC_MESSAGES/django.po
@@ -1,157 +1,209 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
... 5594 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-django-mptt.git



More information about the Python-modules-commits mailing list