summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-07-11 03:03:01 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-07-11 03:03:01 +0200
commit048ebf3266594c7360840272a7189dd4d34a1e6d (patch)
treedfe2afaaf33446b2e6493cbd5aa097e2a1e13153
parent07e343d4d40667b52977c30a17c17968cb5472ac (diff)
downloadIshtar-048ebf3266594c7360840272a7189dd4d34a1e6d.tar.bz2
Ishtar-048ebf3266594c7360840272a7189dd4d34a1e6d.zip
First version of the full export (closes #249)
-rw-r--r--ishtar/ishtar_base/forms_context_records.py3
-rw-r--r--ishtar/ishtar_base/forms_files.py2
-rw-r--r--ishtar/ishtar_base/forms_items.py2
-rw-r--r--ishtar/ishtar_base/forms_operations.py3
-rw-r--r--ishtar/ishtar_base/models.py8
-rw-r--r--ishtar/ishtar_base/urls.py9
-rw-r--r--ishtar/ishtar_base/views.py18
-rw-r--r--ishtar/ishtar_base/widgets.py16
-rw-r--r--ishtar/locale/fr/LC_MESSAGES/django.po2
9 files changed, 48 insertions, 15 deletions
diff --git a/ishtar/ishtar_base/forms_context_records.py b/ishtar/ishtar_base/forms_context_records.py
index 7024b523a..c62dcb7f7 100644
--- a/ishtar/ishtar_base/forms_context_records.py
+++ b/ishtar/ishtar_base/forms_context_records.py
@@ -130,7 +130,8 @@ class RecordFormSelection(forms.Form):
currents = {'pk':models.ContextRecord}
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-contextrecord'),
- RecordSelect(), models.ContextRecord),
+ RecordSelect(), models.ContextRecord,
+ source_full=reverse_lazy('get-contextrecord-full')),
validators=[models.valid_id(models.ContextRecord)])
def clean(self):
diff --git a/ishtar/ishtar_base/forms_files.py b/ishtar/ishtar_base/forms_files.py
index 04949a43d..4f5ac18f4 100644
--- a/ishtar/ishtar_base/forms_files.py
+++ b/ishtar/ishtar_base/forms_files.py
@@ -145,7 +145,7 @@ class FileFormSelection(forms.Form):
currents = {'pk':models.File}
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-file'),
- FileSelect(), models.File),
+ FileSelect(), models.File, source_full=reverse_lazy('get-file-full')),
validators=[models.valid_id(models.File)])
def clean(self):
diff --git a/ishtar/ishtar_base/forms_items.py b/ishtar/ishtar_base/forms_items.py
index 54c733751..c6f4b05f4 100644
--- a/ishtar/ishtar_base/forms_items.py
+++ b/ishtar/ishtar_base/forms_items.py
@@ -165,7 +165,7 @@ class ItemFormSelection(forms.Form):
currents = {'pk':models.Item}
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-item'),
- ItemSelect(), models.Item),
+ ItemSelect(), models.Item, source_full=reverse_lazy('get-item-full')),
validators=[models.valid_id(models.Item)])
item_search_wizard = SearchWizard([
diff --git a/ishtar/ishtar_base/forms_operations.py b/ishtar/ishtar_base/forms_operations.py
index e2b0aadb1..30fc11bec 100644
--- a/ishtar/ishtar_base/forms_operations.py
+++ b/ishtar/ishtar_base/forms_operations.py
@@ -202,7 +202,8 @@ class OperationFormSelection(forms.Form):
currents = {'pk':models.Operation}
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-operation'),
- OperationSelect(), models.Operation),
+ OperationSelect(), models.Operation,
+ source_full=reverse_lazy('get-operation-full')),
validators=[models.valid_id(models.Operation)])
def clean(self):
diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py
index d124addf2..2a8248804 100644
--- a/ishtar/ishtar_base/models.py
+++ b/ishtar/ishtar_base/models.py
@@ -247,7 +247,7 @@ class HistoryError(Exception):
class BaseHistorizedItem(models.Model):
history_modifier = models.ForeignKey(User, related_name='+',
- verbose_name=_(u"Last modifier"))
+ verbose_name=_(u"Last editor"))
class Meta:
abstract = True
@@ -1272,6 +1272,12 @@ class Treatment(BaseHistorizedItem, OwnPerms):
("delete_own_treatment", ugettext(u"Can delete own Treatment")),
)
+ def __unicode__(self):
+ lbl = unicode(self.treatment_type)
+ if self.person:
+ lbl += u" %s %s" % (_(u"by"), unicode(self.person))
+ return lbl
+
class TreatmentSource(Source):
class Meta:
verbose_name = _(u"Treatment documentation")
diff --git a/ishtar/ishtar_base/urls.py b/ishtar/ishtar_base/urls.py
index 3c5351c57..d41027369 100644
--- a/ishtar/ishtar_base/urls.py
+++ b/ishtar/ishtar_base/urls.py
@@ -160,6 +160,8 @@ urlpatterns += patterns('ishtar.ishtar_base.views',
name='autocomplete-file'),
url(BASE_URL + r'get-file/(?P<type>.+)?$', 'get_file',
name='get-file'),
+ url(BASE_URL + r'get-file-full/(?P<type>.+)?$', 'get_file',
+ name='get-file-full', kwargs={'full':True}),
url(BASE_URL + r'get-administrativeactfile/(?P<type>.+)?$',
'get_administrativeactfile', name='get-administrativeactfile'),
url(BASE_URL + r'show-file/(?P<pk>.+)?/(?P<type>.+)?$', 'show_file',
@@ -173,6 +175,8 @@ urlpatterns += patterns('ishtar.ishtar_base.views',
name='autocomplete-operation'),
url(BASE_URL + r'get-operation/(?P<type>.+)?$', 'get_operation',
name='get-operation'),
+ url(BASE_URL + r'get-operation-full/(?P<type>.+)?$', 'get_operation',
+ name='get-operation-full', kwargs={'full':True}),
url(BASE_URL + r'revert-operation/(?P<pk>.+)/(?P<date>.+)$',
'revert_operation', name='revert-operation'),
url(BASE_URL + r'show-operation/(?P<pk>.+)?/(?P<type>.+)?$',
@@ -186,6 +190,9 @@ urlpatterns += patterns('ishtar.ishtar_base.views',
'show_contextrecord', name='show-contextrecord'),
url(BASE_URL + r'get-contextrecord/(?P<type>.+)?$', 'get_contextrecord',
name='get-contextrecord'),
+ url(BASE_URL + r'get-contextrecord-full/(?P<type>.+)?$',
+ 'get_contextrecord', name='get-contextrecord-full',
+ kwargs={'full':True}),
url(BASE_URL + r'get-contexrecordsource/(?P<type>.+)?$',
'get_contextrecordsource', name='get-contextrecordsource'),
# Finds
@@ -193,6 +200,8 @@ urlpatterns += patterns('ishtar.ishtar_base.views',
name='update-current-item'),
url(BASE_URL + r'get-item/(?P<type>.+)?$', 'get_archaeologicalitem',
name='get-item'),
+ url(BASE_URL + r'get-item-full/(?P<type>.+)?$', 'get_archaeologicalitem',
+ name='get-item-full', kwargs={'full':True}),
url(BASE_URL + r'get-itemsource/(?P<type>.+)?$',
'get_itemsource', name='get-itemsource'),
url(BASE_URL + r'get-container/$', 'get_container',
diff --git a/ishtar/ishtar_base/views.py b/ishtar/ishtar_base/views.py
index d036c9876..631e71ed7 100644
--- a/ishtar/ishtar_base/views.py
+++ b/ishtar/ishtar_base/views.py
@@ -160,12 +160,13 @@ def format_val(val):
HIERARCHIC_LEVELS = 5
HIERARCHIC_FIELDS = ['period', 'unit', 'material']
+PRIVATE_FIELDS = ('id', 'history_modifier', 'order')
def get_item(model, func_name, default_name, extra_request_keys=[],
- bool_fields=[]):
+ base_request={}, bool_fields=[]):
"""
Generic treatment of tables
"""
- def func(request, data_type='json', **dct):
+ def func(request, data_type='json', full=False, **dct):
if 'type' in dct:
data_type = dct.pop('type')
if not data_type:
@@ -177,7 +178,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
for field in fields])
request_keys.update(extra_request_keys)
request_items = request.method == 'POST' and request.POST or request.GET
- dct = {}
+ dct = base_request
try:
old = 'old' in request_items and int(request_items['old'])
except ValueError:
@@ -239,9 +240,13 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
datas = []
if old:
items = [item.get_previous(old) for item in items]
+ table_cols = full and [field.name for field in model._meta.fields
+ if field.name not in PRIVATE_FIELDS] \
+ or model.TABLE_COLS
+ print table_cols
for item in items:
data = [item.pk]
- for k in model.TABLE_COLS:
+ for k in table_cols:
vals = [item]
for ky in k.split('.'):
new_vals = []
@@ -273,7 +278,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
res = {'id':data[0], 'link':lnk}
for idx, value in enumerate(data[1:]):
if value:
- res[model.TABLE_COLS[idx].split('.')[-1]] = value
+ res[table_cols[idx].split('.')[-1]] = value
rows.append(res)
data = json.dumps({
"records":len(items),
@@ -288,7 +293,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
response['Content-Disposition'] = 'attachment; filename=%s'%filename
writer = csv.writer(response, **CSV_OPTIONS)
col_names = []
- for field_name in model.TABLE_COLS:
+ for field_name in table_cols:
try:
field = model._meta.get_field(field_name)
except:
@@ -503,6 +508,7 @@ get_contextrecordsource = get_item(models.ContextRecordSource,
get_archaeologicalitem = get_item(models.Item,
'get_archaeologicalitem', 'item',
bool_fields = ['base_items__is_isolated'],
+ base_request={'downstream_treatment__isnull':True},
extra_request_keys={
'base_items__context_record__parcel__town':
'base_items__context_record__parcel__town',
diff --git a/ishtar/ishtar_base/widgets.py b/ishtar/ishtar_base/widgets.py
index 3d5316dca..374fde2c5 100644
--- a/ishtar/ishtar_base/widgets.py
+++ b/ishtar/ishtar_base/widgets.py
@@ -193,7 +193,7 @@ class JQueryJqGrid(forms.RadioSelect):
def __init__(self, source, form, associated_model, attrs={},
table_cols='TABLE_COLS', multiple=False, multiple_cols=[2], new=False,
- new_message=""):
+ new_message="", source_full=None):
self.source = source
self.form = form
self.attrs = attrs
@@ -202,6 +202,7 @@ class JQueryJqGrid(forms.RadioSelect):
self.multiple = multiple
self.multiple_cols = multiple_cols
self.new, self.new_message = new, new_message
+ self.source_full = source_full
def render(self, name, value=None, attrs=None):
t = loader.get_template('form_snippet.html')
@@ -248,8 +249,17 @@ class JQueryJqGrid(forms.RadioSelect):
""" % (name, name)
encoding = settings.ENCODING or 'utf-8'
rendered += """
-<div id="foot_%s" class="gridfooter"><a href="%scsv" target="_blank">%s (%s)</a></div>
-""" % (name, unicode(self.source), unicode(_("Export as CSV")), encoding)
+<div id="foot_%s" class="gridfooter">
+""" % name
+ if unicode(self.source_full):
+ rendered += """%s (%s) <a href="%scsv" target="_blank">%s</a> - \
+<a href="%scsv" target="_blank">%s</a>
+""" % (unicode(_("Export as CSV")), encoding, unicode(self.source),
+ unicode(_(u"simple")), unicode(self.source_full), unicode(_(u"full")),)
+ else:
+ rendered += """<a href="%scsv" target="_blank">%s (%s)</a>
+""" % (unicode(self.source), unicode(_("Export as CSV")), encoding)
+ rendered += "</div>\n"
if self.multiple:
rendered += '''
<input type="button" id="add_button_%s" value="%s"/>
diff --git a/ishtar/locale/fr/LC_MESSAGES/django.po b/ishtar/locale/fr/LC_MESSAGES/django.po
index 0fbdc55dd..e3038d28e 100644
--- a/ishtar/locale/fr/LC_MESSAGES/django.po
+++ b/ishtar/locale/fr/LC_MESSAGES/django.po
@@ -1018,7 +1018,7 @@ msgstr "Disponible"
#: ishtar_base/models.py:250
msgid "Last modifier"
-msgstr "Dernier modifieur"
+msgstr "Dernier éditeur"
#: ishtar_base/models.py:353
msgid "Number"