11## -*- coding: utf-8 -*-
22from __future__ import absolute_import , unicode_literals
33import re
4- from django .utils .encoding import force_text , force_unicode
4+ from django .utils .encoding import force_text
55from django .contrib import admin , messages
66from django .core .exceptions import ImproperlyConfigured , ValidationError
77from django .db .models import Q
1313from django .http import HttpResponse , HttpResponseRedirect
1414from django .utils .translation import ungettext , ugettext as _
1515from concurrency import forms
16- from concurrency .api import get_revision_of_object , get_version_fieldname
16+ from concurrency import core
17+ from concurrency .api import get_revision_of_object
1718from concurrency .config import conf , CONCURRENCY_LIST_EDITABLE_POLICY_SILENT
1819from concurrency .exceptions import RecordModifiedError
1920from concurrency .forms import ConcurrentForm , VersionWidget
@@ -160,7 +161,7 @@ def save_model(self, request, obj, form, change):
160161 if change :
161162 version = request .POST .get ('_concurrency_version_{0.pk}' .format (obj ), None )
162163 if version :
163- setattr (obj , get_version_fieldname ( obj ), int ( version ) )
164+ core . _set_version (obj , version )
164165 super (ConcurrencyListEditableMixin , self ).save_model (request , obj , form , change )
165166 except RecordModifiedError :
166167 self ._concurrency_list_editable_errors .append (obj .pk )
@@ -169,35 +170,25 @@ def save_model(self, request, obj, form, change):
169170 else :
170171 raise
171172
172-
173- class ConcurrentModelAdmin (ConcurrencyActionMixin ,
174- ConcurrencyListEditableMixin ,
175- admin .ModelAdmin ):
176- form = ConcurrentForm
177- formfield_overrides = {forms .VersionField : {'widget' : VersionWidget }}
178-
179173 def changelist_view (self , request , extra_context = None ):
180174 self ._concurrency_list_editable_errors = []
181- return super (ConcurrentModelAdmin , self ).changelist_view (request , extra_context )
182-
183- def save_model (self , request , obj , form , change ):
184- return super (ConcurrentModelAdmin , self ).save_model (request , obj , form , change )
175+ return super (ConcurrencyListEditableMixin , self ).changelist_view (request , extra_context )
185176
186177 def log_change (self , request , object , message ):
187178 if object .pk in self ._concurrency_list_editable_errors :
188179 return
189- super (ConcurrentModelAdmin , self ).log_change (request , object , message )
180+ super (ConcurrencyListEditableMixin , self ).log_change (request , object , message )
190181
191182 def log_deletion (self , request , object , object_repr ):
192183 if object .pk in self ._concurrency_list_editable_errors :
193184 return
194- super (ConcurrentModelAdmin , self ).log_deletion (request , object , object_repr )
185+ super (ConcurrencyListEditableMixin , self ).log_deletion (request , object , object_repr )
195186
196187 def message_user (self , request , message , ** kwargs ):
197188 # This is ugly but we do not want to touch the changelist_view() code.
198189 opts = self .model ._meta
199190 if self ._concurrency_list_editable_errors :
200- names = force_unicode (opts .verbose_name ), force_unicode (opts .verbose_name_plural )
191+ names = force_text (opts .verbose_name ), force_text (opts .verbose_name_plural )
201192 pattern = r"(?P<num>\d+) ({0}|{1})" .format (* names )
202193 rex = re .compile (pattern )
203194 m = rex .match (message )
@@ -213,12 +204,19 @@ def message_user(self, request, message, **kwargs):
213204 "Records `{0}` have been modified and were not updated" ,
214205 concurrency_errros ).format (ids ))
215206 if updated_record == 1 :
216- name = force_unicode (opts .verbose_name )
207+ name = force_text (opts .verbose_name )
217208 else :
218- name = force_unicode (opts .verbose_name_plural )
209+ name = force_text (opts .verbose_name_plural )
219210 message = ungettext ("%(count)s %(name)s was changed successfully." ,
220211 "%(count)s %(name)s were changed successfully." ,
221212 updated_record ) % {'count' : updated_record ,
222213 'name' : name }
223214
224- return super (ConcurrentModelAdmin , self ).message_user (request , message , ** kwargs )
215+ return super (ConcurrencyListEditableMixin , self ).message_user (request , message , ** kwargs )
216+
217+
218+ class ConcurrentModelAdmin (ConcurrencyActionMixin ,
219+ ConcurrencyListEditableMixin ,
220+ admin .ModelAdmin ):
221+ form = ConcurrentForm
222+ formfield_overrides = {forms .VersionField : {'widget' : VersionWidget }}
0 commit comments