示例#1
0
def offer_get_offercode(request):
	"""
		:param offer_id: offer id to generate code for
	"""
	data = {}
	
	offer_id = request.POST.get("offer_id", None)
	if offer_id is None:
		data["result"] = -2
		data["result_msg"] = "offer_id is required."
		return JSONHttpResponse(data)

	u = request.user
	if u.shoppleyuser.is_customer():
		customer = u.shoppleyuser.customer
		
		try:
			o = Offer.objects.get(id=offer_id)
			o.gen_offer_code(customer)
			
			data["offer"] = o.customer_offer_detail(customer)
			data["result"] = 1
			data["result_msg"] = "^_^"
			
		except Offer.DoesNotExist:
			data["result"] = -3
			data["result_msg"] = "Offer does not exists."
	else:
		data["result"] = -1
		data["result_msg"] = "User is not a customer."

	return JSONHttpResponse(data)
示例#2
0
def offer_restart(request, offer_id):
	"""
		Send the old offer information so it can be prefilled to create a new offer
	"""

	data = {}

	# check parameters 
	if offer_id is None:
		data["result"] = -2
		data["result_msg"] = "Parameter offer_id has not been specified."
		return JSONHttpResponse(data)

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant

		try:
			offer = Offer.objects.get(merchant=merchant, id=offer_id)
			data["offer"] = offer.offer_detail()
			data["result"] = 1
			data["result_msg"] = "Found the previous offer that will be prefilled the new offer." 
		except Offer.DoesNotExist:
			data["result"] = -3
			data["result_msg"] = "Parameter offer_id specified is not a valid offer."

	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#3
0
def test_offer(request):

	data = {}
	
	#u = request.user
	u = User.objects.get(email="*****@*****.**")

	if u.shoppleyuser.is_customer():
		return HttpResponseRedirect( reverse("offer.views.offer_home") )

	if request.method == "POST":
		form = StartOfferForm(request.POST)
		if form.is_valid():
			offer = form.save(commit=False)	
			offer.merchant = u.shoppleyuser.merchant
			offer.time_stamp = datetime.now()
			if form.cleaned_data["now"]:
				offer.starting_time = datetime.now()+timedelta(minutes=5)
			offer.save()
			# send out the offer
			num_sent = offer.distribute()			
			data["result"] = "1"
			data["offer_id"] = offer.id
			data["num_sent"] = num_sent
			return JSONHttpResponse(data)	
		else:
			data["result"] = "-1"
	else:
		data["result"] = "-2"
		form = StartOfferForm()

	data["form"] = str(form)

	return JSONHttpResponse(data)
示例#4
0
def register_merchant(request):
	data = {}
	# input parameters
	business_name = request.POST['business']
	email = request.POST['email'].lower()
	phone = parse_phone_number(request.POST['phone'])
	zipcode = request.POST['zipcode']
	password = request.POST.get(['password'], '')
	
	# need to clean up phone

	if not ZipCode.objects.filter(code=zipcode).exists():
		# ERROR: zip code is invalid
		data["result"] = -2
		data["result_msg"] = "Zip code is invalid or not yet registered in system."
		return JSONHttpResponse(data)	
	else:
		zipcode_obj = ZipCode.objects.get(code=zipcode)

	u, created = User.objects.get_or_create(username=email, email=email)
	if created:
		if len(password) == 0:
		  s = string.lowercase+string.digits
		  password = ''.join(random.sample(s,6))
		
		u.set_password(password)	
		u.save()
		# create customer information
		c = Merchant(user=u, zipcode=zipcode_obj, phone=phone, business_name=business_name)
		# TODO: handle same business name? Possibly no need to
		c.save()
		MerchantPhone.objects.create(number=phone, merchant=c)

		# send a text message and e-mail with random password
		message = _("Please login to http://www.shoppley.com and you will be given free points to start sending Shoppley offers.")
		recipients = [email]
		send_mail("Welcome to Shoppley", message, settings.DEFAULT_FROM_EMAIL, recipients)
		# txt_msg = _("%(password)s is temporary password for shoppley.com. Txt #help to %(shoppley)s to get started.") % { "password": rand_passwd, "shoppley":settings.SHOPPLEY_NUM }
		# sms_notify(phone, txt_msg, SMS_DEBUG)
	else:
		# ERROR: User exists, ask user to login with their password 
		data["result"] = -1
		data["result_msg"] = "User already exists so you should login with their password."
		return JSONHttpResponse(data)	

	# you can start viewing offers	
	user = authenticate(username=email, password=rand_passwd)
	if user is not None:
		login(request, user)
		#logger.debug( "User %s authenticated and logged in"%email )
		data["result"] = 1
		data["result_msg"] = "User registered and authenticated successfully."
		return JSONHttpResponse(data)	 
	else:
		# ERROR: problem authenticating user
		data["result"] = -3
		data["result_msg"] = "Authentication error, possibly the user is not activated."
		return JSONHttpResponse(data)
