diff options
| 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 | 
| commit | 72f770aa1ef7d9e1945903cf5f8c6c58f57f2232 (patch) | |
| tree | dfe2afaaf33446b2e6493cbd5aa097e2a1e13153 | |
| parent | 715f37eb9f620e96e7639d324454fcd586a2e59d (diff) | |
| download | Ishtar-72f770aa1ef7d9e1945903cf5f8c6c58f57f2232.tar.bz2 Ishtar-72f770aa1ef7d9e1945903cf5f8c6c58f57f2232.zip | |
First version of the full export (closes #249)
| -rw-r--r-- | ishtar/ishtar_base/forms_context_records.py | 3 | ||||
| -rw-r--r-- | ishtar/ishtar_base/forms_files.py | 2 | ||||
| -rw-r--r-- | ishtar/ishtar_base/forms_items.py | 2 | ||||
| -rw-r--r-- | ishtar/ishtar_base/forms_operations.py | 3 | ||||
| -rw-r--r-- | ishtar/ishtar_base/models.py | 8 | ||||
| -rw-r--r-- | ishtar/ishtar_base/urls.py | 9 | ||||
| -rw-r--r-- | ishtar/ishtar_base/views.py | 18 | ||||
| -rw-r--r-- | ishtar/ishtar_base/widgets.py | 16 | ||||
| -rw-r--r-- | ishtar/locale/fr/LC_MESSAGES/django.po | 2 | 
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" | 
