diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 61 | 
1 files changed, 30 insertions, 31 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 8f7964576..e18d63101 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -23,7 +23,6 @@ import importlib  import json  import logging  import os -import unicodecsv  import unicodedata  from django.apps import apps @@ -47,7 +46,7 @@ from django.views.generic.edit import CreateView, DeleteView, FormView, \  from extra_views import ModelFormSetView  from markdown import markdown -import models +from . import models  from archaeological_context_records.models import ContextRecord  from archaeological_files.forms import DashboardForm as DashboardFormFile  from archaeological_files.models import File @@ -67,7 +66,7 @@ from ishtar_common.utils import clean_session_cache, CSV_OPTIONS, \      dict_to_tuple  from ishtar_common.widgets import JQueryAutoComplete -from views_item import CURRENT_ITEM_KEYS, CURRENT_ITEM_KEYS_DICT, \ +from .views_item import CURRENT_ITEM_KEYS, CURRENT_ITEM_KEYS_DICT, \      check_permission, display_item, get_item, new_item, show_item  logger = logging.getLogger(__name__) @@ -209,7 +208,7 @@ def get_autocomplete_generic(model, extra=None):          limit = 20          objects = model.objects.filter(query)[:limit]          get_label = lambda x: x.full_label() if hasattr(x, 'full_label') \ -            else unicode(x) +            else str(x)          data = json.dumps([{'id': obj.pk, 'value': get_label(obj)}                             for obj in objects])          return HttpResponse(data, content_type='text/plain') @@ -287,7 +286,7 @@ def shortcut_menu(request):              if current:                  try:                      item = model.objects.get(pk=int(current)) -                    item_label = shortify(unicode(item), 60) +                    item_label = shortify(str(item), 60)                      current_selected_labels.append(item_label)                  except model.DoesNotExist:                      pass @@ -327,7 +326,7 @@ def shortcut_menu(request):              request.user, menu_filtr=current_selected_item,              limit=100, values=values, get_short_menu_class=True) or []          for item, shortmenu_class in owns: -            pk = unicode(item['id']) +            pk = str(item['id'])              if shortmenu_class == 'basket':                  pk = "basket-" + pk              # prevent duplicates @@ -347,7 +346,7 @@ def shortcut_menu(request):              try:                  item = model.objects.get(pk=int(current))                  new_selected_item = item.pk -                item_label = shortify(unicode(item), 60) +                item_label = shortify(str(item), 60)                  labels[model_name][str(item.pk)] = item_label                  items.append((item.pk, item_label,                                True, item.get_short_menu_class(item.pk))) @@ -529,7 +528,7 @@ def autocomplete_user(request):      users = models.User.objects.filter(query)[:limit]      data = json.dumps([          {'id': user.pk, -         'value': unicode(user.ishtaruser)} +         'value': str(user.ishtaruser)}          for user in users if user and user.ishtaruser])      return HttpResponse(data, content_type='text/plain') @@ -552,7 +551,7 @@ def autocomplete_ishtaruser(request):      users = models.IshtarUser.objects.filter(query)[:limit]      data = json.dumps([          {'id': user.pk, -         'value': unicode(user)} +         'value': str(user)}          for user in users])      return HttpResponse(data, content_type='text/plain') @@ -583,7 +582,7 @@ def autocomplete_person(request, person_types=None, attached_to=None,      if attached_to:          query = query & Q(attached_to__pk__in=attached_to.split('_')) -    if person_types and unicode(person_types) != '0': +    if person_types and str(person_types) != '0':          try:              typs = [int(tp) for tp in person_types.split('_') if tp]              typ = models.PersonType.objects.filter(pk__in=typs).all() @@ -597,7 +596,7 @@ def autocomplete_person(request, person_types=None, attached_to=None,              return HttpResponse(json.dumps([]), content_type='text/plain')          query &= models.Person.get_query_owns(request.user.ishtaruser)      persons = models.Person.objects.filter(query)[:limit] -    data = json.dumps([{'id': person.pk, 'value': unicode(person)} +    data = json.dumps([{'id': person.pk, 'value': str(person)}                         for person in persons if person])      return HttpResponse(data, content_type='text/plain') @@ -613,7 +612,7 @@ def autocomplete_department(request):          query = query & extra      limit = 20      departments = models.Department.objects.filter(query)[:limit] -    data = json.dumps([{'id': department.pk, 'value': unicode(department)} +    data = json.dumps([{'id': department.pk, 'value': str(department)}                         for department in departments])      return HttpResponse(data, content_type='text/plain') @@ -631,7 +630,7 @@ def autocomplete_town(request):          query &= extra      limit = 20      towns = models.Town.objects.filter(query)[:limit] -    data = json.dumps([{'id': town.pk, 'value': unicode(town)} +    data = json.dumps([{'id': town.pk, 'value': str(town)}                         for town in towns])      return HttpResponse(data, content_type='text/plain') @@ -671,7 +670,7 @@ def department_by_state(request, state_id=''):      else:          departments = models.Department.objects.filter(state__number=state_id)          data = json.dumps([{'id': department.pk, 'number': department.number, -                            'value': unicode(department)} +                            'value': str(department)}                             for department in departments])      return HttpResponse(data, content_type='text/plain') @@ -700,7 +699,7 @@ def autocomplete_organization(request, orga_type=None):              pass      limit = 15      organizations = models.Organization.objects.filter(query)[:limit] -    data = json.dumps([{'id': org.pk, 'value': unicode(org)} +    data = json.dumps([{'id': org.pk, 'value': str(org)}                         for org in organizations])      return HttpResponse(data, content_type='text/plain') @@ -722,7 +721,7 @@ def autocomplete_author(request):          query = query & extra      limit = 15      authors = models.Author.objects.filter(query)[:limit] -    data = json.dumps([{'id': author.pk, 'value': unicode(author)} +    data = json.dumps([{'id': author.pk, 'value': str(author)}                         for author in authors])      return HttpResponse(data, content_type='text/plain') @@ -1013,7 +1012,7 @@ class DisplayItemView(IshtarMixin, TemplateView):      def get_context_data(self, *args, **kwargs):          data = super(DisplayItemView, self).get_context_data(*args, **kwargs) -        pk = unicode(kwargs.get('pk')) + '/' +        pk = str(kwargs.get('pk')) + '/'          item_url = '/show-' + kwargs.get('item_type')          data['show_url'] = item_url + "/" + pk          return data @@ -1160,9 +1159,8 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):                           for k in request.POST if k.startswith(prefix)]          updated_line = [value for line, value in sorted(submited_line)]          filename = self.imprt_obj.imported_file.path -        with open(filename, 'r') as f: -            reader = unicodecsv.reader( -                f, encoding=self.imprt_obj.encoding) +        with open(filename, 'r', encoding=self.imprt_obj.encoding) as f: +            reader = csv.reader(f)              lines = []              for idx, line in enumerate(reader):                  if idx == self.current_line_number: @@ -1181,7 +1179,7 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):                  return_importer_and_data=True              )          except IOError as e: -            self.errors = [e.message] +            self.errors = [str(e)]              return super(ImportStepByStepView, self).get(request, *args,                                                           **kwargs)          if self.imprt_obj.get_number_of_lines() >= self.current_line_number: @@ -1226,7 +1224,7 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):                  return_importer_and_data=True              )          except IOError as e: -            self.errors = [None, None, e.message] +            self.errors = [None, None, str(e)]              return super(ImportStepByStepView, self).get(request, *args,                                                           **kwargs)          if not data or not data[0]: @@ -1460,11 +1458,11 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):      def transform_path_to_label(self, cls, path):          label = u" > ".join( -            unicode(l) +            str(l)              for l in get_field_labels_from_path(cls, path)          )          if not label: -            label = unicode(cls._meta.verbose_name) +            label = str(cls._meta.verbose_name)          return label      def transform_keys_to_label(self, path, cls, dct): @@ -1472,7 +1470,7 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):          for k in dct:              label = get_field_labels_from_path(cls, [k])              if label: -                label = unicode(label[0]) +                label = str(label[0])              else:                  label = k @@ -1496,14 +1494,14 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):      def get_value(self, item):          if hasattr(item, 'SHOW_URL'): -            return u"{}{}".format(unicode(item), simple_link_to_window(item)) +            return u"{}{}".format(str(item), simple_link_to_window(item))          if hasattr(item, 'explicit_label'):              return item.explicit_label          if item in (None, [], [None]):              return _(u"* empty *")          if isinstance(item, list):              return self.list_to_html(item) -        return unicode(item) +        return str(item)  class ImportListTableView(ImportListView): @@ -1846,10 +1844,11 @@ def gen_generate_doc(model):              mimetype = 'text/csv'              if ext in MIMES:                  mimetype = MIMES[ext] -            response = HttpResponse(open(doc), content_type=mimetype) -            response['Content-Disposition'] = 'attachment; filename=%s' % \ -                                              doc_name -            return response +            with open(doc, "rb") as d: +                response = HttpResponse(d, content_type=mimetype) +                response['Content-Disposition'] = 'attachment; filename=%s' % \ +                                                  doc_name +                return response          return HttpResponse(content_type='text/plain')      return func | 
