From e55e78ba2d5c82d48ad57e044d0d95160da69a14 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Fri, 28 Aug 2009 11:02:20 +0200 Subject: [PATCH] basic text management --- .bzrignore | 2 + __init__.py | 0 __init__.pyc | Bin 0 -> 130 bytes dev.sqlite | Bin 0 -> 101376 bytes manage.py | 11 ++ monitor.py | 113 ++++++++++++++++++++ settings.py | 99 ++++++++++++++++++ settings.pyc | Bin 0 -> 2365 bytes text/__init__.py | 0 text/admin.py | 27 +++++ text/management/__init__.py | 0 text/management/commands/__init__.py | 0 text/management/commands/import_text.py | 35 +++++++ text/models.py | 130 ++++++++++++++++++++++++ text/tests.py | 23 +++++ text/views.py | 1 + urls.py | 30 ++++++ urls.pyc | Bin 0 -> 709 bytes wsgi/django.wsgi | 28 +++++ 19 files changed, 499 insertions(+) create mode 100644 .bzrignore create mode 100644 __init__.py create mode 100644 __init__.pyc create mode 100644 dev.sqlite create mode 100755 manage.py create mode 100644 monitor.py create mode 100644 settings.py create mode 100644 settings.pyc create mode 100644 text/__init__.py create mode 100644 text/admin.py create mode 100644 text/management/__init__.py create mode 100644 text/management/commands/__init__.py create mode 100644 text/management/commands/import_text.py create mode 100644 text/models.py create mode 100644 text/tests.py create mode 100644 text/views.py create mode 100644 urls.py create mode 100644 urls.pyc create mode 100644 wsgi/django.wsgi diff --git a/.bzrignore b/.bzrignore new file mode 100644 index 0000000..66dbc21 --- /dev/null +++ b/.bzrignore @@ -0,0 +1,2 @@ +host_settings/* +media/* diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/__init__.pyc b/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b309c2cf399132f63e98126371797292cd9de1e GIT binary patch literal 130 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 sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path) + print >> sys.stderr, '%s Triggering process restart.' % prefix + os.kill(os.getpid(), signal.SIGINT) + +def _modified(path): + try: + # If path doesn't denote a file and were previously + # tracking it, then it has been removed or the file type + # has changed so force a restart. If not previously + # tracking the file then we can ignore it as probably + # pseudo reference such as when file extracted from a + # collection of modules contained in a zip file. + + if not os.path.isfile(path): + return path in _times + + # Check for when file last modified. + + mtime = os.stat(path).st_mtime + if path not in _times: + _times[path] = mtime + + # Force restart when modification time has changed, even + # if time now older, as that could indicate older file + # has been restored. + + if mtime != _times[path]: + return True + except: + # If any exception occured, likely that file has been + # been removed just before stat(), so force a restart. + + return True + + return False + +def _monitor(): + while 1: + # Check modification times on all files in sys.modules. + + for module in sys.modules.values(): + if not hasattr(module, '__file__'): + continue + path = getattr(module, '__file__') + if not path: + continue + if os.path.splitext(path)[1] in ['.pyc', '.pyo', '.pyd']: + path = path[:-1] + if _modified(path): + return _restart(path) + + # Check modification times on files which have + # specifically been registered for monitoring. + + for path in _files: + if _modified(path): + return _restart(path) + + # Go to sleep for specified interval. + + try: + return _queue.get(timeout=_interval) + except: + pass + +_thread = threading.Thread(target=_monitor) +_thread.setDaemon(True) + +def _exiting(): + try: + _queue.put(True) + except: + pass + _thread.join() + +atexit.register(_exiting) + +def track(path): + if not path in _files: + _files.append(path) + +def start(interval=1.0): + global _interval + if interval < _interval: + _interval = interval + + global _running + _lock.acquire() + if not _running: + _running = True + _thread.start() + _lock.release() diff --git a/settings.py b/settings.py new file mode 100644 index 0000000..031b201 --- /dev/null +++ b/settings.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +# vi:si:et:sw=4:sts=4:ts=4 +# Written 2009 by j@mailb.org + +import os +from os.path import join +from django.conf import global_settings + +PROJECT_PATH = os.path.normpath(os.path.dirname(__file__)) + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +) + +MANAGERS = ADMINS + +DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. +DATABASE_NAME = 'dev.sqlite' # Or path to database file if using sqlite3. +DATABASE_USER = '' # Not used with sqlite3. +DATABASE_PASSWORD = '' # Not used with sqlite3. +DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. +DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. + +# Local time zone for this installation. Choices can be found here: +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name +# although not all choices may be available on all operating systems. +# If running in a Windows environment this must be set to the same as your +# system time zone. +TIME_ZONE = 'Europe/Berlin' + +# Language code for this installation. All choices can be found here: +# http://www.i18nguy.com/unicode/language-identifiers.html +LANGUAGE_CODE = 'en-us' + +SITE_ID = 1 + +# If you set this to False, Django will make some optimizations so as not +# to load the internationalization machinery. +USE_I18N = True + +# Absolute path to the directory that holds media. +# Example: "/home/media/media.lawrence.com/" +MEDIA_ROOT = join(PROJECT_PATH, 'media') +STATIC_ROOT = join(PROJECT_PATH, 'static') + +# URL that handles the media served from MEDIA_ROOT. Make sure to use a +# trailing slash if there is a path component (optional in other cases). +# Examples: "http://media.lawrence.com", "http://example.com/media/" +MEDIA_URL = '/texts/' + +# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# trailing slash. +# Examples: "http://foo.com/media/", "/media/". +ADMIN_MEDIA_PREFIX = '/admin/media/' + +# Make this unique, and don't share it with anybody. +SECRET_KEY = '@8+=n)(@(gv0ogqm6pnvs6ag@&qa3syb^qy8@#x7f68)cyrs(*' + +# List of callables that know how to import templates from various sources. +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', +# 'django.template.loaders.eggs.load_template_source', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', +) + +ROOT_URLCONF = 'texts.urls' + +TEMPLATE_DIRS = ( + join(PROJECT_PATH, 'templates'), +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.admin', + 'texts.text', +) + +try: + import socket + # hostname = socket.gethostname().replace('.','_') + # exec "from host_settings.%s import *" % hostname + local_settings_module = socket.gethostname().split(".")[0] + if local_settings_module: + execfile(os.path.join(PROJECT_PATH, "host_settings", "%s.py" % local_settings_module)) +except ImportError, e: + raise e + diff --git a/settings.pyc b/settings.pyc new file mode 100644 index 0000000000000000000000000000000000000000..930bc55f84884d7376de8e9fe918f2bad90cf731 GIT binary patch literal 2365 zcmd5;TUXmg5FYs=?w1fqO34)n73rznHa&!gvIm;*1iBdQn&Q`T z`WyPY`d9h~+SwI0PT=&lk*)F0%+Bo0H?zC`>+hM#Cx86;z75yU4F2xm%Mt~E;8%e& z052aG;7oz20A2wUp)0~!5uy@!B~U0pScXuA>%kb%akx^%*P8%33EmXYDe$I&JOghA z=nQzXK+t#&NEy6&AS!tGBwdj7zNCvl#=u(wG7jDYAQRv{l-|AoS^zo$WD>40qU8ZQ zCD|{5OoO)q1Xp={XzPf3_zyk}4Z#OqLUNjhNzTn7*NM`jAo3aIJWM)_kD-j6M9J5QA=sFbFyN|~&jTK|nebZW^pdlx z^iT~*941vcugbnh?aubsKPH>nj@G&OHtn3pTixV>Z3Ug3jq~6Y>mU7k-rwF?yL^4T zwY}NyXH0v^UZWW~4U$e;;WX|>0jHHH4G7Ixob%~kw2K=v$U7BDSPuDwn4Y+ zlQ5%go@OCscRSd;aS(@uMD({Hqm_0V$7xd8lRx#Loc(Y!yPYOH3y&&{G8U!@tBjaC zxopI6B*%ea(BmhgMmq8|L6i~cG#RlK<&&6KdRfHygk*D^7`uNvBH@^=+?I=laRJ`% zVt5a4>j#;z#XEG^NbD|!YyjC|d5D5?(Lj|D32@P8Cn@8@&Xj%jf>pYGO-#@VNdDIr z(2630&%X~exeq_bdTTEcK`si3g%(FdiscRXiH$?xQ%J72H+JB$Jv_j~6h4mHB+X*U z2wU8-Nf1-1@O`oWeVHt!%-w^1K8qvQthZ{qYx=oJ zAf_92tKmp@b-khQo3_KnfobTjzNBBMiY}56BHhNW;d!|Y5)0xuT!(fwYt@m8ibG&U@>6u2Y8u3oE|hOf6;PJUyg?K8ZL zMD;tAiz7gmRn&`h@m}IfIEvEt$ff1SDd|Od>FFhHi{eWMR@_Z9Ze|%$(LQ)v;&VgT zDzep+G^W+lYAZ`m@yus~d+Pc|!~;hn`zBxHCmD!~cGJqdGGBO7P!+YHmhe@EpE1do m)Y6#&K~0xxq&*7M1DZvNEP<=@Y>> 1 + 1 == 2 +True +"""} + diff --git a/text/views.py b/text/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/text/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/urls.py b/urls.py new file mode 100644 index 0000000..d3655e7 --- /dev/null +++ b/urls.py @@ -0,0 +1,30 @@ +from django.conf.urls.defaults import * +from django.conf import settings + +# Uncomment the next two lines to enable the admin: +from django.contrib import admin +admin.autodiscover() + + +urlpatterns = patterns('', + # Example: + # (r'^', include('texts.foo.urls')), + + # Uncomment the admin/doc line below and add 'django.contrib.admindocs' + # to INSTALLED_APPS to enable admin documentation: + # (r'^admin/doc/', include('django.contrib.admindocs.urls')), + + # Uncomment the next line to enable the admin: + (r'^admin/', include(admin.site.urls)), +) + +if settings.DEBUG: + urlpatterns += patterns('', + (r'^%s(?P.*)$' % settings.MEDIA_URL.lstrip('/'), + 'django.views.static.serve', + {'document_root': settings.MEDIA_ROOT}), + (r'^static/(?P.*)$', 'django.views.static.serve', + {'document_root': settings.STATIC_ROOT}), + ) + + diff --git a/urls.pyc b/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b80f84c930fd80dcf7c2d1f289ed8b08f78c2872 GIT binary patch literal 709 zcmY*V!EVz)5S_IhCw7_=34uUdLAX8Gw{ocpg;rG&&?rqWJrKFxO|yyPjXdK3=kO2Q z`31hDzrqi|tX&$qvd3@UjNi=Lo8P_g=l37)Gq^ol{C&eO{^B6{5ikcBS>(W6K<>b$ z1H$Gm%w5Pmxb#3M4|EIGz{m&bfoy?lgJnCQ16T`~II!k_Lr@OrE|>wga?*7BHM<46 z2eNIuAIlC*Ma^!53}A2Kf(&89KKRG3U3kT+h2W*Sa2{C$`VXH-Fd`dv8`xopibxmN z*f1?-Qn}CtF#v3H_*~}+_AP#a(d)tfGNtK3yu0(f7EACcm*gxhu1&ns>I=q5Dd{Xm zRjw5EY}I7dLKQSFjUjwwrJA1Pp5CX(PNDzwGE+?As?0H#YLZqtA$2#?Y;{<>+P+6p zsjr5Pm9pm3ij35lnUyNZdglE}l?9UZr;9AFq#}