Skip to content

Commit

Permalink
Switch to docker
Browse files Browse the repository at this point in the history
  • Loading branch information
gthole committed Feb 15, 2016
1 parent 969bad8 commit b1138f6
Show file tree
Hide file tree
Showing 73 changed files with 733 additions and 749 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,8 @@ pip-log.txt

*bootstrap*.js
*bootstrap*.css
*d3.*.js
*d3.*.js

.files/
*.ged
settings_local.py
10 changes: 10 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM python:2.7

COPY ./ /src/

WORKDIR /src/
RUN pip install -r reqs.pip

RUN adduser --disabled-password --gecos '' gedgo
RUN chown -R gedgo:gedgo /src
USER gedgo
7 changes: 0 additions & 7 deletions __init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +0,0 @@
from django.conf import settings
import redis

REDIS = None
if hasattr(settings, 'GEDGO_REDIS_SERVER'):
REDIS = redis.StrictRedis(host=settings.GEDGO_REDIS_SERVER)
REDIS.ping()
44 changes: 0 additions & 44 deletions api.py

This file was deleted.

42 changes: 42 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Dev services
avahi:
image: 'enernoclabs/avahi:latest'
net: 'host'
log_driver: 'none'
restart: 'on-failure'
db:
image: 'mysql'
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: 'docker'
MYSQL_DATABASE: 'gedgo'
MYSQL_USER: 'gedgo'
MYSQL_PASSWORD: 'gedgo'
log_driver: 'none'
redis:
image: 'redis'
ports:
- '6379'
log_driver: 'none'
# Application
app:
build: '.'
container_name: 'gedgo_app'
command: ['python', 'manage.py', 'runserver', '0.0.0.0:8000']
volumes:
- './:/src'
ports:
- '8000:8000'
links:
- 'db'
- 'redis'
worker:
image: 'gedgo_app'
command: ['python', 'manage.py', 'celeryd', '-c', '1', '--loglevel=info']
volumes:
- './:/src'
links:
- 'app'
- 'db'
- 'redis'
7 changes: 7 additions & 0 deletions gedgo/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.conf import settings
import redis as Redis

redis = None
if hasattr(settings, 'GEDGO_REDIS_SERVER'):
redis = Redis.StrictRedis(host=settings.GEDGO_REDIS_SERVER)
redis.ping()
File renamed without changes.
File renamed without changes.
File renamed without changes.
34 changes: 28 additions & 6 deletions gedcom_update.py → gedgo/gedcom_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils import timezone
from django.conf import settings
from datetime import datetime
from dropbox.dropbox import Dropbox
from re import findall
from os import path, mkdir

Expand Down Expand Up @@ -54,7 +55,7 @@ def update(g, file_name, verbose=True):
g.save()


#--- Second Level script functions
# --- Second Level script functions
def __process_all_relations(gedcom, parsed, verbose=True):
if verbose:
print ' Starting Person objects.'
Expand Down Expand Up @@ -254,7 +255,7 @@ def __process_Document(entry, obj, g):
else:
thumb = None

known = Document.objects.filter(docfile=unicode(file_name))
known = Document.objects.filter(docfile=file_name.decode('utf-8').strip())

if len(known) > 0:
m = known[0]
Expand Down Expand Up @@ -353,19 +354,40 @@ def __child_by_tag(entry, tag):
return child


# TODO: Proper Storage class approach to this code
def __valid_document_entry(e):
file_name = __child_value_by_tags(e, 'FILE')
img_presence = path.join(settings.MEDIA_ROOT, path.basename(file_name))
file_name = __strip_files_directories(e)
media_file = path.join(settings.MEDIA_ROOT, file_name)

# The file exists already
if isinstance(file_name, basestring) and file_name and \
path.exists(media_file):
return True

if __get_from_dropbox(file_name, media_file, ):
return True

return isinstance(file_name, basestring) and file_name and \
path.exists(img_presence)
return False


def __strip_files_directories(e):
file_name = __child_value_by_tags(e, 'FILE')
return path.basename(file_name)


def __get_from_dropbox(file_name, media_file_name):
if not getattr(settings, 'DROPBOX_ACCESS_TOKEN', None):
return False
d = Dropbox(settings.DROPBOX_ACCESS_TOKEN)
resource_path = path.join(settings.DROPBOX_BASE_PATH, file_name)
print ' .. %s' % resource_path
try:
d.files_download_to_file(media_file_name, resource_path)
return True
except:
return False


def make_thumbnail(file_name):
base_name = path.basename(file_name)
dir_name = path.dirname(file_name)
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
14 changes: 7 additions & 7 deletions middleware.py → gedgo/middleware.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from gedgo import REDIS
from gedgo import redis
import json
import time
import re
Expand All @@ -16,8 +16,8 @@ class SimpleTrackerMiddleware(object):
"""

def process_response(self, request, response):
# Don't process if REDIS isn't configured or non-200 response
if REDIS is None or response.status_code != 200:
# Don't process if redis isn't configured or non-200 response
if redis is None or response.status_code != 200:
return response

# Only track non-superuser visitors
Expand All @@ -41,15 +41,15 @@ def process_response(self, request, response):
'path': request.path_info,
'time': int(time.time())
}
REDIS.lpush('gedgo_user_%d_page_views' % id_, json.dumps(page_view))
REDIS.ltrim('gedgo_user_%d_page_views' % id_, 0, 100)
redis.lpush('gedgo_user_%d_page_views' % id_, json.dumps(page_view))
redis.ltrim('gedgo_user_%d_page_views' % id_, 0, 100)

return response


def _increment_key(key_name):
try:
pvc = int(REDIS.get(key_name))
pvc = int(redis.get(key_name))
except TypeError:
pvc = 0
REDIS.set(key_name, pvc + 1)
redis.set(key_name, pvc + 1)
Loading

0 comments on commit b1138f6

Please sign in to comment.