Index: django/conf/global_settings.py
===================================================================
--- django/conf/global_settings.py	(revision 4077)
+++ django/conf/global_settings.py	(working copy)
@@ -205,15 +205,18 @@
 
 # Default formatting for date objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
-DATE_FORMAT = 'N j, Y'
+#DATE_FORMAT = 'N j, Y'
+DATE_FORMAT = 'j/m/y'
 
 # Default formatting for datetime objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
-DATETIME_FORMAT = 'N j, Y, P'
+#DATETIME_FORMAT = 'N j, Y, P'
+DATETIME_FORMAT = 'j/m/y H:i'
 
 # Default formatting for time objects. See all available format strings here:
 # http://www.djangoproject.com/documentation/templates/#now
-TIME_FORMAT = 'P'
+#TIME_FORMAT = 'P'
+TIME_FORMAT = 'H:i'
 
 # Default formatting for date objects when only the year and month are relevant.
 # See all available format strings here:
Index: django/utils/translation/trans_real.py
===================================================================
--- django/utils/translation/trans_real.py	(revision 4077)
+++ django/utils/translation/trans_real.py	(working copy)
@@ -359,7 +359,9 @@
     one, the formats provided in the settings will be used.
     """
     from django.conf import settings
+    print settings.DATETIME_FORMAT
     date_format = _('DATE_FORMAT')
+    print date_format
     datetime_format = _('DATETIME_FORMAT')
     time_format = _('TIME_FORMAT')
     if date_format == 'DATE_FORMAT':
@@ -368,7 +370,9 @@
         datetime_format = settings.DATETIME_FORMAT
     if time_format == 'TIME_FORMAT':
         time_format = settings.TIME_FORMAT
-    return date_format, datetime_format, time_format
+    #HORRIBLE HACK!!!:
+    return settings.DATE_FORMAT, settings.DATETIME_FORMAT, settings.TIME_FORMAT
+    #return date_format, datetime_format, time_format
 
 def get_partial_date_formats():
     """
