Skip to content

Commit

Permalink
Tests work once more
Browse files Browse the repository at this point in the history
  • Loading branch information
gthole committed Feb 3, 2018
1 parent 410de9a commit 2e5f2d4
Show file tree
Hide file tree
Showing 16 changed files with 71 additions and 54 deletions.
8 changes: 4 additions & 4 deletions gedgo/gedcom_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from django.db import transaction
from django.utils.datetime_safe import date
from django.utils import timezone
from datetime import datetime, date
from datetime import datetime
from re import findall
from os import path

Expand All @@ -24,7 +24,8 @@ def update(g, file_name, verbose=True):
title=__child_value_by_tags(parsed.header, 'TITL', default=''),
last_updated=datetime(1920, 1, 1) # TODO: Fix.
)
print 'Gedcom id=%s' % g.id
if verbose:
print 'Gedcom id=%s' % g.id

if verbose:
print 'Importing entries to models'
Expand Down Expand Up @@ -177,7 +178,6 @@ def __process_Person(entry, g):
p.profile.add(d)



def __process_Family(entry, g):
f, _ = Family.objects.get_or_create(
pointer=entry['pointer'],
Expand Down Expand Up @@ -297,7 +297,7 @@ def __check_unchanged(entry, existing):
__child_value_by_tags(entry, ['CHAN', 'DATE'])
)[0]
return isinstance(existing.last_changed, date) and \
changed == existing.last_changed
changed == existing.last_changed


DATE_FORMATS = [
Expand Down
4 changes: 2 additions & 2 deletions gedgo/management/commands/update_gedcom.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def handle(self, *args, **options):
gid = args[0]
try:
g = Gedcom.objects.get(pk=gid)
except:
except Exception:
raise CommandError('Gedcom "%s" does not exist.' % gid)

file_name = args[1]
Expand All @@ -51,7 +51,7 @@ def handle(self, *args, **options):
errstr = ''
try:
update(g, file_name)
except:
except Exception:
e = exc_info()[0]
errstr = 'There was an error: %s\n%s' % (
e, traceback.format_exc())
Expand Down
3 changes: 2 additions & 1 deletion gedgo/models/comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class Meta:
user = models.ForeignKey(User)
text = models.TextField()
posted = models.DateTimeField(auto_now_add=True)
upload = models.FileField(upload_to='uploads/comments', null=True, blank=True)
upload = models.FileField(upload_to='uploads/comments', null=True,
blank=True)

gedcom = models.ForeignKey('Gedcom', null=True, blank=True)
person = models.ForeignKey('Person', null=True, blank=True)
Expand Down
2 changes: 0 additions & 2 deletions gedgo/models/gedcom.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
from django.db import models
import random

from person import Person


Expand Down
1 change: 1 addition & 0 deletions gedgo/models/person.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ def education_delimited(self):
else:
return ''


# Keywords to filter out document-type photos in preference of portraits.
BLOCK_TAGS_RE = re.compile(
"(?i)(?:death|birth|masscard|census|burial|tax|obit|cemet(?:a|e)ry|"
Expand Down
6 changes: 3 additions & 3 deletions gedgo/storages.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def exists(self, name):
self.client.files_get_metadata(self.path(name)),
(FileMetadata, FolderMetadata)
)
except:
except Exception:
return False

def listdir(self, name):
Expand All @@ -43,7 +43,7 @@ def _list_from_contents(self, path, contents):
return (directories, files)

def open(self, name, mode='rb'):
meta, resp= self.client.files_download(self.path(name))
meta, resp = self.client.files_download(self.path(name))
return resp.raw

def size(self, name):
Expand Down Expand Up @@ -81,7 +81,6 @@ def can_preview(self, name):
)



class FileSystemSearchableStorage(FileSystemStorage):
def search(self, query):
terms = [term for term in query.lower().split()]
Expand Down Expand Up @@ -126,6 +125,7 @@ def resize_thumb(file_, size='w128h128', crop=None):
im.save(output, 'JPEG')
return output


research_storage = import_string(settings.GEDGO_RESEARCH_FILE_STORAGE)(
location=settings.GEDGO_RESEARCH_FILE_ROOT)

Expand Down
4 changes: 3 additions & 1 deletion gedgo/tasks.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# flake8: noqa: E402
from __future__ import absolute_import
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

import django
django.setup()

