Skip to content
This repository was archived by the owner on Nov 8, 2023. It is now read-only.

Lock on custom admin with custom key #6

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions locking/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def get_urls(self):
urls = super(LockingAdminMixin, self).get_urls()
locking_urls = [
# URL For Locking admin form JavaScript
url(r'^locking_form.%s_%s_(?P<object_id>[0-9]+).js$' % self._model_info,
url(r'^locking_form.%s_%s_(?P<object_id>[0-9a-f-]+).js$' % self._model_info,
self.admin_site.admin_view(self.locking_admin_form_js),
name=self.locking_admin_form_js_url_name),

Expand Down Expand Up @@ -159,7 +159,7 @@ def locking_admin_form_js(self, request, object_id):

def locking_admin_form_js_url(self, object_id):
"""Get the URL for the locking admin form js for a given object_id on this admin"""
return reverse('admin:' + self.locking_admin_form_js_url_name,
return reverse(self.admin_site.name + ':' + self.locking_admin_form_js_url_name,
kwargs={'object_id': object_id})

def locking_admin_changelist_js(self, request):
Expand All @@ -170,7 +170,7 @@ def locking_admin_changelist_js(self, request):

def locking_admin_changelist_js_url(self):
"""Get the URL for the locking admin form js for a given object_id on this admin"""
return reverse('admin:' + self.locking_admin_changelist_js_url_name)
return reverse(self.admin_site.name + ':' + self.locking_admin_changelist_js_url_name)

def render_change_form(self, request, context, add=False, obj=None, **kwargs):
"""If editing an existing object, add form locking media to the media context"""
Expand Down
65 changes: 65 additions & 0 deletions locking/locale/fr/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-12-02 16:08+0100\n"
"PO-Revision-Date: 2019-12-02 16:18+0018\n"
"Last-Translator: Jean Pilliez <[email protected]>\n"
"Language-Team: fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Translated-Using: django-rosetta 0.7.14\n"



#: locking/admin.py:20
#, python-brace-format
msgid ""
"You cannot {action} this object because it is locked by {name} ({email})"
msgstr ""
"Vous ne pouvez {action} cet objet car il est utilisé par {name} ({email})"

#: locking/admin.py:94
msgid "Lock"
msgstr "Utilisé"

#: locking/admin.py:142
msgid "You are currently editing this"
msgstr "Vous éditez cet objet"

#: locking/admin.py:143
msgid "Locked by"
msgstr "Utilisé par"

#: locking/admin.py:144
msgid "Take over lock"
msgstr "Outrepasser le blocage"

#: locking/admin.py:145
msgid "Form is locked by"
msgstr "Ce formulaire est utilisé par"

#: locking/admin.py:146
msgid "Another user has taken your lock of this form"
msgstr "Un autre utilisateur a pris l'usage de ce formulaire."

#: locking/admin.py:147
msgid "Are you sure you want to remove this lock?"
msgstr "Etes-vous certain de retirer le blocage d'utilisation ?"

#: locking/admin.py:148
msgid ""
"Warning! Due to loss of network connectivity or a server error, you may not "
"be able to submit this form."
msgstr ""
"Attention ! Suite à des erreurs réseaux ou une erreur serveur, la mise à "
"jour de ce formulaire est compromise."
18 changes: 18 additions & 0 deletions locking/migrations/0002_auto_20191202_1147.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.1.7 on 2019-12-02 10:47

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('locking', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='lock',
name='object_id',
field=models.CharField(max_length=50, verbose_name='Key of locked model'),
),
]
18 changes: 18 additions & 0 deletions locking/migrations/0003_auto_20191202_1201.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.1.7 on 2019-12-02 11:01

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('locking', '0002_auto_20191202_1147'),
]

operations = [
migrations.AlterField(
model_name='lock',
name='id',
field=models.CharField(max_length=65, primary_key=True, serialize=False),
),
]
4 changes: 2 additions & 2 deletions locking/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,12 @@ def get_queryset(self):


class Lock(models.Model):
id = models.CharField(max_length=15, primary_key=True)
id = models.CharField(max_length=65, primary_key=True)
locked_by = models.ForeignKey(getattr(settings, 'AUTH_USER_MODEL', 'auth.User'),
on_delete=models.CASCADE)
date_expires = models.DateTimeField()
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
object_id = models.CharField(max_length=50, verbose_name='Key of locked model')
content_object = GenericForeignKey('content_type', 'object_id')

objects = LockingManager()
Expand Down
2 changes: 1 addition & 1 deletion locking/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
url(r'api/lock/(?P<app>[\w-]+)/(?P<model>[\w-]+)/$',
LockAPIView.as_view(), name='locking-api'),

url(r'api/lock/(?P<app>[\w-]+)/(?P<model>[\w-]+)/(?P<object_id>\d+)/$',
url(r'api/lock/(?P<app>[\w-]+)/(?P<model>[\w-]+)/(?P<object_id>[0-9a-f-]+)/$',
LockAPIView.as_view(), name='locking-api'),
]