Index: django/contrib/admin/media/css/changelists.css
===================================================================
--- django/contrib/admin/media/css/changelists.css	(revision 4077)
+++ django/contrib/admin/media/css/changelists.css	(working copy)
@@ -48,3 +48,6 @@
 .paginator .end { border-width:2px !important; margin-right:6px; }
 .paginator .this-page { padding:2px 6px; font-weight:bold; font-size:13px; vertical-align:top; }
 .paginator a:hover { color:white; background:#5b80b2; border-color:#036; }
+.paginator span#page_no { float:left; width: 60%; }
+.paginator form { float:right; padding-right: 1em; }
+
Index: django/contrib/admin/templatetags/admin_list.py
===================================================================
--- django/contrib/admin/templatetags/admin_list.py	(revision 4077)
+++ django/contrib/admin/templatetags/admin_list.py	(working copy)
@@ -56,11 +56,16 @@
                 page_range.extend(range(page_num + 1, paginator.pages))
 
     need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
+    #Some extra logic to allow choosing the number per page
+    MIN = 20
+    MAX = 250
+    STEP = 10
     return {
         'cl': cl,
         'pagination_required': pagination_required,
         'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
         'page_range': page_range,
+        'num_choices': range(MIN, MAX+STEP, STEP),
         'ALL_VAR': ALL_VAR,
         '1': 1,
     }
@@ -87,19 +92,19 @@
             # Non-field list_display values don't get ordering capability.
             yield {"text": header}
         else:
-            if isinstance(f.rel, models.ManyToOneRel) and f.null:
-                yield {"text": f.verbose_name}
-            else:
-                th_classes = []
-                new_order_type = 'asc'
-                if field_name == cl.order_field:
-                    th_classes.append('sorted %sending' % cl.order_type.lower())
-                    new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
+            #if isinstance(f.rel, models.ManyToOneRel) and f.null:
+            #    yield {"text": f.verbose_name}
+            #else:
+            th_classes = []
+            new_order_type = 'asc'
+            if field_name == cl.order_field:
+                th_classes.append('sorted %sending' % cl.order_type.lower())
+                new_order_type = {'asc': 'desc', 'desc': 'asc'}[cl.order_type.lower()]
 
-                yield {"text": f.verbose_name,
-                       "sortable": True,
-                       "url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
-                       "class_attrib": (th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
+            yield {"text": f.verbose_name,
+                   "sortable": True,
+                   "url": cl.get_query_string({ORDER_VAR: i, ORDER_TYPE_VAR: new_order_type}),
+                   "class_attrib": (th_classes and ' class="%s"' % ' '.join(th_classes) or '')}
 
 def items_for_result(cl, result):
     first = True
Index: django/contrib/admin/views/main.py
===================================================================
--- django/contrib/admin/views/main.py	(revision 4077)
+++ django/contrib/admin/views/main.py	(working copy)
@@ -30,6 +30,7 @@
 ORDER_VAR = 'o'
 ORDER_TYPE_VAR = 'ot'
 PAGE_VAR = 'p'
+NPP = 'npp'
 SEARCH_VAR = 'q'
 IS_POPUP_VAR = 'pop'
 ERROR_FLAG = 'e'
@@ -550,6 +551,9 @@
         self.lookup_opts = self.opts
         self.manager = self.opts.admin.manager
 
+        #Number on page from query string
+        self.show_per_page = int(request.GET.get(NPP, self.opts.admin.list_per_page))
+
         # Get search parameters from the query string.
         try:
             self.page_num = int(request.GET.get(PAGE_VAR, 0))
@@ -573,7 +577,7 @@
 
     def get_filters(self, request):
         filter_specs = []
-        if self.lookup_opts.admin.list_filter and not self.opts.one_to_one_field:
+        if self.lookup_opts.admin.list_filter:
             filter_fields = [self.lookup_opts.get_field(field_name) \
                               for field_name in self.lookup_opts.admin.list_filter]
             for f in filter_fields:
@@ -598,7 +602,7 @@
         return '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')
 
     def get_results(self, request):
-        paginator = ObjectPaginator(self.query_set, self.lookup_opts.admin.list_per_page)
+        paginator = ObjectPaginator(self.query_set, self.show_per_page)
 
         # Get the number of objects, with admin filters applied.
         try:
@@ -620,7 +624,7 @@
             full_result_count = self.manager.count()
 
         can_show_all = result_count <= MAX_SHOW_ALL_ALLOWED
-        multi_page = result_count > self.lookup_opts.admin.list_per_page
+        multi_page = result_count > self.show_per_page
 
         # Get the list of objects to display on this page.
         if (self.show_all and can_show_all) or not multi_page:
@@ -671,7 +675,7 @@
     def get_query_set(self):
         qs = self.manager.get_query_set()
         lookup_params = self.params.copy() # a dictionary of the query string
-        for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR):
+        for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR, NPP):
             if lookup_params.has_key(i):
                 del lookup_params[i]
 
@@ -706,7 +710,13 @@
                 # For OneToOneFields, don't try to order by the related object's ordering criteria.
                 pass
             elif isinstance(f.rel, models.ManyToOneRel):
-                rel_ordering = f.rel.to._meta.ordering and f.rel.to._meta.ordering[0] or f.rel.to._meta.pk.column
+                #Get round admin breaking with ordering on the related model being '-*'
+                if f.rel.to._meta.ordering:
+                    o_field = f.rel.to._meta.ordering[0]
+                    if o_field[0] == '-':
+                        self.order_type = 'desc'
+                        o_field = o_field[1:]
+                rel_ordering = f.rel.to._meta.ordering and o_field or f.rel.to._meta.pk.column
                 lookup_order_field = '%s.%s' % (f.rel.to._meta.db_table, rel_ordering)
 
         # Set ordering.
Index: django/contrib/admin/templates/admin/change_list.html
===================================================================
--- django/contrib/admin/templates/admin/change_list.html	(revision 4077)
+++ django/contrib/admin/templates/admin/change_list.html	(working copy)
@@ -1,9 +1,11 @@
 {% extends "admin/base_site.html" %}
 {% load adminmedia admin_list i18n %}
