Admin: add a duplicate field command
* wcs/admin/fields.ptl: add a duplicate field command, that: - use 'copy' module to copy the Field object - find a new id, and - insert just after the copied field.
This commit is contained in:
parent
ecfa0534e0
commit
18eb0aa18b
|
@ -13,6 +13,7 @@ from qommon.admin.menu import html_top, command_icon, error_page
|
|||
from wcs import fields
|
||||
from wcs.formdef import FormDef
|
||||
from wcs.fields import get_field_types
|
||||
import copy
|
||||
|
||||
class FieldWidget(CompositeWidget):
|
||||
large = False
|
||||
|
@ -50,7 +51,7 @@ class FieldWidget(CompositeWidget):
|
|||
|
||||
|
||||
class FieldDefPage(Directory):
|
||||
_q_exports = ['', 'delete', 'down', 'up', 'ajaxtitle']
|
||||
_q_exports = ['', 'delete', 'down', 'up', 'ajaxtitle', 'duplicate']
|
||||
|
||||
large = False
|
||||
section = None
|
||||
|
@ -133,6 +134,22 @@ class FieldDefPage(Directory):
|
|||
self.objectdef.store()
|
||||
return redirect('../../fields/')
|
||||
|
||||
def duplicate(self):
|
||||
field_pos = self.objectdef.fields.index(self.field)
|
||||
fields = self.objectdef.fields
|
||||
new_field = copy.copy(self.field)
|
||||
def lax_int(s):
|
||||
try:
|
||||
return int(s)
|
||||
except (ValueError, TypeError):
|
||||
return -1
|
||||
# allocate a new id
|
||||
id = str(max([lax_int(x.id) for x in self.objectdef.fields]) + 1)
|
||||
new_field.id = id
|
||||
fields.insert(field_pos+1, new_field)
|
||||
self.objectdef.store()
|
||||
return redirect('../../fields/')
|
||||
|
||||
def down(self):
|
||||
field_pos = self.objectdef.fields.index(self.field)
|
||||
fields = self.objectdef.fields
|
||||
|
@ -242,7 +259,7 @@ class FieldsDirectory(Directory):
|
|||
command_icon('?page=%s' % current_page_no, 'view',
|
||||
label = _('Limit display to this page'))
|
||||
command_icon('%s/' % field.id, 'edit')
|
||||
|
||||
command_icon('%s/duplicate' % field.id, 'duplicate')
|
||||
command_icon('%s/delete' % field.id, 'remove', popup = True)
|
||||
'</p></li>'
|
||||
'</ul>'
|
||||
|
|
Loading…
Reference in New Issue