Expand Down Expand Up @@ -29,7 +31,7 @@ def async_update(gedcom_id, file_name, recipient_ids,
errstr = ''
try:
update(gedcom, file_name, verbose=False)
except:
except Exception:
errstr = traceback.format_exc()

end = datetime.now()
Expand Down
72 changes: 43 additions & 29 deletions gedgo/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.test.utils import override_settings

from gedgo.gedcom_update import update
from gedgo.models import Person, Family, Gedcom
from gedgo.models import Person, Family, Gedcom, Comment
from datetime import date
from mock import patch

Expand Down Expand Up @@ -87,35 +87,56 @@ def test_pages_load(self):
self.assertEqual(resp.status_code, 200,
'%s %s' % (resp.status_code, page))

def test_comments(self):
pages = [
('/gedgo/1/', 'Test Gedcom'),
('/gedgo/1/I1/', 'John Doe (I1)')
]
def test_comment_person(self):
self.login_user()
data = {
'message': 'My test message'
'person': 'I1',
'text': 'My test message'
}
for page, noun in pages:
resp = self.client.post(page, data)
self.assertEqual(resp.status_code, 302)

self.assertEqual(len(mail.outbox), 1)
message = mail.outbox[0]
self.assertEqual(
message.subject,
'Comment from Test User about %s' % noun
)
self.assertEqual(message.body, data['message'] + '\n\n')
resp = self.client.post('/gedgo/%s/I1/' % self.gedcom.id, data)
self.assertEqual(resp.status_code, 302)

mail.outbox = []
self.assertEqual(len(mail.outbox), 1)
message = mail.outbox[0]
self.assertEqual(
message.subject,
'Comment from Test User about Doe, John (I1)'
)
self.assertEqual(message.body.split('\n\n')[-1], data['text'])
self.assertEqual(
Comment.objects.filter(person__pointer='I1').count(),
1
)

mail.outbox = []

def test_comment_gedcom(self):
self.login_user()
data = {
'gedcom': '1',
'text': 'My test message'
}
resp = self.client.post('/gedgo/1/', data)
self.assertEqual(resp.status_code, 302)

self.assertEqual(len(mail.outbox), 1)
message = mail.outbox[0]
self.assertEqual(
message.subject,
'Comment from Test User about Test Gedcom (1)'
)
self.assertEqual(message.body.split('\n\n')[-1], data['text'])
self.assertEqual(Comment.objects.filter(gedcom__id=1).count(), 1)
mail.outbox = []

@patch('django.core.files.storage.default_storage.save')
def test_upload_file(self, FileStorageMock):
self.login_user()
with open('gedgo/static/img/generic_person.gif') as fp:
data = {
'message': 'My test message',
'person': 'I1',
'text': 'My test message',
'uploads': fp
}
resp = self.client.post('/gedgo/%s/I1/' % self.gedcom.id, data)
Expand All @@ -125,18 +146,11 @@ def test_upload_file(self, FileStorageMock):
message = mail.outbox[0]
self.assertEqual(
message.subject,
'Comment from Test User about John Doe (I1)'
)
self.assertTrue(
message.body.endswith(
'uploaded/test/%s/I1/generic_person.gif' % self.gedcom.id
)
'Comment from Test User about Doe, John (I1)'
)

self.assertTrue(FileStorageMock.called)
self.assertTrue(
('uploaded/test/%s/I1/generic_person.gif' % self.gedcom.id)
in str(FileStorageMock.call_args))
comment = Comment.objects.filter(person__pointer='I1').first()
self.assertFalse(comment.upload is None)

# TODO: Sort this test out
@override_settings(CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
Expand Down
3 changes: 2 additions & 1 deletion gedgo/views/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from search import search
from model_views import person, gedcom, documentaries, document, documentary_by_id
from model_views import person, gedcom, documentaries, document, \
documentary_by_id
from dashboard import dashboard, user_tracking, worker_status
from blog import blog, blog_list, blogpost
from research import research
Expand Down
4 changes: 2 additions & 2 deletions gedgo/views/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def worker_status(request):
"""
try:
status = app.control.ping() or []
except Exception as e:
except Exception:
# TODO: What celery exceptions are we catching here?
status = []
return HttpResponse(
Expand Down Expand Up @@ -166,5 +166,5 @@ def _timestamp_from_redis(key):
try:
timestamp = redis.get(key)
return datetime.datetime.fromtimestamp(int(timestamp))
except:
except Exception:
pass
4 changes: 2 additions & 2 deletions gedgo/views/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
from django.contrib.auth.decorators import login_required
from django.http import Http404
from django.conf import settings
from django.shortcuts import redirect

from gedgo.views.research import can_preview
from gedgo.storages import gedcom_storage, research_storage, documentary_storage
from gedgo.storages import gedcom_storage, research_storage, \
documentary_storage

import mimetypes
from os import path
Expand Down
3 changes: 2 additions & 1 deletion gedgo/views/model_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ def person(request, gedcom_id, person_id):
context = {
'person': p,
'posts': BlogPost.objects.filter(tagged_people=p),
'photos': [photo for photo in p.photos if not photo.id == p.key_photo.id],
'photos': [photo for photo in p.photos
if not photo.id == p.key_photo.id],
'gedcom': g,
'form': form,
'comment_noun': str(p)
Expand Down
5 changes: 2 additions & 3 deletions gedgo/views/research.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from django.http import Http404
from django.contrib.auth.decorators import login_required
from django.core.files.storage import default_storage

from os import path
import mimetypes
Expand Down Expand Up @@ -68,7 +67,7 @@ def research(request, pathname):
if request.GET.get('fn'):
try:
index = [f[len(dirname):] for f in files].index(basename)
except:
except Exception:
raise Http404
next_file = files[(index + 1) % len(files)]
prev_file = files[(index - 1) % len(files)]
Expand Down Expand Up @@ -99,6 +98,7 @@ def process_file(name, p, is_dir=False):
'preview': can_preview(storage, p)
}


# glyphicon name mappings
MIMETYPE_MAPPING = {
'video': 'video-camera',
Expand All @@ -107,7 +107,6 @@ def process_file(name, p, is_dir=False):
}



def _get_type(c):
guess, _ = mimetypes.guess_type(c)
if guess and guess.split('/')[0] in MIMETYPE_MAPPING:
Expand Down
1 change: 0 additions & 1 deletion gedgo/views/util.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from django.core.files.storage import default_storage
from django.conf import settings
from django.shortcuts import redirect
from django.contrib.auth import logout
Expand Down
1 change: 1 addition & 0 deletions gedgo/views/visualizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ def __gatherby(inlist, func):
d[func(item)].append(item)
return d.values()


# TODO: Switch to database storage?
HISTORICAL = [
['First Nobel Prizes awarded', 1901],
Expand Down
4 changes: 2 additions & 2 deletions test.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/bin/bash
set -e

rm -rf /src/files/test
mkdir /src/files/test
rm -rf /app/files/test
mkdir /app/files/test

flake8 ./ --exclude migrations

Expand Down

0 comments on commit 2e5f2d4

Please sign in to comment.