-{% block stylesheet %}{% admin_media_prefix %}css/changelists.css{% endblock %}
+{% block stylesheet %}/media/css/changelists.css{% endblock %}
 {% block bodyclass %}change-list{% endblock %}
 {% block userlinks %}<a href="../../doc/">{% trans 'Documentation' %}</a> / <a href="../../password_change/">{% trans 'Change password' %}</a> / <a href="../../logout/">{% trans 'Log out' %}</a>{% endblock %}
-{% if not is_popup %}{% block breadcrumbs %}<div class="breadcrumbs"><a href="../../">{% trans "Home" %}</a> &rsaquo; {{ cl.opts.verbose_name_plural|capfirst|escape }}</div>{% endblock %}{% endif %}
+{% block breadcrumbs %}
+    {{ block.super }} &rsaquo; <li class='crumb'> {{ cl.opts.verbose_name_plural|capfirst|escape }} </li>
+{% endblock %}
 {% block coltype %}flex{% endblock %}
 {% block content %}
 <div id="content-main">
@@ -12,10 +14,10 @@
 {% endif %}
 <div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist">
 {% block search %}{% search_form cl %}{% endblock %}
+{% block pagination %}{% pagination cl %}{% endblock %}
 {% block date_hierarchy %}{% date_hierarchy cl %}{% endblock %}
 {% block filters %}{% filters cl %}{% endblock %}
 {% block result_list %}{% result_list cl %}{% endblock %}
-{% block pagination %}{% pagination cl %}{% endblock %}
 </div>
 </div>
 {% endblock %}
Index: django/contrib/admin/templates/admin/pagination.html
===================================================================
--- django/contrib/admin/templates/admin/pagination.html	(revision 4077)
+++ django/contrib/admin/templates/admin/pagination.html	(working copy)
@@ -1,11 +1,25 @@
 {% load admin_list %}
 {% load i18n %}
 <p class="paginator">
+<span id='page_no'>
 {% if pagination_required %}
+Page 
 {% for i in page_range %}
     {% paginator_number cl i %}
 {% endfor %}
 {% endif %}
 {{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name|escape }}{% else %}{{ cl.opts.verbose_name_plural|escape }}{% endifequal %}
 {% if show_all_url %}&nbsp;&nbsp;<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %}
+</span>
+<span id='npp'>
+<form  method='GET' action='.'>
+<label for='npp'>Number Per Page</label>
+<select name='npp'>
+{% for c in num_choices %}
+<option {% ifequal cl.show_per_page c %}selected{% endifequal %} id='{{ c }}'>{{ c }}</option>
+{% endfor %}
+</select>
+<input type='submit' value='Change'/>
+</form>
+</span>
 </p>
Index: django/contrib/admin/templates/admin/edit_inline_tabular.html
===================================================================
--- django/contrib/admin/templates/admin/edit_inline_tabular.html	(revision 4077)
+++ django/contrib/admin/templates/admin/edit_inline_tabular.html	(working copy)
@@ -7,7 +7,6 @@
          <th{{ fw.header_class_attribute }}>{{ fw.field.verbose_name|capfirst|escape }}</th>
       {% endif %}
    {% endfor %}
-   </tr></thead>
    {% for fcw in bound_related_object.form_field_collection_wrappers %}
       {% if change %}{% if original_row_needed %}
          {% if fcw.obj.original %}
Index: django/contrib/admin/templates/admin/base_site.html
===================================================================
--- django/contrib/admin/templates/admin/base_site.html	(revision 4077)
+++ django/contrib/admin/templates/admin/base_site.html	(working copy)
@@ -1,10 +1,13 @@
-{% extends "admin/base.html" %}
+{% extends "base.html" %}
 {% load i18n %}
+{% block breadcrumbs %}
+    {{ block.super }} &rsaquo;<a href='/admin/'> {% trans 'Admin' %} </a>
+{% endblock %}
+{% block admin_active %}active{% endblock %}
 
 {% block title %}{{ title|escape }} | {% trans 'Django site admin' %}{% endblock %}
 
-{% block branding %}
-<h1 id="site-name">{% trans 'Django administration' %}</h1>
+{% block site_title %}
+<h1 id="site-title">{% trans 'NMS Trouble Ticket Admin' %}</h1>
 {% endblock %}
 
