Index: date_based.py
===================================================================
--- date_based.py	(revision 1958)
+++ date_based.py	(working copy)
@@ -48,7 +48,7 @@
 
 def archive_year(request, year, model, date_field,
         template_name=None, template_loader=loader, extra_lookup_kwargs={},
-        extra_context={}, context_processors=None):
+        extra_context={}, allow_empty=False, context_processors=None):
     """
     Generic yearly archive view.
 
@@ -66,8 +66,8 @@
         lookup_kwargs['%s__lte' % date_field] = now
     lookup_kwargs.update(extra_lookup_kwargs)
     date_list = getattr(model._default_manager, "get_%s_list" % date_field)('month', **lookup_kwargs)
-    if not date_list:
-        raise Http404
+    if not date_list and not allow_empty:
+        raise Http404, "No %s available" % model._meta.verbose_name
     if not template_name:
         template_name = "%s/%s_archive_year" % (model._meta.app_label, model._meta.object_name.lower())
     t = template_loader.get_template(template_name)
@@ -84,7 +84,8 @@
 
 def archive_month(request, year, month, model, date_field,
         month_format='%b', template_name=None, template_loader=loader,
-        extra_lookup_kwargs={}, extra_context={}, context_processors=None):
+        extra_lookup_kwargs={}, extra_context={}, allow_empty=False,
+        context_processors=None):
     """
     Generic monthly archive view.
 
@@ -113,8 +114,8 @@
         lookup_kwargs['%s__lte' % date_field] = now
     lookup_kwargs.update(extra_lookup_kwargs)
     object_list = model._default_manager.get_list(**lookup_kwargs)
-    if not object_list:
-        raise Http404
+    if not object_list and not allow_empty:
+        raise Http404, "No %s available" % model._meta.verbose_name
     if not template_name:
         template_name = "%s/%s_archive_month" % (model._meta.app_label, model._meta.object_name.lower())
     t = template_loader.get_template(template_name)
@@ -162,7 +163,7 @@
     lookup_kwargs.update(extra_lookup_kwargs)
     object_list = model._default_manager.get_list(**lookup_kwargs)
     if not allow_empty and not object_list:
-        raise Http404
+        raise Http404, "No %s available" % model._meta.verbose_name
     if not template_name:
         template_name = "%s/%s_archive_day" % (model._meta.app_label, model._meta.object_name.lower())
     t = template_loader.get_template(template_name)
