# Create your views here.
import decimal, re
from django.conf import settings
from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.core.context_processors import csrf
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseNotAllowed, Http404
from signup.decorators import has_profile
from modules import curiousorm, utils
db = curiousorm.Database(settings.DEMO_DSN)
_HANDOFF_FIELD = re.compile('^handoff-(\d{1,13})-(\d{1,13})-(\d{1,13})$')
@has_profile(db)
def show_unconfirmed_transactions(request, user, tmpl):
if request.method == 'POST':
# TODO: Do not rely on the garbage collector for connection closing.
confirmed = 0
trx = db.transaction()
for field_name in request.POST:
hof = _HANDOFF_FIELD.match(field_name)
if hof:
turn_id, issuer_id, deal_id = (int(i) for i in hof.group(1, 2, 3))
trx.confirm_transaction(turn_id, user['trader_id'], issuer_id, deal_id)
confirmed += 1
trx.commit()
return HttpResponseRedirect(reverse(
report_transactions_confirmation,
args=[user['trader_id'], confirmed]))
transactions = db.select_unconfirmed_transaction_list(
recipient_id=user['trader_id'],
__order_by='ts DESC')
# Render everything adding CSRF protection.
c = {'user': user, 'transactions' : transactions }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def report_transactions_confirmation(request, user, count, tmpl):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def show_unconfirmed_deals(request, user, tmpl):
if request.method == 'POST':
# TODO: Do not rely on the garbage collector for connection closing.
confirmed = 0
trx = db.transaction()
for field_name in request.POST:
if field_name.startswith('turn-'):
confirmed += trx.delete_finalized_session(user['trader_id'], int(field_name[5:]))
#trx.commit()
trx.rollback()
return HttpResponseRedirect(reverse(
report_deals_confirmation,
args=[user['trader_id'], confirmed]))
new_deals = db.select_new_deal_list(
recipient_id=user['trader_id'],
__order_by='ts DESC')
turns = set([d['turn_id'] for d in new_deals])
c = {'user': user, 'new_deals' : new_deals, 'turns': turns }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def report_deals_confirmation(request, user, count, tmpl):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def show_customer_transactions(request, user, year, mounth, day, tmpl):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
def show_todays_customer_transactions(request, user):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def show_customer_deals(request, user, year, mounth, day, tmpl):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
def show_todays_customer_deals(request, user):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
@has_profile(db)
def show_my_deals(request, user, year, mounth, day, tmpl):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)
def show_my_todays_deals(request, user):
# Render everything adding CSRF protection.
c = {'user': user, 'count': int(count) }
c.update(csrf(request))
return render_to_response(tmpl, c)