hi
i have this model called charity
___________________________________________
from django.db import models
from settings import DEFAULT_CHARITY_NAME as deafult_charity_name
class GetDefaultInstance(models.Manager):
def get_default_instance(self):
return
super(Charity,self).get_query_set().filter(charity_name=default_charity_name)
class Charity(models.Model):
class Meta:
verbose_name_plural = 'Charities'
app_label = 'charities'
charity_name = models.CharField(max_length=50)
in_percentage = models.IntegerField(help_text='default value is 0,\
leave blank if you will enter
fixed amount.', default=0, blank=True,null=True)
fixed_amount = models.IntegerField(help_text='default value is 0,\
leave blank if you entered amount
in percentage.',default=0, blank=True, null=True )
objects = models.Manager()
default_instance = GetDefaultInstance()
def __unicode__(self):
return '%s'%self.charity_name
_______________________________-
in urls:
(r'^admin/charity_report/(?P<itemdetails_id>[-\w]+)/$',
'charities.admin_views.report'),
__________________________________________
and another model called ItemDetails which have forignkey relation with
above model, with default instance of charity attached to each Itemdetail
object .
I wanted to add admin button alongside history button so user can see
amount charged as charity and stuff like percentage deduction,amount
deducted etc.
i managed to show the button but when clicked at it gives this trace:
http://pastebin.com/03wscYLX
the settings is at:
http://pastebin.com/7FYY189D
the other regular info are in:
http://pastebin.com/QmAdEeP9
its been 2-3 days trying to run it on apache server.. it works ok on local
machine.
i override form_change template and provide the button, write urls for
admin
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/9Zu2zAew3aIJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.
{% extends "admin/change_form.html" %}
{% load mini_shop_tags %}
{% load i18n %}
{% block object-tools %}
{% if change %}{% if not is_popup %}
{% endif %}{% endif %}
{% endblock %}
from charities.models import Charity, GetDefaultInstance
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.contrib.admin.views.decorators import staff_member_required
from generoucity.mini_shop.extensions.deals.models import ItemDetails
from generoucity.mini_shop.models import Item
class CharityReport(object):
def __init__(self,request,itemdetails_id):
self.request = request
self.itemdetails_id = itemdetails_id
def render_report(self):
data = {}
item = Item.objects.get(pk=self.itemdetails_id)
itemdetail_obj = ItemDetails.objects.get(item=item)
charity_obj = itemdetail_obj.charity
if not type(charity_obj) is type('NoneType'):
data['charity_name'] = charity_obj.charity_name
else:
data['charity_name'] = 'No charity is associated with this deal.'
data['price'] = item.price
if charity_obj.in_percentage:
data['charity_category'] = 'Fixed Percentage: %s '%(charity_obj.in_percentage)
data['charity_amount'] = (float(charity_obj.in_percentage)/100)*item.price
else:
data['charity_category'] = 'By Fixed Amount: %d'%(charity_obj.fixed_amount)
data['charity_amount'] = charity_obj.fixed_amount
data['item'] = item.name
return render_to_response("admin/mini_shop/extensions/deals/charity_report.html",locals(),RequestContext(self.request,{}))
def report(request,itemdetails_id):
charity_report_object = CharityReport(request, itemdetails_id)
return charity_report_object.render_report()
report = staff_member_required(report)
from models import Charity
import datetime
from django.conf import settings
def charity_admin(request):
charities = Charity.objects.all()
return {"charities": charities,}
from django.db import models
from settings import DEFAULT_CHARITY_NAME as deafult_charity_name
class GetDefaultInstance(models.Manager):
def get_default_instance(self):
return super(Charity,self).get_query_set().filter(charity_name=default_charity_name)
class Charity(models.Model):
class Meta:
verbose_name_plural = 'Charities'
app_label = 'charities'
charity_name = models.CharField(max_length=50)
in_percentage = models.IntegerField(help_text='default value is 0,\
leave blank if you will enter fixed amount.', default=0, blank=True,null=True)
fixed_amount = models.IntegerField(help_text='default value is 0,\
leave blank if you entered amount in percentage.',default=0, blank=True, null=True )
objects = models.Manager()
default_instance = GetDefaultInstance()
def __unicode__(self):
return '%s'%self.charity_name
from django.db import models
from generoucity.mini_shop.signals import post_cart_loaded, pre_item_added, pre_item_quantity_changed, order_payment,\
order_status_changed
from generoucity.mini_shop.models import Order, OrderItem, Category
from django.contrib import messages
from django.conf import settings
from django.db.models.signals import pre_init, post_init
import datetime
from django.http import HttpResponseRedirect
from django.db.models.aggregates import Sum
import logging
import simplejson
import urllib
import json
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from generoucity.charities.models import Charity
#, GetDefaultInstance
#class AdOrder(models.Model):
# user = models.ForeignKey(Advertiser)
# created_on = models.DateTimeField(auto_now_add=True)
# adpackage = models.ForeignKey(AdPackage)
class AdDuration(models.Model):
name = models.CharField(max_length=100)
value = models.IntegerField()
def __unicode__(self):
return self.name
class Meta:
app_label = "mini_shop"
class AdPackage(models.Model):
name = models.CharField(max_length=255)
slug = models.CharField(max_length=255, unique=True, blank=True)
price = models.FloatField()
duration = models.ForeignKey(AdDuration)
free = models.BooleanField(default=False)
days = models.IntegerField(blank=True, help_text="leave blank or enter 0 for unlimited days free (free must be checked)")
price_after_trial = models.FloatField(blank=True)
def __unicode__(self):
return self.name + ' $' + str(int(self.price))
class Meta:
app_label = "mini_shop"
def get_cate():
return Category.objects.get_or_create(name='deleted')[0]
class Advertiser(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=255)
image = models.ImageField(upload_to="images/advertisers/", blank=True, null=True)
street1 = models.CharField(verbose_name="Street Address", max_length=255)
street2 = models.CharField(verbose_name="(Line 2)", blank=True, max_length=255)
city = models.CharField(max_length=255)
state = models.CharField(max_length=100)
zip = models.CharField(max_length=10)
country = models.CharField(max_length=255, default="USA")
phone = models.CharField(max_length=15)
website = models.URLField(blank=True)
email = models.EmailField(max_length=255, blank=True)
about = models.TextField(blank=True)
EIN = models.CharField(max_length=12, blank=True, null=True)
private_address = models.BooleanField(default=False)
adpackage = models.ForeignKey(AdPackage)
start_date = models.DateField()
expired = models.BooleanField(default=True)
type = models.ForeignKey(Category, on_delete=models.SET(get_cate))
def __unicode__(self):
return self.name
class Meta:
app_label = "mini_shop"
ordering = ("-id",)
class AdTransaction(models.Model):
amount = models.FloatField()
created_on = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Advertiser)
adpackage = models.ForeignKey(AdPackage)
class Meta:
app_label = "mini_shop"
class DealUser(models.Model):
user = models.OneToOneField(User)
street = models.CharField(max_length=255, blank=True, null=True)
city = models.CharField(max_length=150, blank=True, null=True)
state = models.CharField(max_length=150, blank=True, null=True)
zip = models.CharField(max_length=10, blank=True, null=True)
lat = models.CharField(max_length=150, blank=True, null=True)
lng = models.CharField(max_length=150, blank=True, null=True)
email = models.EmailField(max_length=255, blank=True, null=True)
def save(self):
if not self.street:
self.street = ''
if not self.city:
self.city = ''
if not self.state:
self.state = ''
if not self.zip:
self.zip = ''
url = 'http://maps.googleapis.com/maps/api/geocode/json?'
address = 'address=' + self.street.replace(" ", "+") + ',+' + self.city.replace(" ", "+") + ',+' + self.state.replace(" ", "+") + ',+' + self.zip.replace(" ", "+") + '&sensor=true'
search_url = url + address
raw = urllib.urlopen(search_url)
js = simplejson.load(raw)
try:
self.lat = js['results'][0]['geometry']['location']['lat']
self.lng = js['results'][0]['geometry']['location']['lng']
except:
pass
super(DealUser, self).save()
class Meta:
app_label = "mini_shop"
class OrderItemCode(models.Model):
code = models.CharField(max_length=50, blank=True, null=True)
redeemed = models.BooleanField(default=False)
orderitem = models.ForeignKey(OrderItem)
date_redeemed = models.DateTimeField(blank=True, null=True)
qr = models.CharField(max_length=400)
void = models.BooleanField(default=False)
def save(self):
site = Site.objects.get_current()
print self.orderitem.item.details.advertiser.id
loc_url = "http://%s/%s/%s" % (site.domain,'merchant/redeem/' + str(self.orderitem.item.details.advertiser.id), self.code)
loc_url = urllib.quote(loc_url)
url = "https://chart.googleapis.com/chart?chs=%sx%s&cht=qr&chl=%s" % (
'300',
'300',
loc_url)
self.qr = url
super(OrderItemCode, self).save()
#def get_default_charity_object():
# default_charity_object = Charity.default_instance.all()
# return default_charity_object[0]
class ItemDetails(models.Model):
class Meta:
app_label = "mini_shop"
verbose_name = "Item"
verbose_name_plural = "Items"
item = models.OneToOneField("mini_shop.Item", related_name="details")
starts = models.DateField(blank=True, null=True)
ends = models.DateField(blank=True, null=True)
cost = models.FloatField(blank=True, null=True,
help_text="If not set, defaults to item's price")
value = models.FloatField()
minimum = models.IntegerField(blank=True, null=True,
help_text="the aggregate amount that must be ordered before any order is charged. "
"(Note: Not supported on all sites. if you are unsure if your site supports this feature, please contact support)")
maximum = models.IntegerField(blank=True, null=True,
help_text="the aggregate amount can be ordered before this offer becomes inactive.")
advertiser = models.ForeignKey(Advertiser)
sale_line = models.TextField(max_length=400)
experience_text = models.TextField(blank=True)
fine_print = models.TextField(blank=True)
max_quantity = models.PositiveSmallIntegerField(blank=True, null=True)
ordered_quantity = models.PositiveSmallIntegerField(default=0, blank=True)
lat = models.CharField(max_length=150, blank=True, null=True)
lng = models.CharField(max_length=150, blank=True, null=True)
# added so each product will have a location
street = models.CharField(max_length=255, blank=True, null=True)
city = models.CharField(max_length=150, blank=True, null=True)
state = models.CharField(max_length=150, blank=True, null=True)
# Shouldn't this be generated at purchase?
coupon_code = models.CharField(max_length=255, blank=True)
redeem_by = models.DateField(blank=True, null=True)
visable = models.BooleanField(default=False)
charity = models.ForeignKey(Charity,null=True,blank=True)
#save to query google for an address and get a lat and long data
def save(self):
#import pdb;
#pdb.set_trace()
if not self.ordered_quantity:
self.ordered_quantity = 0
if not self.street and not self.city and not self.state:
self.street = self.advertiser.street1
self.city = self.advertiser.city
self.state = self.advertiser.state
self.charity = Charity.default_instance.all()[0]
url = 'http://maps.googleapis.com/maps/api/geocode/json?'
address = 'address=' + self.street.replace(" ", "+") + ',+' + self.city.replace(" ", "+") + ',+' + self.state.replace(" ", "+") + '&sensor=true'
search_url = url + address
raw = urllib.urlopen(search_url)
js = simplejson.load(raw)
try:
self.lat = js['results'][0]['geometry']['location']['lat']
self.lng = js['results'][0]['geometry']['location']['lng']
except:
pass
super(ItemDetails, self).save()
def __unicode__(self):
return u"%s" % (self.id, )
def percent_off(self):
return ((self.value - self.original_price) / self.value) * 100
def you_save(self):
return self.value - self.original_price
def get_cost(self):
print self.cost, self.item.price
return self.cost or self.item.price
def deal_interval(self):
now = datetime.datetime.now()
tomorrow = datetime.datetime(self.ends.year, self.ends.month, self.ends.day)
return tomorrow - now
def purchased(self):
p = OrderItem.objects.filter(
item=self.item,
order__created_on__gte=self.starts,
order__created_on__lt=self.ends
).exclude(order__status__in=("shopping", "canceled")).aggregate(p=Sum("quantity"))["p"]
return p or 0
original_price = property(get_cost)
class FinePrint(models.Model):
item = models.ForeignKey(ItemDetails)
fine_print = models.CharField(max_length=255)
active = models.BooleanField(default=True)
def enforce_maximum(sender, order, former_status, **kwargs):
""" if a item has a maximum,
it will be deactivated when the maximum is reached """
if order.status == "ordered" and former_status == "shopping":
for orderitem in order.orderitem_set.filter(item__details__maximum__gt=0):
item = orderitem.item
total = OrderItem.objects.filter(
item=item,
order__created_on__gte=item.details.starts,
order__created_on__lt=item.details.ends
).exclude(order__status="shopping").aggregate(purchased=Sum("quantity"))["purchased"]
if total >= item.details.maximum:
item.active = False
item.save()
def preserve_maximum(sender, orderitem, request, **kwargs):
""" if a item has a maximum,
it will be deactivated when the maximum is reached """
if orderitem.item.details.maximum:
try:
total = orderitem.item.details.purchased()
if total >= orderitem.item.details.maximum:
# maximum reached sorry
orderitem.item.active = False;
orderitem.item.save()
orderitem.quantity = 0
#orderitem.delete()
elif orderitem.item.details.maximum < total + orderitem.quantity:
max = orderitem.item.details.maximum - total
orderitem.quantity = orderitem.item.details.maximum - total
messages.add_message(request, messages.INFO, 'You may order up to %d of item: %s.' % (max, orderitem.item))
except ItemDetails.DoesNotExist, ex:
logging.info(ex)
pass
except Exception, ex:
logging.info(ex)
pass
#def preserve_limit(sender, orderitem, request, **kwargs):
# try:
# max = orderitem.item.details.max_quantity
# if max != None and max < orderitem.quantity:
# orderitem.quantity = max
# messages.add_message(request, messages.INFO, 'You may order up to %d of item: %s.' % (max, orderitem.item))
#
# except ItemDetails.DoesNotExist:
# pass
# except Exception, ex:
# print ex
# pass
def set_shipped(sender, order, amount, processor, request, **kwargs):
if order.paid == order.total:
# we don't have any shippable items so as soon as they are
# paid for, they get the email and it is shipped
order.status = "shipped"
order.save()
# automatically add to the newsletter
COLLECT_EMAIL = getattr(settings, "DEALS_COLLECT_EMAIL", True)
if COLLECT_EMAIL and order.email and "newsletter" in settings.INSTALLED_APPS:
from newsletter.models import Subscriber, Group
subscriber, c = Subscriber.objects.get_or_create(
email=order.email, defaults={"name": order.name})
if "mini_shop.extensions.regions" in settings.INSTALLED_APPS:
from mini_shop.extensions.regions.settings import COOKIE_NAME
from mini_shop.extensions.regions.models import Region
slug = request.COOKIES.get(COOKIE_NAME)
try:
region = Region.objects.get(slug=slug)
group, created = Group.objects.get_or_create(name=region.name)
subscriber.groups.add(group)
except Exception, ex:
print ex
def remove_old_deals(sender, request, cart, **kwargs):
instance = cart
#print instance.status
if request.user and request.user.is_staff:
return # staff are exempt
if instance.status == "shopping":
for orderitem in instance.orderitem_set.all():
try:
details = orderitem.item.details
now = datetime.date.today()
#print details.starts, now, details.ends
if not (details.starts <= now and now < details.ends):
# print "delete"
orderitem.delete()
except ItemDetails.DoesNotExist:
pass
post_cart_loaded.connect(remove_old_deals)
order_payment.connect(set_shipped)
#pre_item_added.connect(preserve_limit)
#pre_item_quantity_changed.connect(preserve_limit)
pre_item_quantity_changed.connect(preserve_maximum)
order_status_changed.connect(enforce_maximum)
import listeners
import os, sys
#from autosite.common_settings import *
# the default settings are set in common_settings.
# This allows us to make changes to all settings pages easily and removes the
# amount of code that is needed in this settings file
from django.conf.global_settings import LOGIN_URL
from django.conf import global_settings
TIME_ZONE = 'America/Boise'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = False
# 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 = '/media/'
STATIC_URL = '/media/static/'
# 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 = '/media/static/admin/'
DEBUG = True
THUMBNAIL_DEBUG = True
#if DEBUG:
# SSL_REDIRECT = False
DIRNAME = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(DIRNAME, '..', 'media')
STATIC_ROOT = os.path.join(DIRNAME, '..', 'media', "static")
TEMPLATE_DIRS = (
os.path.join(DIRNAME, 'templates'),
)
DATABASE_NAME = 'gen_db'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'v123'
DATABASE_ENGINE = 'django.db.backends.mysql'
DATABASE_HOST = ''
DATABASES = {
'default': {
'ENGINE': DATABASE_ENGINE,
'NAME': DATABASE_NAME ,
'USER': DATABASE_USER,
'PASSWORD': DATABASE_PASSWORD,
'HOST': DATABASE_HOST,
}
}
SECRET_KEY = '3=*_&x&utw9!k%)pi8#c5%$m@n++qp3yd2%8d$b8sb985xcs_u'
SHOP_TEST = False
if SHOP_TEST:
PAYJUNCTION_USER = 'pj-ql-01'
PAYJUNCTION_PASS = 'pj-ql-01p'
PAYJUNCTION_TEST = True
else:
PAYJUNCTION_USER = 'ebWhOkDgeg'
PAYJUNCTION_PASS = 'qwy1VoXU3DwK'
PAYJUNCTION_TEST = False
ROOT_URLCONF = 'generoucity.urls'
DEFAULT_FROM_EMAIL = 'generoucity <i...@generoucity.com>'
DEFAULT_CONTACT_EMAIL = 'generoucity <i...@generoucity.com>'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.admin',
'sorl.thumbnail',
'south',
'generoucity.newsletter',
'django.contrib.comments',
'django.contrib.messages',
'django.contrib.flatpages',
'django.contrib.humanize',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'generoucity.mini_shop',
# 'generoucity.mini_shop.extensions.statistics',
# 'generoucity.mini_shop.extensions.addresses',
# 'generoucity.mini_shop.extensions.order_emails',
'generoucity.mini_shop.extensions.deals',
'generoucity.treemenus',
'generoucity.social_auth',
'generoucity.registration',
'mptt',
'captcha',
'tinymce',
'charities'
)
TEMPLATE_DIRS = (
os.path.join(DIRNAME, 'templates'),
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'generoucity.mini_shop.extensions.deals.middleware.LocationCookieMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
'django.contrib.messages.context_processors.messages',
# 'context_processors.generoucity.media',
'generoucity.mini_shop.extensions.deals.context_processor.daily_deal',
'generoucity.social_auth.context_processors.social_auth_by_type_backends',
'generoucity.processor.flatpage',
'generoucity.charities.context_processor.charity_admin'
)
AUTHENTICATION_BACKENDS = (
'social_auth.backends.twitter.TwitterBackend',
'social_auth.backends.facebook.FacebookBackend',
'social_auth.backends.OpenIDBackend',
'django.contrib.auth.backends.ModelBackend',
)
SOCIAL_AUTH_ENABLED_BACKENDS = ('facebook', 'twitter')
#SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = '/add-account/'
SOCIAL_AUTH_ASSOCIATE_BY_MAIL = False
TWITTER_CONSUMER_KEY = '0tpH2f5anf1b1xXx03gUFA'
TWITTER_CONSUMER_SECRET = 'o9RGmfP8koMFY6jAqCWMm9NmWmD90Z0nP8od17xM'
FACEBOOK_APP_ID = '326097564069916'
FACEBOOK_API_SECRET = '654bab8414fbbc0994e7822753f42f8a'
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/'
LOGIN_ERROR_URL = '/login-error/'
FACEBOOK_AUTH_EXTRA_ARGUMENTS= {'scope': 'user_location,user_about_me,email'}
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'generoucity.loaders.load_template_from_app_or_theme',
#'generoucity.loaders.load_template_source',
)
EVENTS_TO_SHOW = 5
VELOCITY_SITE = True
CAPTCHA = {
'bgcolor': '#FFFFFF',
'fgcolor': '#000000',
}
HTTPS_SUPPORT = False
HTTPS_PATHS = ['merchant/signup/', 'shop/cart/']
APPEND_SLASH = True
DEFAULT_CHARITY_NAME = 'Default_Charity'
#AUTHORIZE_LOGIN = u"8Bc7Wr4Fuh"
#AUTHORIZE_API_KEY = u"3M479w9YAq2zAU58"
#AUTHORIZE_TEST_MODE = False
#SESSION_COOKIE_AGE = 60 * 60 * 1 # one hours
#===============================================================================
# Allow generoucity.customizations such as adding default apps
#try:
# from utils.update_settings import update
# update(globals())
#except Exception, ex:
# logging.error("Exception modifying default settings", exc_info=True)
# end generoucity.customizations
#===============================================================================
# custom override settings hook
#from autosite.override_settings import *
#===============================================================================
# Allow local customizations such as overriding settings for development
#try:
# from local_conf import update
# update(globals())
#except:
# pass
# end local customizations
#===============================================================================
#from urls import initialize_urls
#from generoucity.mini_shop.extensions.deals.forms import ExtendedCreditCardForm
from django.conf.urls.defaults import *
#from generoucity.mini_shop.extensions.authorize.views import authorize_form
from django.conf import settings
from generoucity.gen.forms import *
from django.contrib import admin
from django.template import add_to_builtins
from django.utils.importlib import import_module
def get_app_patterns(app, module, varname='defaultpatterns'):
try:
urls = import_module("%s.%s" % (app, module))
default = getattr(urls, varname, ())
except Exception, ex:
if not str(ex).endswith(module):
raise
default = ()
return default
admin.autodiscover()
add_to_builtins('templatetags.gen_tags')
add_to_builtins('sorl.thumbnail.templatetags.thumbnail')
urlpatterns = patterns('',
(r'^admin/charity_report/(?P<itemdetails_id>[-\w]+)/$', 'charities.admin_views.report'),
url(r'^admin/', include(admin.site.urls)),
#customize user registration form
url(r'^accounts/', include('generoucity.registration.backends.default.urls')),
url(r'^accounts/register/$', 'generoucity.registration.views.register',
{
'backend': 'generoucity.gen.regbackend.Backend',
'form_class' : UserRegistrationForm
},
name='registration_register'
),
)
urlpatterns += get_app_patterns('generoucity.newsletter', 'admin_urls')
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
urlpatterns += patterns('',
# url(r'^captcha/', include('captcha.urls')),
)
urlpatterns += patterns('',
url(r'^login/$', 'django.contrib.auth.views.login'),
url(r'^contact/$', 'views.contact', name='contact'),
url(r'^contact/success/$', 'django.views.generic.simple.direct_to_template',{'template': 'contact/success.html'}, name='contact-success'),
url(r'^newsletter/', include('generoucity.newsletter.urls')),
url(r'^', include('social_auth.urls')),
url(r'^', include('generoucity.mini_shop.extensions.deals.urls')),
# url(r'^', include('django.contrib.flatpages.urls')),
)
urlpatterns += patterns('',
#url(r'^daily-deal/authorize/$', authorize_form, {"form_class": ExtendedCreditCardForm}, name='shop-authorize-form'),
#url(r'^google018517712a9df8bf.html$', "django.views.generic.simple.direct_to_template", {"template": 'google018517712a9df8bf.html'}),
)
{% extends "admin/base_site.html" %}
{% block title %}List of books by publisher{% endblock %}
{% block content %}
Charity Associated with item "{{item.name}}"
{% for key,value in data.iteritems %}
{% endfor %}
{% endblock %}