summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py61
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