示例#5
0
def offer_redeem(request):
	data = {}

	# check parameters
	code = request.POST.get('code', None)
	amount = float(request.POST.get('amount', None))

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant

		try:
			offer = OfferCode.objects.get(offer__merchant=merchant, code = code)
			offer.redeem_time = datetime.now()
			offer.txn_amount = amount
			offer.save()

			data["offer_code"] = offer.offer_detail() 
			data["result"] = 1
			data["result_msg"] = "Offer redemption (code: %s) successful."%code
		except OfferCode.DoesNotExist:
			data["result"] = -2
			data["result_msg"] = "Offer code %s is not a valid code for your store."%code
	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#6
0
def splash_view(request):
	"""
		Returns a summary of visitors 
			- this week (this week from Monday)
			- last week (last week)
			- past month (last 30 days window)
	"""

	data = {}

	u = request.user
	merchant = u.shoppleyuser.merchant

	now = datetime.now()
	today = datetime.now().weekday()
	monday = datetime.now()-timedelta(days=today)
	start_date = datetime(monday.year, monday.month, monday.day, 0, 0, 0) 
	end_date = datetime.now()
	data["this_week"] = OfferCode.objects.filter(offer__merchant=merchant, redeem_time__range=(start_date, end_date)).count()

	today = datetime.now().weekday()
	monday = datetime.now()-timedelta(days=today+8)
	sunday = datetime.now()-timedelta(days=today+1)
	start_date = datetime(monday.year, monday.month, monday.day, 0, 0, 0)
	end_date = datetime(sunday.year, sunday.month, sunday.day, 23, 59, 59)
	data["last_week"] = OfferCode.objects.filter(offer__merchant=merchant, redeem_time__range=(start_date, end_date)).count()

	start_date = datetime.now()-timedelta(days=30)
	end_date = datetime.now()
	data["past_month"] = OfferCode.objects.filter(offer__merchant=merchant, redeem_time__range=(start_date, end_date)).count()

	data["result"] = 1
	data["result_msg"] = "Number of redemptions for this week, last week and past month returned."
	
	return JSONHttpResponse(data)	
示例#7
0
def offers_past(request, days=0):
	"""
		Offers from past days
	"""
	data = {}

	days = int(days)
	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant
		data["offers"] = []
		if days == 0:
			
			for o in Offer.objects.filter(merchant=merchant, expired_time__lt=datetime.now()).order_by('-starting_time'):
			
				data["offers"].append( o.offer_detail(past=True) )
		else:
			start_date = datetime.now()-timedelta(days=days)
			end_date = datetime.now()
			#offers = [ o for o in Offer.objects.filter(merchant=merchant, starting_time__range=(start_date,end_date)) if o.is_active()==False]
			for o in Offer.objects.filter(merchant=merchant, expired_time__lt=datetime.now(), starting_time__range=(start_date, end_date)):
			
				data["offers"].append( o.offer_detail(past=True) )

		data["result"] = 1
		data["result_msg"] = "Returned details of past offers."
	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#8
0
def iwant(request):
	data = {}
	
	request_text = request.POST.get("request", None)
	if request_text is None:
		data["result"] = -1
		data["result_msg"] = "missing key: 'request'"
		return JSONHttpResponse(data)
	
	u = request.user
	customer = u.shoppleyuser.customer
	customer_iwant(customer, request_text)

	data["result"] = 1
	data["result_msg"] = "Success"
	return JSONHttpResponse(data)
示例#9
0
def offer_forward(request):
	"""
		:param offer_code: the code that is forwarded
		:param phones: list of phone numbers
		:param emails: list of emails 
		:param note: a note for the friend

	"""
	data = {}

	u = request.user
	customer = u.shoppleyuser.customer

	offer_code = request.POST.get("offer_code", None)
	phones = request.POST.getlist("phones")
	emails = request.POST.getlist("emails")
	notes = request.POST.get("note", "")

	if offer_code and len(phones) > 0:
		if OfferCode.objects.filter(code__iexact=offer_code).exists():
			original_code = OfferCode.objects.filter(code__iexact=offer_code)[0]
			offer = original_code.offer
			for phone in phones:
				new_code, random_pw = offer.gen_forward_offercode(original_code, phone)
				# text the user the user name and password

				customer_msg = _("%(customer)s forwarded you an offer!\n*from: %(merchant)s\n*title: %(description)s\n*expires: %(expiration)s\nCome redeem w/ [%(code)s]\n")%{
						"customer": customer.phone,
						"merchant": offer.merchant,
						"expiration": pretty_date(original_code.expiration_time),
						"description": offer.description,
						"dollar_off": offer.dollar_off,
						"code": new_code.code,
						}
				#TODO: if the person do not mind receiving txt
				sms_notify(phone,customer_msg, SMS_DEBUG)

				if random_pw:
					new_customer = new_code.customer
					#print "created a customer for %s" % friend_num
					account_msg = _("Welcome to Shoppley! shoppley.com login info:\n-username: %(name)s\n-password: %(password)s\nTxt #help to %(shoppley)s to get started.")%{"name":new_customer.user.username,"password":random_pw, "shoppley": settings.SHOPPLEY_NUM}
					sms_notify(phone,account_msg, SMS_DEBUG)



			forwarder_msg= _('Offer by "%s" was forwarded to ') % offer_code
			forwarder_msg= forwarder_msg+ ''.join([str(i)+' ' for i in phones]) + "\nYou will receive points when they redeem their offers."
			data["confirm_msg"] = forwarder_msg 
			data["result"] = 1
			data["result_msg"] = "Offers have been forwarded."
		else:
			# ERROR: offer code is invalid
			data["result"] = -2
			data["result_msg"] = "Offer code is invalid."
	else:
		# ERROR: no offer code POSTed
		data["result"] = -1
		data["result_msg"] = "Offer code has not been specified in POST parameter."

	return JSONHttpResponse(data)	
示例#10
0
def offers_expired(request):
	"""
		Offers that expired and haven't been redeemed

		Future use: to indicate that they would like offers like this
	"""
	data = {}

	u = request.user
	if u.shoppleyuser.is_customer():

		customer = u.shoppleyuser.customer
		user_offers = OfferCode.objects.filter(customer=customer, expiration_time__lt=datetime.now(), redeem_time__isnull=True)

		data["num_offers"] = user_offers.count()
		data["offers"] = []
		for o in user_offers:
			data["offers"].append( o.offer_detail() )	

		data["result"] = 1
		data["result_msg"] = "Returning expired offers that have not been redeemed."
	else:
		data["result"] = -1
		data["result_msg"] = "User is not a customer."

	return JSONHttpResponse(data)	
示例#11
0
def offers_current_filter(request):
	"""
		Returns a filtered version by filtering to a reduced set of those in current location
	"""
	data = {}
	data["result"] = -999
	data["result_msg"] = "Don't call me."
	return JSONHttpResponse(data)
