diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-02-27 20:44:52 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-06-17 13:21:27 +0200 |
commit | 0f3229a119e53054d98c5e878a9581403628cd08 (patch) | |
tree | e07ad2e91e2544f7b2d61e8f3f653fdda26bfd52 /ishtar_common/views.py | |
parent | cfabd636d0a6d84e8377be3e4d041b4e75ddda9a (diff) | |
download | Ishtar-0f3229a119e53054d98c5e878a9581403628cd08.tar.bz2 Ishtar-0f3229a119e53054d98c5e878a9581403628cd08.zip |
Migrate to python 3 - Clean old migrations and some old scripts
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 |