-{% block nav-global %}{% endblock %}
Index: django/contrib/admin/templates/admin/index.html
===================================================================
--- django/contrib/admin/templates/admin/index.html	(revision 4077)
+++ django/contrib/admin/templates/admin/index.html	(working copy)
@@ -1,10 +1,9 @@
 {% extends "admin/base_site.html" %}
 {% load i18n %}
-
-{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css{% endblock %}
+{% load adminmedia %}
+{% block stylesheet %}/media/css/dashboard.css{% endblock %}
 {% block coltype %}colMS{% endblock %}
 {% block bodyclass %}dashboard{% endblock %}
-{% block breadcrumbs %}{% endblock %}
 {% block content %}
 <div id="content-main">
 
Index: django/contrib/admin/templates/admin/change_form.html
===================================================================
--- django/contrib/admin/templates/admin/change_form.html	(revision 4077)
+++ django/contrib/admin/templates/admin/change_form.html	(working copy)
@@ -4,15 +4,14 @@
 <script type="text/javascript" src="../../../jsi18n/"></script>
 {% for js in javascript_imports %}{% include_admin_script js %}{% endfor %}
 {% endblock %}
-{% block stylesheet %}{% admin_media_prefix %}css/forms.css{% endblock %}
+{% block stylesheet %}/media/css/forms.css{% endblock %}
 {% block coltype %}{% if ordered_objects %}colMS{% else %}colM{% endif %}{% endblock %}
 {% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
 {% block userlinks %}<a href="../../../doc/">{% trans 'Documentation' %}</a> / <a href="../../../password_change/">{% trans 'Change password' %}</a> / <a href="../../../logout/">{% trans 'Log out' %}</a>{% endblock %}
-{% block breadcrumbs %}{% if not is_popup %}
-<div class="breadcrumbs">
-     <a href="../../../">{% trans "Home" %}</a> &rsaquo;
-     <a href="../">{{ opts.verbose_name_plural|capfirst|escape }}</a> &rsaquo;
-     {% if add %}{% trans "Add" %} {{ opts.verbose_name|escape }}{% else %}{{ original|truncatewords:"18"|escape }}{% endif %}
+{% block breadcrumbs %}
+    {{ block.super }}
+    &rsaquo;<a href="../"> {{ opts.verbose_name_plural|capfirst|escape }} </a> &rsaquo;
+     {% if add %}{% trans "Add" %} {{ opts.verbose_name|escape }}{% else %}{{ original|truncatewords:"18"|escape }}
 </div>
 {% endif %}{% endblock %}
 {% block content %}<div id="content-main">
@@ -21,7 +20,7 @@
   {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
   </ul>
 {% endif %}{% endif %}
-<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %}
+<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post">{% block form_top %}{% endblock %}
 <div>
 {% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
 {% if opts.admin.save_on_top %}{% submit_row %}{% endif %}
Index: django/contrib/admin/templates/admin/login.html
===================================================================
--- django/contrib/admin/templates/admin/login.html	(revision 4077)
+++ django/contrib/admin/templates/admin/login.html	(working copy)
@@ -1,7 +1,7 @@
 {% extends "admin/base_site.html" %}
 {% load i18n %}
-
-{% block stylesheet %}{% load adminmedia %}{% admin_media_prefix %}css/login.css{% endblock %}
+{% load adminmedia %}
+{% block stylesheet %}/media/css/login.css{% endblock %}
 {% block bodyclass %}login{% endblock %}
 {% block content_title %}{% endblock %}
 {% block breadcrumbs %}{% endblock %}
@@ -19,7 +19,7 @@
   <div class="form-row">
     <label for="id_password">{% trans 'Password:' %}</label> <input type="password" name="password" id="id_password" />
     <input type="hidden" name="this_is_the_login_form" value="1" />
-    <input type="hidden" name="post_data" value="{{ post_data }}" /> {#<span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>#}
+    <input type="hidden" name="post_data" value="{{ post_data }}" /> {% comment %}<span class="help">{% trans 'Have you <a href="/password_reset/">forgotten your password</a>?' %}</span>{% endcomment %}
   </div>
   <div class="submit-row">
     <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