示例#12
0
def offer_send_more(request, offer_id):
	"""
		Offer is requested to be sent to more people
	"""
	data = {}

	u = request.user

	# check parameters 
	if offer_id is None:
		data["result"] = -2
		data["result_msg"] = _("Parameter offer_id has not been specified.")
		return JSONHttpResponse(data)

	if u.shoppleyuser.is_merchant():

		merchant = u.shoppleyuser.merchant

		try:
			offer = Offer.objects.get(merchant=merchant, id=offer_id)
			if offer.redistribute():
				num_reached = 0 
				receipt_msg = _("Offer has been submitted.  We are actively looking for customers.  Check back in a few minutes for status update.")
			else:
				num_reached = -5
				receipt_msg = _("Offer has already been redistributed so you cannot resend.")

			data["offer"] = offer.offer_detail()
			data["result"] = num_reached 
			data["result_msg"] = receipt_msg 

		except Offer.DoesNotExist:
			data["result"] = -3
			data["result_msg"] = _("Parameter offer_id specified is not a valid offer.")

	else:
		data["result"] = -1
		data["result_msg"] = _("Not a valid merchant user.")

	return JSONHttpResponse(data)	
示例#13
0
def merchant_summary_viz(request):
	data = {}

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant
		data["offer_id"] = 2

	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#14
0
def point_offer_expire(request, offer_id):
	data = {}

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant
		data["offer_id"] = 2

	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#15
0
def register_customer(request):
	email = request.POST['email'].lower()
	phone = parse_phone_number(request.POST['phone'])
	zipcode = request.POST['zipcode']
	password = request.POST['password']
    
	#TODO check null
	data = customer_register(email, None, zipcode, phone, password, None, None)
	
	if data["result"] == 1:
		data = customer_authenticate(request, data["username"], data["password"]);
		
	return JSONHttpResponse(data)
示例#16
0
def offers_redeemed(request):
	data = {}

	u = request.user
	if u.shoppleyuser.is_customer():

		customer = u.shoppleyuser.customer
		user_offers = OfferCode.objects.filter(customer=customer).exclude(redeem_time__isnull=True)
		data["num_offers"] = user_offers.count()
		data["offers"] = []
		for o in user_offers:
			data["offers"].append( o.offer_redeemed() )	

		data["result"] = 1
		data["result_msg"] = "Returning redeemed offers."
	else:
		data["result"] = -1
		data["result_msg"] = "User is not a customer."

	return JSONHttpResponse(data)	
示例#17
0
def login_modal(request):
	"""
		For simple user login
	"""

	data = {}

	username = request.POST.get("username", None)
	password = request.POST.get("password", None)
	user = authenticate(username=username, password=password)
	if user is not None:
		if user.is_active:
			auth_login(request, user)
			data["result"] = "1"
		else:
			data["result"] = "-2"
	else:
		data["result"] = "-1"

	return JSONHttpResponse(data) 
示例#18
0
def merchant_summary(request, days=7):
	"""
		Shows the 
		Number of offers sent out past week
		Number of offers reached
		Number of offers redeemed (percentage)
	"""

	data = {}

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant

		start_date = datetime.now()-timedelta(days=days)
		end_date = datetime.now()
		all_offers = Offer.objects.filter(merchant=merchant, starting_time__range=(start_date, end_date))
		data["num_offers"] = all_offers.count()
		direct_recvd = 0
		total_recvd = 0
		total_redeemed = 0
		for o in all_offers:
			direct_recvd += o.num_direct_received()
			total_recvd += o.num_received()
			total_redeemed += o.num_redeemed()	

		data["total_received"] = total_recvd
		data["total_forwarded"] = total_recvd - direct_recvd
		data["total_redeemed"] = total_redeemed
		if direct_recvd == 0:
			data["redeem_rate"] = 0
		else:
			data["redeem_rate"] = total_redeemed/float(direct_recvd)*100
			
		data["result"] = 1
		data["result_msg"] = "Summary data about the merchant's offers."
	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)	
示例#19
0
def offer_feedback(request):
	"""
		Provide feedback regarding a used offer
	"""
	data = {}

	offer_code_id = request.POST["offer_code_id"]
	feedback = request.POST["feedback"]

	try:
		offer_code = OfferCode.objects.get(id=offer_code_id)
		offer_code.feedback = feedback
		offer_code.save()
		data["result"] = 1
		data["result_msg"] = "Successfully added feedback."
	except OfferCode.DoesNotExist:
		# invalid offer code id
		data["result"] = -1
		data["result_msg"] = "Offer ID is invalid or has not been specified in POST parameter."

	return JSONHttpResponse(data)	
