This is where a tool like Docker is really useful; you can easily test a change like this in a completely clean environment - and quickly see if the problem is the new library version or actually just an issue with your machine setup.
On Wednesday, 19 June 2019 05:33:03 UTC+2, Mike Dewhirst wrote:
-- On Wednesday, 19 June 2019 05:33:03 UTC+2, Mike Dewhirst wrote:
Sorry to bother you. I uninstalled all the old packages and reinstalled
the new ones again and the problem has gone away.
On 18/06/2019 7:03 pm, Mike Dewhirst wrote:
> Can anyone point me in the right direction please?
>
> I'm currently switching from ...
>
> tinymce_lite4 and filebrowser-no-grappelli
> to
> django-tinymce, django-grappelli and django-filebrowser
>
> It is running on Ubuntu 18.04, Python3.6 and Django 2.1.
>
> Thanks
>
> Mike
>
> Internal Server Error: /tinymce/compressor/
>
> UnicodeDecodeError at /tinymce/compressor/
> 'ascii' codec can't decode byte 0xc2 in position 3146: ordinal not in
> range(128)
>
> Request Method: GET
> Request URL:
> https://tinymce/compressor/?js=true&diskcache=true&core= true&suffix=&themes=advanced& plugins=table%2Cspellchecker% 2Cpaste%2Csearchreplace& languages=en
> Django Version: 2.1.9
> Python Executable: /usr/bin/python3
> Python Version: 3.6.8
> Python Path: ['/var/www/train', '/usr/lib/python36.zip',
> '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload',
> '/usr/local/lib/python3.6/dist-packages',
> '/usr/lib/python3/dist-packages']
> Server time: Tue, 18 Jun 2019 08:26:39 +0000
> Installed Applications:
> ['filebrowser',
> 'grappelli',
> 'django.contrib.admin',
> 'django.contrib.admindocs',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'django.contrib.sites',
> 'tinymce',
> 'billing',
> 'common',
> 'course',
> 'credit']
> Installed Middleware:
> ['django.middleware.security.SecurityMiddleware',
> 'django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.contrib.auth.middleware. AuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking. XFrameOptionsMiddleware',
> 'pwned_passwords_django.middleware. PwnedPasswordsMiddleware']
>
>
> Traceback:
>
> File
> "/usr/local/lib/python3.6/dist-packages/django/core/ handlers/exception.py"
> in inner
> 34. response = get_response(request)
>
> File
> "/usr/local/lib/python3.6/dist-packages/django/core/ handlers/base.py"
> in _get_response
> 126. response = self.process_exception_by_middleware(e, request)
>
> File
> "/usr/local/lib/python3.6/dist-packages/django/core/ handlers/base.py"
> in _get_response
> 124. response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
>
> File "/usr/local/lib/python3.6/dist-packages/tinymce/views. py" in
> compressor
> 86. return gzip_compressor(request)
>
> File "/usr/local/lib/python3.6/dist-packages/tinymce/ compressor.py" in
> gzip_compressor
> 129. content.append(get_file_contents('{!s}.js'.format(f)))
>
> File "/usr/local/lib/python3.6/dist-packages/tinymce/ compressor.py" in
> get_file_contents
> 40. return f.read()
>
> File "/usr/lib/python3.6/encodings/ascii.py" in decode
> 26. return codecs.ascii_decode(input, self.errors)[0]
>
> Exception Type: UnicodeDecodeError at /tinymce/compressor/
> Exception Value: 'ascii' codec can't decode byte 0xc2 in position
> 3146: ordinal not in range(128)
> Request information:
> USER: miked [Superuser]
>
> GET:
> js = 'true'
> diskcache = 'true'
> core = 'true'
> suffix = ''
> themes = 'advanced'
> plugins = 'table,spellchecker,paste,searchreplace'
> languages = 'en'
>
> POST: No POST data
>
> FILES: No FILES data
>
> COOKIES:
> csrftoken =
> 'f5UTaS6WtWvhqImrqCh5E3JxTsMJ0h C1EH0Bd1ssGSFVa1JRRALs3DdJGH5U Ph07'
> sessionid = 'dgu3ev20h7auh8nec09rjp7sgbfesl 0t'
>
> META:
> CONTEXT_DOCUMENT_ROOT = '/var/www/train/htdocs/'
> CONTEXT_PREFIX = ''
> CSRF_COOKIE =
> 'f5UTaS6WtWvhqImrqCh5E3JxTsMJ0h C1EH0Bd1ssGSFVa1JRRALs3DdJGH5U Ph07'
> DOCUMENT_ROOT = '/var/www/train/htdocs/'
> GATEWAY_INTERFACE = 'CGI/1.1'
> HTTP_ACCEPT = '*/*'
> HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
> HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.5'
> HTTP_CACHE_CONTROL = 'max-age=0'
> HTTP_CONNECTION = 'keep-alive'
> HTTP_COOKIE =
> 'csrftoken=f5UTaS6WtWvhqImrqCh5E3JxTsMJ0h C1EH0Bd1ssGSFVa1JRRALs3DdJGH5U Ph07;
> sessionid=dgu3ev20h7auh8nec09rjp7sgbfesl 0t'
> HTTP_DNT = '1'
> HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0)
> Gecko/20100101 Firefox/67.0'
> PATH_INFO = '/tinymce/compressor/'
> PATH_TRANSLATED = '/var/www/train/train/wsgii.py/tinymce/compressor/ '
> QUERY_STRING =
> 'js=true&diskcache=true&core=true&suffix=&themes=advanced& plugins=table%2Cspellchecker% 2Cpaste%2Csearchreplace& languages=en'
> REQUEST_METHOD = 'GET'
> REQUEST_SCHEME = 'https'
> REQUEST_URI =
> '/tinymce/compressor/?js=true&diskcache=true&core=true& suffix=&themes=advanced& plugins=table%2Cspellchecker% 2Cpaste%2Csearchreplace& languages=en'
> SCRIPT_FILENAME = '/var/www/train/train/wsgii.py'
> SCRIPT_NAME = ''
> SERVER_PORT = '443'
> SERVER_PROTOCOL = 'HTTP/1.1'
> SERVER_SIGNATURE = '<address>Apache/2.4.29 (Ubuntu) Server at
> www.sharedtrain.com Port 443</address>\n'
> SERVER_SOFTWARE = 'Apache/2.4.29 (Ubuntu)'
> apache.version = '(2, 4, 27)'
> mod_wsgi.application_group = '|'
> mod_wsgi.callable_object = 'application'
> mod_wsgi.enable_sendfile = '0'
> mod_wsgi.handler_script = ''
> mod_wsgi.ignore_activity = '0'
> mod_wsgi.listener_host = ''
> mod_wsgi.listener_port = '443'
> mod_wsgi.path_info = '/tinymce/compressor/'
> mod_wsgi.process_group = ''
> mod_wsgi.request_handler = 'wsgi-script'
> mod_wsgi.request_id = 'fyk13xxSuY0'
> mod_wsgi.request_start = '1560846399777151'
> mod_wsgi.script_name = ''
> mod_wsgi.script_reloading = '1'
> mod_wsgi.script_start = '1560846399777431'
> mod_wsgi.thread_id = 5
> mod_wsgi.thread_requests = 0
> mod_wsgi.total_requests = 4
> mod_wsgi.version = '(4, 5, 17)'
> wsgi.errors = <_io.TextIOWrapper name='<wsgi.errors>' encoding='utf-8'>
> wsgi.file_wrapper = ''
> wsgi.input = <mod_wsgi.Input object at 0x7fae33a7d880>
> wsgi.multiprocess = True
> wsgi.multithread = True
> wsgi.run_once = False
> wsgi.url_scheme = 'https'
> wsgi.version = '(1, 0)'
>
> Settings:
> Using settings module train.settings.production
> ABSOLUTE_URL_OVERRIDES = {}
> APACHE = True
> APPEND_SLASH = True
> APPS_ROOT = '/var/www/train'
> AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
> AUTH_PASSWORD_VALIDATORS = '********************'
> AUTH_USER_MODEL = 'common.User'
> BASE_DIR = '/var/www/train/train'
> CACHES = {'default': {'BACKEND':
> 'django.core.cache.backends.locmem.LocMemCache'}}
> CACHE_MIDDLEWARE_ALIAS = 'default'
> CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
> CACHE_MIDDLEWARE_SECONDS = 600
> CSRF_COOKIE_AGE = 31449600
> CSRF_COOKIE_DOMAIN = None
> CSRF_COOKIE_HTTPONLY = True
> CSRF_COOKIE_NAME = 'csrftoken'
> CSRF_COOKIE_PATH = '/'
> CSRF_COOKIE_SAMESITE = 'Lax'
> CSRF_COOKIE_SECURE = True
> CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
> CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
> CSRF_TRUSTED_ORIGINS = []
> CSRF_USE_SESSIONS = False
> DATABASES = {'default': {'ENGINE':
> 'django.db.backends.postgresql_psycopg2', 'NAME': 'train', 'USER':
> 'miked', 'PASSWORD': '********************', 'HOST': 'localhost',
> 'PORT': '5432', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True,
> 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST':
> {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
> DATABASE_ROUTERS = []
> DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
> DATA_UPLOAD_MAX_NUMBER_FIELDS = 2000
> DATETIME_FORMAT = 'N j, Y, P'
> DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f',
> '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y
> %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S',
> '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
> DATE_FORMAT = 'N j, Y'
> DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
> '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B
> %Y', '%d %B, %Y']
> DEBUG = False
> DEBUG_PROPAGATE_EXCEPTIONS = False
> DECIMAL_SEPARATOR = '.'
> DEFAULT_APPS = ['django.contrib.admin', 'django.contrib.admindocs',
> 'django.contrib.auth', 'django.contrib.contenttypes',
> 'django.contrib.sessions', 'django.contrib.messages',
> 'django.contrib.staticfiles', 'django.contrib.sites']
> DEFAULT_CHARSET = 'utf-8'
> DEFAULT_CONTENT_TYPE = 'text/html'
> DEFAULT_EXCEPTION_REPORTER_FILTER =
> 'django.views.debug.SafeExceptionReporterFilter'
> DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
> DEFAULT_INDEX_TABLESPACE = ''
> DEFAULT_TABLESPACE = ''
> DIRECTORY = ''
> DISALLOWED_USER_AGENTS = []
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST_PASSWORD = '********************'
> EMAIL_PORT = ''
> EMAIL_SSL_CERTFILE = None
> EMAIL_SSL_KEYFILE = '********************'
> EMAIL_SUBJECT_PREFIX = '[Django] '
> EMAIL_TIMEOUT = None
> EMAIL_USE_LOCALTIME = False
> EMAIL_USE_SSL = False
> EMAIL_USE_TLS = False
> FILEBROWSER_DIRECTORY = ''
> FILEBROWSER_EXTENSIONS = {'Image': ['.jpg', '.jpeg', '.gif', '.png'],
> 'Document': ['.pdf', '.rtf', '.txt', '.csv'], 'Video': ['.webm',
> '.mp4', '.mpeg', '.avi'], 'Audio': ['.mp3', '.mp4']}
> FILEBROWSER_MAX_UPLOAD_SIZE = 209715200
> FILEBROWSER_PLACEHOLDER = 'placeholder/placeholder_128.jpeg'
> FILEBROWSER_SELECT_FORMATS = {'file': ['Image', 'Document', 'Video',
> 'Audio'], 'image': ['Image'], 'document': ['Document'], 'media':
> ['Video', 'Audio']}
> FILEBROWSER_VERSIONS_BASEDIR = '_versions/'
> FILE_CHARSET = 'utf-8'
> FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
> FILE_UPLOAD_HANDLERS =
> ['django.core.files.uploadhandler. MemoryFileUploadHandler',
> 'django.core.files.uploadhandler. TemporaryFileUploadHandler']
> FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
> FILE_UPLOAD_PERMISSIONS = None
> FILE_UPLOAD_TEMP_DIR = None
> FIRST_DAY_OF_WEEK = 0
> FIXTURE_DIRS = []
> FORCE_SCRIPT_NAME = None
> FORMAT_MODULE_PATH = None
> FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
> IGNORABLE_404_URLS = []
> INSTALLED_APPS = ['filebrowser', 'grappelli', 'django.contrib.admin',
> 'django.contrib.admindocs', 'django.contrib.auth',
> 'django.contrib.contenttypes', 'django.contrib.sessions',
> 'django.contrib.messages', 'django.contrib.staticfiles',
> 'django.contrib.sites', 'tinymce', 'billing', 'common', 'course',
> 'credit']
> INTERNAL_IPS = ['127.0.0.1', '192.168.0.103', '192.168.0.63',
> '192.168.0.64', '192.168.0.66', '192.168.0.67', '192.168.0.68']
> LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast',
> 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be',
> 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'),
> ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'),
> ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en',
> 'English'), ('en-au', 'Australian English'), ('en-gb', 'British
> English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar',
> 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx',
> 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve',
> 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa',
> 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'),
> ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he',
> 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper
> Sorbian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id',
> 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'),
> ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk',
> 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'),
> ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'),
> ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr',
> 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne',
> 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os',
> 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'),
> ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru',
> 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'),
> ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'),
> ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'),
> ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk',
> 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans',
> 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
> LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
> LANGUAGE_CODE = 'en-us'
> LANGUAGE_COOKIE_AGE = None
> LANGUAGE_COOKIE_DOMAIN = None
> LANGUAGE_COOKIE_NAME = 'django_language'
> LANGUAGE_COOKIE_PATH = '/'
> LOCALE_PATHS = []
> LOCAL_APPS = ['billing', 'common', 'course', 'credit']
> LOGGING = {}
> LOGGING_CONFIG = 'logging.config.dictConfig'
> LOGIN_REDIRECT_URL = 'course:index_view'
> LOGIN_URL = '/login/'
> LOGOUT_REDIRECT_URL = 'course:index_view'
> MEDIA_ROOT = '/var/www/media/train/'
> MEDIA_URL = '/media/'
> MESSAGE_STORAGE =
> 'django.contrib.messages.storage.fallback. FallbackStorage'
> MIDDLEWARE = ['django.middleware.security.SecurityMiddleware',
> 'django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.contrib.auth.middleware. AuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking. XFrameOptionsMiddleware',
> 'pwned_passwords_django.middleware. PwnedPasswordsMiddleware']
> MIGRATION_MODULES = {}
> MONTH_DAY_FORMAT = 'F j'
> NUMBER_GROUPING = 0
> PASSWORD_HASHERS = '********************'
> PASSWORD_RESET_TIMEOUT_DAYS = '********************'
> PREPEND_WWW = False
> PRE_ADMIN = ['filebrowser', 'grappelli']
> PROJECT = 'train'
> PY = '3.6'
> ROOT_URLCONF = 'train.urls'
> SECRET_KEY = '********************'
> SECURE_BROWSER_XSS_FILTER = True
> SECURE_CONTENT_TYPE_NOSNIFF = True
> SECURE_HSTS_INCLUDE_SUBDOMAINS = False
> SECURE_HSTS_PRELOAD = False
> SECURE_HSTS_SECONDS = 0
> SECURE_PROXY_SSL_HEADER = None
> SECURE_REDIRECT_EXEMPT = []
> SECURE_SSL_HOST = None
> SECURE_SSL_REDIRECT = True
> SERVER_EMAIL = 'root@localhost'
> SESSION_CACHE_ALIAS = 'default'
> SESSION_COOKIE_AGE = 1209600
> SESSION_COOKIE_DOMAIN = None
> SESSION_COOKIE_HTTPONLY = True
> SESSION_COOKIE_NAME = 'sessionid'
> SESSION_COOKIE_PATH = '/'
> SESSION_COOKIE_SAMESITE = 'Lax'
> SESSION_COOKIE_SECURE = True
> SESSION_ENGINE = 'django.contrib.sessions.backends.db'
> SESSION_EXPIRE_AT_BROWSER_CLOSE = False
> SESSION_FILE_PATH = None
> SESSION_SAVE_EVERY_REQUEST = False
> SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
> SETTINGS_DIR = '/var/www/train/train/settings'
> SETTINGS_MODULE = 'train.settings.production'
> SHORT_DATETIME_FORMAT = 'm/d/Y P'
> SHORT_DATE_FORMAT = 'm/d/Y'
> SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
> SILENCED_SYSTEM_CHECKS = []
> SITE_ID = 1
> SITE_ROOT = '/var/www/train'
> SRV_ROOT = '/var'
> STATICFILES_DIRS = ['/var/www/train/static/']
> STATICFILES_FINDERS =
> ['django.contrib.staticfiles.finders.FileSystemFinder',
> 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
> STATICFILES_STORAGE =
> 'django.contrib.staticfiles.storage.StaticFilesStorage'
> STATIC_ROOT = '/var/www/static/train/'
> STATIC_URL = '/static/'
> TEMPLATES = [{'BACKEND':
> 'django.template.backends.django.DjangoTemplates', 'DIRS':
> ['/var/www/train/templates/'], 'APP_DIRS': True, 'OPTIONS':
> {'context_processors': ['django.template.context_processors.debug',
> 'django.template.context_processors.request',
> 'django.contrib.auth.context_processors.auth',
> 'django.template.context_processors.i18n',
> 'django.template.context_processors.media',
> 'django.template.context_processors.static',
> 'django.template.context_processors.tz ',
> 'django.contrib.messages.context_processors.messages']} }]
> TEST_NON_SERIALIZED_APPS = []
> TEST_RUNNER = 'django.test.runner.DiscoverRunner'
> THIRD_PARTY_APPS = ['tinymce']
> THOUSAND_SEPARATOR = ','
> TIME_FORMAT = 'P'
> TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
> TIME_ZONE = 'UTC'
> TINYMCE_COMPRESSOR = True
> TINYMCE_DEFAULT_CONFIG = {'plugins':
> 'table,spellchecker,paste,searchreplace', 'theme': 'advanced',
> 'cleanup_on_startup': True, 'relative_urls': False}
> TINYMCE_EXTRA_MEDIA = None
> TINYMCE_FILEBROWSER = True
> TINYMCE_INCLUDE_JQUERY = True
> TINYMCE_JS_ROOT = '/var/www/media/train/js/tiny_mce'
> TINYMCE_JS_URL = '/media/js/tiny_mce/tiny_mce.js'
> TINYMCE_SPELLCHECKER = True
> USE_I18N = True
> USE_L10N = True
> USE_T18N = False
> USE_THOUSAND_SEPARATOR = False
> USE_TZ = True
> USE_X_FORWARDED_HOST = False
> USE_X_FORWARDED_PORT = False
> VERSIONS_BASEDIR = '_versions/'
> WEB_ROOT = '/var/www'
> WSGI_APPLICATION = 'train.wsgii.application'
> X_FRAME_OPTIONS = 'DENY'
> YEAR_MONTH_FORMAT = 'F Y'
>
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/fe304fe7-728d-42f6-b78d-6c80864f2695%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment