]> git.parisson.com Git - telemeta.git/commitdiff
from foundation to bootstrap, test pure-pagination
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 18 Sep 2014 16:10:47 +0000 (18:10 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 18 Sep 2014 16:10:47 +0000 (18:10 +0200)
example/sandbox/manage.py
example/sandbox/settings.py
example/sandbox/urls.py
setup.py
telemeta/forms/media.py
telemeta/static/telemeta/css/telemeta.css
telemeta/templates/telemeta/base.html
telemeta/templates/telemeta/inc/resource_list.html
telemeta/views/resource.py

index bcdd55e27be9447bf6b224b8ba0cbc6802509862..c632a8a38923012b836655195baeadd5c2ffd930 100755 (executable)
@@ -1,11 +1,9 @@
-#!/usr/bin/python
-from django.core.management import execute_manager
-try:
-    import settings # Assumed to be in the same directory.
-except ImportError:
-    import sys
-    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
-    sys.exit(1)
+#!/usr/bin/env python
+import os, sys
 
 if __name__ == "__main__":
-    execute_manager(settings)
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+
+    from django.core.management import execute_from_command_line
+
+    execute_from_command_line(sys.argv)
index dbdc53ae424ac4b19f6481ad6bb6eedbe9a6578a..798f661f919a5285f88b341108b1b46a1b586099 100644 (file)
@@ -66,7 +66,7 @@ MEDIA_URL = '/media/'
 # Don't put anything in this directory yourself; store your static files
 # in apps' "static/" subdirectories and in STATICFILES_DIRS.
 # Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = '/var/www/static/'
+STATIC_ROOT = ''
 
 # URL prefix for static files.
 # Example: "http://media.lawrence.com/static/"
@@ -104,9 +104,10 @@ MIDDLEWARE_CLASSES = (
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.locale.LocaleMiddleware',
+    # 'pagination.middleware.PaginationMiddleware',
 )
 
-ROOT_URLCONF = 'sandbox.urls'
+ROOT_URLCONF = 'urls'
 
 TEMPLATE_DIRS = (
     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
@@ -130,6 +131,12 @@ INSTALLED_APPS = (
     'sorl.thumbnail',
     'timezones',
     'jqchat',
+    'extra_views',
+    # 'pagination',
+    # 'breadcrumbs',
+    'debug_toolbar',
+    'bootstrap3',
+    'pure_pagination',
 )
 
 TEMPLATE_CONTEXT_PROCESSORS = (
@@ -138,6 +145,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
     "django.core.context_processors.i18n",
     "django.core.context_processors.media",
     'django.core.context_processors.static',
+    'django.contrib.messages.context_processors.messages',
 )
 
 TELEMETA_ORGANIZATION = 'Parisson'
@@ -165,3 +173,18 @@ DEFAULT_FROM_EMAIL = 'webmaster@parisson.com'
 
 TIMESIDE_DEFAULT_GRAPHER_ID = 'waveform_centroid'
 TIMESIDE_AUTO_ZOOM = True
+
+# Settings for django-bootstrap3
+BOOTSTRAP3 = {
+    'set_required': False,
+    'error_css_class': 'bootstrap3-error',
+    'required_css_class': 'bootstrap3-required',
+    'javascript_in_head': True,
+}
+
+SESSION_EXPIRE_AT_BROWSER_CLOSE = False
+
+PAGINATION_SETTINGS = {
+    'PAGE_RANGE_DISPLAYED': 10,
+    'MARGIN_PAGES_DISPLAYED': 2,
+}
index fb0665ee7a2b96589e405b95f34b0e0d56defc6f..e9301341fa9a7f2e038512c2b5bffd87ce2a5b15 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url, include
 
 # Uncomment the next two lines to enable the admin:
 from django.contrib import admin
@@ -19,11 +19,11 @@ urlpatterns = patterns('',
 
     # Uncomment the next line to enable the admin:
     (r'^admin/django/', include(admin.site.urls)),
-    
+
     # Telemeta
     (r'^', include('telemeta.urls')),
-    
+
     # Languages
-    (r'^i18n/', include('django.conf.urls.i18n')),    
+    (r'^i18n/', include('django.conf.urls.i18n')),
     (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
     )
index 7bb4762cc62bdd1ffd2b072b9b3bf79db256524e..8f16f0fb164c76067d63b377dc55e7bc5a7d7a92 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -43,6 +43,7 @@ setup(
         'django-extra-views',
         'django-ajax-selects',
         'django-breadcrumbs',
+        'django-pagination',
   ],
   dependency_links = ['https://github.com/yomguy/django-json-rpc/tarball/0.6.2',
                       'https://github.com/elo80ka/django-dynamic-formset/tarball/master',
index 60639cfc1ac30cae32a4efb80bcb1f57d0b61d18..785551bdd9c246dcd73c708e4fd2c5a6183a7411 100644 (file)
 
 import django.forms as forms
 from django.forms import ModelForm
+from django.contrib.admin.widgets import FilteredSelectMultiple
 from telemeta.models import *
 from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSet
 from extra_views.generic import GenericInlineFormSet
 
 
 class MediaFondsForm(ModelForm):
-    children = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=MediaCorpus.objects.all())
+    widget = FilteredSelectMultiple("Verbose name", is_stacked=False)
+    field = forms.ModelMultipleChoiceField(queryset=MediaCorpus.objects.all())
+    children = forms.ModelMultipleChoiceField(widget=widget, queryset=field)
 
     class Meta:
         model = MediaFonds
+        exclude = ['description',]
 
 
 class MediaFondsRelatedForm(ModelForm):
@@ -52,10 +56,18 @@ class MediaFondsRelatedForm(ModelForm):
 
 
 class MediaCorpusForm(ModelForm):
-    children = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,
-                                              queryset=MediaCollection.objects.all())
+    # queryset = MediaCollection.objects.all()
+    # widget = FilteredSelectMultiple('children', False)
+    # # # field = forms.ModelMultipleChoiceField(queryset=MediaCorpus.objects.all())
+    # children = forms.ModelMultipleChoiceField(widget=widget, queryset=queryset, required=True)
+
     class Meta:
         model = MediaCorpus
+        exclude = ['description',]
+
+    class Media:
+        css = {'all': ('/static/admin/css/widgets.css',),}
+        js = ('/admin/django/jsi18n/',)
 
 
 class MediaCorpusRelatedForm(ModelForm):
index 26f77425687b68d6e52a160941dd4e59487d3a90..3f031ab0a1ccbc196d5f1758538b73c4b9ebad3c 100644 (file)
@@ -1,11 +1,10 @@
 body {margin: 0; padding: 0;}
-
 a {text-decoration: none; color: #969696;}
 
 a img {border: none;}
 
 body {
-    font: 0.8125em/1em verdana, sans-serif;
+    font: 0.9em/1em verdana, sans-serif;
     line-height: 1.3em;
     color: #333;
     background: #FFF;
@@ -51,6 +50,12 @@ a img { border: none; }
     font-weight: bold;
     color: #353535;
 }
+
+.rst-content p {
+    font-size: 0.9em;
+    text-align: justify;
+}
+
 .nett {
     clear: both;
     height: 5px;
@@ -69,16 +74,14 @@ a img { border: none; }
 #content {
     /*margin-top: 1em;*/
     margin-bottom: 0em;
-}
-
-#content {
     position: relative;
     margin-left: 2em;
     margin-right: 2em;
-}
+    /*font-size: 1.3em;*/
 
+}
 
-#content ul, #content ul ul, #content ol {
+/*#content ul, #content ul ul, #content ol {
     list-style: square;
     padding: .7em;
     padding-left: 2em;
@@ -96,21 +99,27 @@ a img { border: none; }
 #content li a {
     padding: .1em 0;
 }
+
+*/
+
 #content h1 {
     color: #6a0307;
     font-weight: bold;
     display:  inline;
     font-size: 120%;
 }
+
+#content h2 {
+    color: #6a0307;
+}
+
 #content h3 {
     color: #6a0307;
     font-weight: bold;
     display:  inline;
+    font-size: 1.2em;
 }
 
-#content h2 {
-    color: #6a0307;
-}
 
 #logo a, #logo a:hover { border: none; background: transparent; }
 
@@ -335,7 +344,7 @@ label.disabled { color: #d7d7d7 }
 }
 
 #quick_search_pattern {
-    background: #FFF url(search_bg.png) no-repeat;
+    background-color: white;
     padding: .4em .1em;
     width: 180px;
     color: #555;
@@ -343,6 +352,10 @@ label.disabled { color: #d7d7d7 }
     float: left;
 }
 
+#quick-search-button{
+    float: right;
+}
+
 /* Authentication */
 #auth_info {
     color: #FFF;
@@ -648,7 +661,7 @@ dl.listing dt.group {
 }
 dl.listing dd {
     margin-left: 19.4em;
-    font-weight: bold;
+    /*font-weight: bold;*/
 }
 
 /* dublin core display */
@@ -710,12 +723,11 @@ dl.dublincore dd.caption {
 
 .infos dl, .infos table {
     position: relative;
-    font-size: 105%;
 }
 
 .extraInfos dl, .extraInfos table {
     position: relative;
-    font-size: 105%;
+
 }
 
 .extraInfos div {
@@ -1148,7 +1160,7 @@ a.image-link {
     color:#444;
     text-decoration: none;
     margin:0;
-    font: 0.9em/1.2em sans-serif;
+    font: 0.8em/1.2em sans-serif;
 }
 .component + .component, .component + .component_icon, .component_icon + .component ,
 .component_icon + .component_icon{
@@ -1295,3 +1307,4 @@ a:focus,div:focus{
     width: 66%;
     float: left;
 }
+
index 4cbabbd52788e250ddc9d8998766ee0cdc89a14d..2238cbcfc9c8970323f2f5ddc2b0ae1703960311 100644 (file)
@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 {% load i18n %}
-{% load telemeta_utils %}
+{% load telemeta_utils %}{# Load the tag library #}
+{% load bootstrap3 %}
 {% get_current_language as LANGUAGE_CODE %}
 {% get_available_languages as LANGUAGES %}
 <html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE }}" xml:lang="{{ LANGUAGE_CODE }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
@@ -14,9 +15,8 @@
 <title>{%block head_title %}{% description %} - Telemeta{% endblock %}</title>
 
 {% block stylesheets %}
-<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/app.css" />
 <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/telemeta.css" />
-
+<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/lib/bootstrap/dist/css/bootstrap.css" />
 
 <!--[if IE]>
 <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}telemeta/css/telemeta_ie.css" />
 
 {% block javascript %}
 <script src="{% url "django.views.i18n.javascript_catalog" %}" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}telemeta/bower_components/jquery/dist/jquery.min.js" type="text/javascript"></script>
+<script src="{{ STATIC_URL }}telemeta/lib/jquery/dist/jquery.min.js" type="text/javascript"></script>
 <script src="{{ STATIC_URL }}telemeta/js/locale.js" type="text/javascript"></script>
 <script src="{{ STATIC_URL }}telemeta/js/application.js" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}telemeta/bower_components/modernizr/modernizr.js"></script>
+<script src="{{ STATIC_URL }}telemeta/lib/bootstrap/dist/js/bootstrap.min.js" type="text/javascript"></script>
+
+
 {% if user.is_authenticated %}
 <script type='text/javascript'>var CURRENT_USER_NAME="{{ user.username }}";</script>
 {% else %}
 
 <div id="quick_search">
 <form action="{% url "telemeta-search" %}" id="_quickSearchForm" method="get">
-<input type="text" id="quick_search_pattern" name="pattern" />
-<a href="#" class="component button" onclick="document.getElementById('_quickSearchForm').submit();">{% trans "Search" %}</a>
+<div class="row">
+ <div class="col-md-6">
+  <input type="text" id="quick_search_pattern" name="pattern" />
+ </div>
+  <div class="col-md-6"><a href="#" id="quick-search-button" class="component button" onclick="document.getElementById('_quickSearchForm').submit();">{% trans "Search" %}</a></div>
 </form>
 </div>
+</div>
 
 <div id="menu">
 {% block menu %}
 <div id="footer">
  <hr />
  <div class="row">
-  <div class="small-2 columns">
+  <div class="col-md-2">
     <a id="telemeta_powered" href="{% telemeta_url %}" target="_blank"><img src="{{ STATIC_URL }}telemeta/images/logo_mini_2.png"
    alt="Telemeta Powered"/></a>
    <span style="font-weight: bold;"><br />&nbsp;v{% telemeta_version %}</span>
   </div>
-  <div class="small-8 columns">
+  <div class="col-md-8">
     <center>
     {% trans "Usage of the archives in the respect of cultural heritage of the original communities." %}
     </center>
   </div>
-  <div class="small-2 columns">
+  <div class="col-md-2">
     Copyright &copy; {% current_year %} {% organization %}<br />
     <a href="{% url "telemeta-flatpage" "legal_notices" %}">{% trans "Legal notices" %}</a>
   </div>
 {% block analytics %}
 {% endblock analytics %}
 
-<script src="{{ STATIC_URL }}telemeta/bower_components/jquery/dist/jquery.min.js" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}telemeta/bower_components/fastclick/lib/fastclick.js" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}telemeta/bower_components/foundation/js/foundation.min.js" type="text/javascript"></script>
-<script src="{{ STATIC_URL }}telemeta/js/app.js" type="text/javascript"></script>
 </body>
 </html>
index 935d082e902b23d321cd221fa48dbe97dd15336f..b3d76f46bc62c3011d1e8f88473e20057dd90dc0 100644 (file)
@@ -1,9 +1,8 @@
 {% load telemeta_utils %}
 {% load i18n %}
-{% load pagination_tags %}
 
 {% if resources %}
-{% paginate %}
+{% include "pure_pagination/pagination.html" %}
 
 <table class="listing">
 <tr>
index f4b58399f30ea1db4a67ebfdb00b39240aab03a0..86cdffa272b8c6eb51c528ea1a172430c46a7f6e 100644 (file)
@@ -39,6 +39,7 @@ from telemeta.views.core import *
 from django.utils.translation import ugettext_lazy as _
 from django.forms.models import model_to_dict
 from django.views.generic.edit import DeletionMixin, BaseDeleteView
+from pure_pagination.mixins import PaginationMixin
 
 
 class ResourceView(object):
@@ -268,7 +269,7 @@ class ResourceSingleMixin(ResourceMixin):
         return context
 
 
-class ResourceListView(ResourceMixin, ListView):
+class ResourceListView(ResourceMixin, PaginationMixin, ListView):
 
     template_name = "telemeta/resource_list.html"
     paginate_by = 20