示例#20
0
def offers_active(request):
	"""
		Returns currently active offers and their details
	"""
	data = {}

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant

		data["offers"] = []
		#active_offers = [o for o in Offer.objects.filter(merchant=merchant, expired_time__gt=datetime.now())].order_by('-starting_time')
		for o in Offer.objects.filter(merchant=merchant, expired_time__gt=datetime.now()).order_by('-starting_time'):
		
			data["offers"].append( o.offer_detail() )

		data["result"] = 1
		data["result_msg"] = "Returned details of merchants currently active offers."
	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."
	return JSONHttpResponse(data)	
示例#21
0
def offer_rate(request):
	"""
		Provide rate regarding a used offer

		:param rating: 1 to 5
	"""
	data = {}

	offer_code_id = request.POST["offer_code_id"]
	rating = request.POST["rating"]

	try:
		offer_code = OfferCode.objects.get(id=offer_code_id)
		offer_code.rating = rating 
		offer_code.save()
		data["result"] = 1
		data["result_msg"] = "Successfully rated."
	except OfferCode.DoesNotExist:
		# invalid offer code id
		data["result"] = -1
		data["result_msg"] = "Offer ID is invalid or has not been specified in POST parameter."

	return JSONHttpResponse(data)	
示例#22
0
def mobile_logout(request):
	data = {}
	logout(request)
	data["result"] = 1 
	data["result_msg"] = "Logout successful."
	return JSONHttpResponse(data)	
示例#23
0
def customer_point_offers(request):
	"""
		for the customer
	"""
	data = {}
	return JSONHttpResponse(data)	
示例#24
0
def mobile_login(request):
	email = request.POST['email'].lower()
	password = request.POST['password']
	data = customer_authenticate(request, email, password)
	return JSONHttpResponse(data)
示例#25
0
def offers_current(request):
	"""

		:param lat: current latitude (can be "")
		:param lon: current longitude (can be "")

		:rtype: JSON

		::

		# if user is not a customer
		{
			"result": -1
		}

	"""
	data = {}

	u = request.user
	if u.shoppleyuser.is_customer():
		customer = u.shoppleyuser.customer
		
		lat = request.POST.get("lat", None)
		lon = request.POST.get("lon", None)
			
		if (lat is not None) and (lon is not None):
			if (lat != "") and (lon != ""):
				customer.set_location_from_latlon(lat, lon)
		
		v = request.POST.get("v", 0)
		if v == 0:
			user_offers = OfferCode.objects.filter(customer=customer, expiration_time__gt=datetime.now())
			#print "******** checking offers ************"
			#print user_offers.count()
			data["num_offers"] = user_offers.count()
			data["offers"] = []

			#"expiration": str(time.mktime(o.expiration_time.timetuple())),
			for o in user_offers:
				data["offers"].append(o.offer_detail())	
			data["result"] = 1
			data["result_msg"] = "Returning offer details."
		else:
			data["forward_offers"] = []
			forward_offers = customer_get_current_forward_offers(customer)
			forward_offers_ids = []
			
			for o in forward_offers:
				if o.offer.id not in forward_offers_ids:
					data["forward_offers"].append(o.offer_detail())
					forward_offers_ids.append(o.offer.id)

			# (yod) 5 is magic number
			data["offers"] = []
			user_offers = customer.get_offers_within_miles(5)
			for o in user_offers:
				if o.id not in forward_offers_ids:
					data["offers"].append(o.customer_offer_detail(customer))
				
			data["result"] = 1
			data["result_msg"] = "Returning offer details."
	else:
		data["result"] = -1
		data["result_msg"] = "User is not a customer."
	return JSONHttpResponse(data)	
示例#26
0
def load_trans(request):
    """
        Loads Buxfer data given email and password
        
        :param POST['email']:
        :param POST['password']:
    
        :rtype: JSON

        ::

            # successful loading
            {'result':'1'}
            # not a valid form
            {'result':'0'}
            # need to be POST
            {'result':'-1'}
        
    """

    if request.method == 'POST':
        u = request.user

        form = BuxferLoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['email']
            password = form.cleaned_data['password']

            b = BuxferInterface()

            # pass username and password
            if b.buxfer_login(username, password):

                accts = b.get_accounts()
                for a in accts:
                    acct, created = Account.objects.get_or_create(
                        user=u.otnuser,
                        account_id=a['id'],
                        name=a['name'],
                        balance=a['balance'])
                    acct.save()

                    final = 1
                    p = 1  # page number
                    while final != 0:
                        txns, final, total = b.get_transactions(a['id'],
                                                                page=p)
                        # TODO: iterate through txns and insert into model
                        for t in txns:
                            m, created = Memo.objects.get_or_create(
                                txt=t['description'])
                            m.save()

                            trans, created = Transaction.objects.get_or_create(
                                account=acct,
                                amount="%.2f" % t['amount'],
                                purchase_date=datetime.strptime(
                                    t['date'] + " " + str(date.today().year),
                                    '%d %b %Y'),
                                memo=m,
                                transaction_id=t['id'])
                            trans.save()

                            r, created = Receipt.objects.get_or_create(
                                txn=trans)
                            r.save()

                        p += 1  # if no transactions are on page, then filter = len(response["transactions"]) = 0

                return JSONHttpResponse({'result': '1'})
        else:
            return JSONHttpResponse({'result': '0', 'error': form.errors})
    return JSONHttpResponse({
        'result': '-1',
        'error': 'Incorrect username or password.'
    })
示例#27
0
def offer_start(request):
	"""
		Offer parameters are defined and offer is started

		'title':'$10 off on entree',
		'description': 'Come taste some great greek food next 30 minutes',
		'now': False,
		'date': '2011-05-18',
		'time': '06:00:00 PM',
		'duration': 30,
		'units': 1,
		'amount': 10,
		'lat': 42.32342,
		'lon': -23.2342
		
		(optional) 'start_unixtime' instead of date & time

	"""

	data = {}

	# check if the necessary parameters are provided
	title = request.POST.get('title', None)
	description = request.POST.get('description', None)
	duration = int(request.POST.get('duration', 90))
	amount = int(request.POST.get('amount', 0))
	unit = int(request.POST.get('units', 0))
	lat = float(request.POST.get('lat', 0))
	lon = float(request.POST.get('lon', 0))
	
	if (title is None or title == "") and (description is None or description == ""):
	    data["result"] = -1
	    data["result_msg"] = "Please provide title and description."
	    return JSONHttpResponse(data)

	if title is None:
		title = description[:128]
	now = request.POST.get('now', False)
	start_unixtime = request.POST.get('start_unixtime', None)
	if now:
		start_time = datetime.now()
	elif start_unixtime is not None:
		start_time = datetime.fromtimestamp(float(start_unixtime))
	else:
		date = request.POST.get('date', None)
		time = request.POST.get('time', None)
		if (time is None) or (date is None):
			data["result"] = -1
			data["result_msg"] = "Please provide start date & time."
			return JSONHttpResponse(data)

		start_time = datetime.strptime("%s %s"%(date, time), "%Y-%m-%d %I:%M:%S %p")

	u = request.user
	if u.shoppleyuser.is_merchant():
		merchant = u.shoppleyuser.merchant

		if unit == 0:
			# percent 
			offer = Offer(merchant=merchant, title=title,
					description=description, percentage=amount,
					duration=duration,
					time_stamp=datetime.now(),
					starting_time=start_time)
		else:
			# dollar
			offer = Offer(merchant=merchant, title=title,
					description=description, dollar_off=amount,
					duration=duration,
					time_stamp=datetime.now(),
					starting_time=start_time)
		offer.expired_time = offer.starting_time + timedelta(minutes=offer.duration)
		offer.save()

        # save location where the offer was generated to track merchant location
		if (lat is not 0) and (lon is not 0):
			offer.set_location_from_latlon(lat,lon)

		num_reached = 0
		receipt_msg = _("Offer has been submitted.  We are actively looking for customers.  Check back in a few minutes for status update.")
		data["offer"] = offer.offer_detail()
		data["result"] = num_reached 
		data["result_msg"] = receipt_msg 
	else:
		data["result"] = -1
		data["result_msg"] = "Not a valid merchant user."

	return JSONHttpResponse(data)