Hi guys, i'm new in this group. I'm trying to upgrade a django project i 
found on internet, called 'little ebay', from django 1.2 to 1.5. It is a 
very simple project, there are only few files.
i'm going to append them... please help me, i'm going ma with that.

i'm appending only two of the various templates, the two templates involved 
in the error

Thank you all.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3104a0c9-e35b-48c3-b9d0-433f28c2a481%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
{% extends "base.html" %} {% load uni_form_tags %} {% block title %}View User{% endblock %} {% block content %} {% ifequal user request.user.user %}

This is you!

{% endifequal %}

{{ user.first_name }} {{ user.last_name }}

{% ifequal user request.user.user %} {% endifequal %}

Email: {{ user.email }}

Address Line 1: {{ user.address_line_1 }}

{% if user.address_line_2 %}

Address Line 2: {{ user.address_line_2 }}

{% endif %}

City: {{ user.city }}

State: {{ user.state }}

Zip: {{ user.zipcode }}

Phone: {{ user.phone }}

{% endblock %}
import datetime
from decimal import Decimal

from django import forms
from django.conf import settings
from django.contrib.auth import authenticate
from django.core.urlresolvers import reverse
from django.db.models import Q
from django.forms.util import ValidationError
from django.contrib.admin import widgets as adminwidgets
from django.contrib.localflavor.us.forms import USPhoneNumberField, USZipCodeField

from lebay.apps.lebay.models import User, Seller, Item, AuctionEvent, Bid, Sales
from lebay.apps.lebay.constants import AUCTION_ITEM_STATUS_RUNNING

class UserLoginForm(forms.Form):
    username = forms.CharField(label=u'User Name')
    password = forms.CharField(label=u'Password', widget=forms.PasswordInput(render_value=False))

    def clean(self):
        cleaned_data = self.cleaned_data
        username = cleaned_data.get('username', '')
        password = cleaned_data.get('password', '')
        user = authenticate(username=username, password=password)
        if user is not None:
            if not user.is_active:
                raise ValidationError('This account is disable. Please constact the webmaster.') 
        else:
            raise ValidationError('Wrong username and or password. Try again.') 
        
        return cleaned_data

    def get_user(self):
        username = self.cleaned_data.get('username', '')
        password = self.cleaned_data.get('password', '')
        user = authenticate(username=username, password=password)

        return user

class AuctionSearchForm(forms.Form):
    query = forms.CharField(max_length=200, required=False, label='')
    
    def search(self):
        cleaned_data = self.cleaned_data
        cleaned_query = cleaned_data.get('query', '') 
        if cleaned_query:
            matching_auctions = AuctionEvent.objects.get_current_auctions().filter(Q(item__title__icontains=cleaned_query) | Q(item__description__icontains=cleaned_query))
        else:
            matching_auctions = AuctionEvent.objects.get_current_auctions()
            
        return matching_auctions

class UserRegistrationForm(forms.ModelForm):
    password = forms.CharField(label=u'Password', widget=forms.PasswordInput(render_value=False))
    retyped_password = forms.CharField(label=u'Retype Password', widget=forms.PasswordInput(render_value=False))
    zipcode = USZipCodeField()
    phone = USPhoneNumberField()

    def __init__(self, *args, **kwargs):
        super(forms.ModelForm, self).__init__(*args, **kwargs)
        self.fields.keyOrder = [
            'username',
            'first_name',
            'last_name',
            'email',
            'password',
            'retyped_password',
            'address_line_1',
            'address_line_2',
            'city',
            'state',
            'zipcode',
            'phone']
    
    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name', 'email', 'password', 'address_line_1', 'address_line_2', 'city', 'state', 'zipcode', 'phone']

    def clean(self):
        cleaned_data = self.cleaned_data
        password = cleaned_data.get('password', '')
        retyped_password = cleaned_data.get('retyped_password', '')
        
        if password != retyped_password:
            raise ValidationError('Password and retyped password didn\'t match.')
        
        return cleaned_data

    def save(self, force_insert=False, force_update=False, commit=True, *args, **kwargs):
        user = super(UserRegistrationForm, self).save(*args, **kwargs)
        password = user.password
        user.set_password(password)
        user.save()
        
        return user

class UserProfileEditForm(forms.ModelForm):
    zipcode = USZipCodeField()
    phone = USPhoneNumberField()
    
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'email', 'address_line_1', 'address_line_2', 'city', 'state', 'zipcode', 'phone']

class PasswordChangeForm(forms.Form):
    current_password = forms.CharField(label=u'Current Password', widget=forms.PasswordInput(render_value=False))
    new_password = forms.CharField(label=u'New Password', widget=forms.PasswordInput(render_value=False))
    retyped_password = forms.CharField(label=u'Retype New Password', widget=forms.PasswordInput(render_value=False))

    def __init__(self, data=None, user=None, *args, **kwargs):
        self.user = user
        super(UserProfileEditForm, self).__init__(data=data, *args, **kwargs)

    def clean_current_password(self):
        cleaned_data = self.cleaned_data
        current_password = cleaned_data.get('current_password', '')
        
        if not self.user.check_password(current_password):
            raise ValidationError('Wrong current password.')
        
        return current_password

    def clean(self):
        cleaned_data = self.cleaned_data
        new_password = cleaned_data.get('new_password', '')
        retyped_password = cleaned_data.get('retyped_password', '')

        if len(new_password) == 0 or len(retyped_password) == 0:
            raise ValidationError('Blank password fields.')
        
        if new_password != retyped_password:
            raise ValidationError('New password and retyped password do not match.')
        
        return cleaned_data
        
    def save(self):
        self.user.set_password(new_password)
        return self.user

class SellerProfileForm(forms.ModelForm):
    class Meta:
        model = Seller
        fields = ['paypal_email', 'default_shipping_method', 'default_shipping_detail', 'default_payment_detail']

class ItemForm(forms.ModelForm):
    class Meta:
        model = Item
        fields = ['title', 'description', 'condition', 'category']

    def __init__(self, data=None, seller=None, *args, **kwargs):
        self.seller = seller
        super(ItemForm, self).__init__(data, *args, **kwargs)

    def save(self, force_insert=False, force_update=False, commit=True):
        item = super(ItemForm, self).save(commit=False)
        item.seller = self.seller
        item.save()
        return item

class AuctionEventForm(forms.ModelForm):
    class Meta:
        model = AuctionEvent
        fields = ['shipping_method', 'shipping_detail', 'payment_detail', 'start_time', 'end_time', 'starting_price', 'shipping_fee', 'reserve_price']

    def clean_start_time(self):
        cleaned_data = self.cleaned_data
        cleaned_start_time = cleaned_data.get('start_time')
        if cleaned_start_time < datetime.datetime.now():
            raise ValidationError('Specified time occurs in the past.')
        return cleaned_start_time

    def clean_end_time(self):
        cleaned_data = self.cleaned_data
        cleaned_end_time = cleaned_data.get('end_time')
        if cleaned_end_time < datetime.datetime.now():
            raise ValidationError('Specified time occurs in the past.')
        return cleaned_end_time
    
    def clean(self):
        cleaned_data = self.cleaned_data
        cleaned_start_time = cleaned_data.get('start_time')
        cleaned_end_time = cleaned_data.get('end_time')
        if cleaned_start_time and cleaned_end_time and cleaned_end_time < cleaned_start_time:
            raise ValidationError('End time must be greater than start time.')
        
        cleaned_starting_price = cleaned_data.get('starting_price')
        cleaned_reserve_price = cleaned_data.get('reserve_price')
        if cleaned_starting_price and cleaned_reserve_price and cleaned_reserve_price < cleaned_starting_price:
            raise ValidationError('Reserve price must be higher than starting price.')
        
        return cleaned_data

    def save(self, item=None, force_insert=False, force_update=False, commit=True):
        if not item:
            raise Exception('AuctionEvent save method requires items to be passed in.')
        auction_event = super(AuctionEventForm, self).save(commit=False)
        item.status = AUCTION_ITEM_STATUS_RUNNING
        item.save()
        auction_event.item = item
        auction_event.save()
        return auction_event

class BidForm(forms.ModelForm):
    class Meta:
        model = Bid
        fields = ['amount']
    
    def __init__(self, data=None, auction_event=None, bidder=None, *args, **kwargs):
        self.auction_event = auction_event
        self.bidder = bidder
        super(BidForm, self).__init__(data, *args, **kwargs)

    def clean_amount(self):
        cleaned_data = self.cleaned_data
        cleaned_amount = cleaned_data.get('amount', Decimal('0.00'))
        if self.auction_event.bids.count():
            if cleaned_amount < self.auction_event.bids.order_by('-amount')[0].amount:
                raise ValidationError('Your bid has to be higher than the current price.')
        return cleaned_amount

    def clean(self):
        cleaned_data = self.cleaned_data
        current_time = datetime.datetime.now()
        if current_time > self.auction_event.end_time:
            raise ValidationError('This auction event has expired.')
        return cleaned_data
    
    def save(self, force_insert=False, force_update=False, commit=True):
        bid = super(BidForm, self).save(commit=False)
        bid.auction_event = self.auction_event
        bid.bidder = self.bidder
        bid.save()
        self.auction_event.winning_bidder = bid.bidder
        self.auction_event.save()
        return bid

class PaymentForm(forms.Form):
    paypal_email = forms.EmailField(label='Enter your PayPal email.')

class SalesForm(forms.ModelForm):
    class Meta:
        model = Sales
        fields = ['payment_status']
import datetime
from decimal import Decimal

from django.contrib import admin
from django.contrib.auth.models import User as DjangoUser
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
from django.contrib.localflavor.us.models import USStateField, PhoneNumberField

from lebay.apps.base.models import BaseModel
from lebay.apps.lebay.constants import AUCTION_ITEM_CATEGORY_CHOICES, AUCTION_ITEM_STATUS_CHOICES, AUCTION_ITEM_CATEGORY_GENERAL, AUCTION_ITEM_STATUS_IDLE, AUCTION_ITEM_CONDITION_CHOICES, AUCTION_EVENT_SHIPPING_CHOICES, SALES_PAYMENT_STATUS_CHOICES, SALES_PAYMENT_STATUS_PROCESSING, AUCTION_ITEM_STATUS_RUNNING, AUCTION_EVENT_SHIPPING_USPS

class User(DjangoUser):
    address_line_1 = models.CharField(max_length=100)
    address_line_2 = models.CharField(max_length=100, blank=True)
    city = models.CharField(max_length=50)
    state = USStateField()
    zipcode = models.CharField(max_length=10)
    phone = PhoneNumberField()

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)
    
    def is_seller(self):
        try:
            seller = self.seller
            return True
        except ObjectDoesNotExist, e:
            return False

class ItemCategory(BaseModel):
    title = models.CharField(max_length=100)
    description = models.TextField(blank=True)
    parent = models.ForeignKey('self', blank=True, null=True)
    
    def __unicode__(self):
        return u'%s' % self.title

class Seller(BaseModel):
    user = models.OneToOneField(User, related_name='seller')
    paypal_email = models.EmailField()
    default_shipping_method = models.IntegerField(choices=AUCTION_EVENT_SHIPPING_CHOICES, default=AUCTION_EVENT_SHIPPING_USPS)
    default_shipping_detail = models.CharField(max_length=100, blank=True, null=True)
    default_payment_detail = models.CharField(max_length=200, blank=True, null=True)

    def __unicode__(self):
        return u'Seller profile of %s' % self.user.username

class Item(BaseModel):
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    condition = models.IntegerField(choices=AUCTION_ITEM_CONDITION_CHOICES)
    seller = models.ForeignKey(User, related_name='auction_items')
    category = models.ForeignKey(ItemCategory, related_name='auction_items')
    status = models.IntegerField(choices=AUCTION_ITEM_STATUS_CHOICES, default=AUCTION_ITEM_STATUS_IDLE)
    
    def __unicode__(self):
        return u'%s' % self.title

    def get_condition(self):
        return dict(AUCTION_ITEM_CONDITION_CHOICES).get(self.condition, 'N/A')

    def get_status(self):
        return dict(AUCTION_ITEM_STATUS_CHOICES).get(self.status, 'N/A')

class AuctionEventManager(models.Manager):
    def get_current_auctions(self):
        current_time = datetime.datetime.now()
        return self.filter(item__status=AUCTION_ITEM_STATUS_RUNNING, start_time__lt=current_time, end_time__gt=current_time)

class AuctionEvent(BaseModel):
    item = models.ForeignKey(Item, related_name='auction_events')
    shipping_method = models.IntegerField(choices=AUCTION_EVENT_SHIPPING_CHOICES)
    shipping_detail = models.CharField(max_length=100, blank=True)
    payment_detail = models.CharField(max_length=200, blank=True)
    start_time = models.DateTimeField(help_text=u'Format (Hour & Minute are optional): 10/25/2006 14:30')
    end_time = models.DateTimeField(help_text=u'Format (Hour & Minute are optional): 10/25/2006 14:30')
    starting_price = models.DecimalField(default=Decimal('0.00'), max_digits=5, decimal_places=2)
    shipping_fee = models.DecimalField(default=Decimal('0.00'), max_digits=5, decimal_places=2)
    reserve_price = models.DecimalField(default=Decimal('0.00'), blank=True, max_digits=5, decimal_places=2)
    winning_bidder = models.ForeignKey(User, related_name='won_auctions', blank=True, null=True)

    objects = AuctionEventManager()
    
    def __unicode__(self):
        return u'%s listed on %s' % (self.item.title, self.start_time)
    
    def has_started(self):
        return datetime.datetime.now() >= self.start_time

    def has_ended(self):
        return datetime.datetime.now() >= self.end_time

    def is_running(self):
        return self.has_started() and not self.has_ended() and self.item.status == AUCTION_ITEM_STATUS_RUNNING
    
    def get_shipping_method(self):
        return dict(AUCTION_EVENT_SHIPPING_CHOICES).get(int(self.shipping_method), 'N/A')

    def get_current_price(self):
        current_price = self.starting_price
        bid_count = self.bids.count()
        if bid_count:
            highest_bid = self.bids.order_by('-amount')[0]
            current_price = highest_bid.amount 
        return current_price
    
    def get_time_until_end(self):
        delta = self.end_time - datetime.datetime.now()
        if delta.days < 0:
            return '0 seconds'
        else:
            weeks = delta.days / 7
            days = delta.days % 7
            hours = delta.seconds / 3600
            minutes = (delta.seconds % 3600) / 60
            seconds = (delta.seconds % 3600) % 60
            
            time_string = ''
            if weeks:
                time_string += '%s weeks ' % weeks
            if days:
                time_string += '%s days ' % days
            if hours:
                time_string += '%s hours ' % hours
            if minutes:
                time_string += '%s minutes ' % minutes
            if seconds:
                time_string += '%s seconds' % seconds
                
            return time_string
    
    def is_paid(self):
        return self.sales.count() > 0

    def get_payment_status(self):
        if self.is_paid():
            return dict(SALES_PAYMENT_STATUS_CHOICES).get(self.sales.order_by('-time_created')[0].payment_status)
        else:
            return 'Unpaid'
    
class Sales(BaseModel):
    auction_event = models.ForeignKey(AuctionEvent, related_name='sales')
    payment_status = models.IntegerField(choices=SALES_PAYMENT_STATUS_CHOICES, default=SALES_PAYMENT_STATUS_PROCESSING)
    invoice_number = models.CharField(max_length=200, unique=True)
    
    def __unicode__(self):
        return u'Invoice for %s' % self.auction_event

class Bid(BaseModel):
    auction_event = models.ForeignKey(AuctionEvent, related_name='bids')
    bidder = models.ForeignKey(User, related_name='bids')
    amount = models.DecimalField(default=Decimal('0.00'), max_digits=5, decimal_places=2, help_text=u'All bids are final. Price in US dollars.') 

    def __unicode__(self):
        return u'Placed on %s by %s' % (self.auction_event.item.title, self.bidder.username)

admin.site.register(AuctionEvent)
admin.site.register(Bid)
admin.site.register(Item)
admin.site.register(ItemCategory)
admin.site.register(Seller)
admin.site.register(Sales)
admin.site.register(User)
from django.conf.urls.defaults import url, patterns, include
from lebay.apps.lebay import views as lebay_views

urlpatterns = patterns('',
    url(r'^$', lebay_views.index, name='lebay_index'),
    url(r'^home/$', lebay_views.view_user_home, name='lebay_user_home'),
    url(r'^register/$', lebay_views.register_user, name='lebay_register_user'),
    url(r'^login/$', lebay_views.login_user, name='lebay_login'),
    url(r'^logout/$', lebay_views.logout_user, name='lebay_logout'),
    url(r'^search/$', lebay_views.search_auction_events, name='lebay_search_auction_events'),
    
    url(r'^categories/$', lebay_views.view_categories, name='lebay_view_categories'),
    url(r'^categories/(?P<category_id>\d+)/$', lebay_views.view_category, name='lebay_view_category'),
    
    url(r'^item/sell/$', lebay_views.list_item, name='lebay_list_item'),
    url(r'^item/buy/$', lebay_views.view_auction_events, name='lebay_view_auction_events'),
    url(r'^item/(?P<item_id>\d+)/view/$', lebay_views.view_item, name='lebay_view_item_detail'),
    url(r'^item/(?P<item_id>\d+)/edit/$', lebay_views.edit_item, name='lebay_edit_item_detail'),
    url(r'^item/(?P<item_id>\d+)/sell/$', lebay_views.list_existing_item, name='lebay_list_existing_item'),
    url(r'^item/auction/(?P<auction_event_id>\d+)/$', lebay_views.view_auction_event, name='lebay_view_auction_event'),
    url(r'^item/auction/(?P<auction_event_id>\d+)/ended/$', lebay_views.view_ended_auction_event, name='lebay_view_ended_auction_event'),
    url(r'^item/auction/(?P<auction_event_id>\d+)/bids/$', lebay_views.view_bid_history, name='lebay_view_bid_history'),    
    url(r'^item/auction/payments/(?P<auction_event_id>\d+)/pay/$', lebay_views.pay_for_item, name='lebay_pay_for_item'),
    url(r'^item/auction/payments/manage/$', lebay_views.manage_payments, name='lebay_manage_payments'),
    
    url(r'^profile/password/change/$', lebay_views.change_password, name='lebay_change_password'),
    url(r'^profile/user/edit/$', lebay_views.edit_user_profile, name='lebay_edit_user_profile'),

    url(r'^profile/user/(?P<user_id>\d+)/$', lebay_views.view_user_profile, name='lebay_view_user_profile'),

    url(r'^profile/seller/create/$', lebay_views.edit_seller_profile, name='lebay_create_seller_profile'),
    url(r'^profile/seller/edit/$', lebay_views.edit_seller_profile, name='lebay_edit_seller_profile'),
)
from lebay.apps.lebay.constants import AUCTION_ITEM_STATUS_SOLD, AUCTION_ITEM_STATUS_EXPIRED

def process_ended_auction(auction_event):
    bid_count = auction_event.bids.count()
    if bid_count:
        auction_event.item.status = AUCTION_ITEM_STATUS_SOLD
        auction_event.item.save()
    else:
        auction_event.item.status = AUCTION_ITEM_STATUS_EXPIRED
        auction_event.item.save()
import datetime
import hashlib

from decimal import Decimal

from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render_to_response
from django.template import RequestContext

from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.core.urlresolvers import reverse
from django.core.paginator import Paginator
from django.db.models import Q
from django.forms.models import modelformset_factory

from lebay.apps.lebay.forms import UserRegistrationForm, UserLoginForm, SellerProfileForm, ItemForm, AuctionEventForm, BidForm, UserProfileEditForm, PasswordChangeForm, AuctionSearchForm, PaymentForm, SalesForm
from lebay.apps.lebay.models import Seller, AuctionEvent, Item, User, ItemCategory, Sales
from lebay.apps.lebay.constants import AUCTION_EVENT_SORTING_CHOICES, AUCTION_EVENT_SORTING_TITLE, AUCTION_ITEM_STATUS_RUNNING, AUCTION_ITEM_STATUS_IDLE, AUCTION_ITEM_STATUS_SOLD
from lebay.apps.lebay.utils import process_ended_auction

def index(request):
    if request.user.is_authenticated():
        request.session['message'] = ''
        return HttpResponseRedirect(reverse('com:lebay_user_home'))
    else:
        return HttpResponseRedirect(reverse('com:lebay_view_auction_events'))

def login_user(request):
    if request.method == 'POST':
        form = UserLoginForm(request.POST)
        if form.is_valid():
            user = form.get_user()
            login(request, user)
            return HttpResponseRedirect(reverse('com:lebay_user_home')) 
    else:
        form = UserLoginForm()

    return render_to_response('login.html', {
        'form': form,
    }, context_instance=RequestContext(request))

def logout_user(request):
    logout(request)
    return HttpResponseRedirect(reverse('com:lebay_index'))

def register_user(request):
    if request.method == 'POST':
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            return HttpResponseRedirect(reverse('com:lebay_login'))
    else:
        form = UserRegistrationForm()
    
    return render_to_response('register.html', {
        'form': form,
    }, context_instance=RequestContext(request))

@login_required
def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user=request.user.user)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('com:lebay_user_home')) 
    else:
        form = PasswordChangeForm()

    return render_to_response('lebay/change_password.html', {
        'form': form,
    }, context_instance=RequestContext(request))        

@login_required
def edit_user_profile(request):
    if request.method == 'POST':
        form = UserProfileEditForm(request.POST)
        if form.is_valid():
            user = form.save()
            return HttpResponseRedirect(reverse('com:lebay_view_user_profile', args=(user.pk,)))
    else:
        form = UserProfileEditForm(instance=request.user.user)
    
    return render_to_response('lebay/edit_user_profile.html', {
        'form': form,
    }, context_instance=RequestContext(request))

@login_required
def view_user_profile(request, user_id):
    print user_id
    try:
        user = User.objects.get(pk=user_id)
    except User.DoesNotExist:
        raise Http404
        
    return render_to_response('lebay/view_user_profile.html', {
        'user': user,
    }, context_instance=RequestContext(request))

@login_required
def view_user_home(request):
    current_auctions = AuctionEvent.objects.filter(item__seller=request.user.user, item__status=AUCTION_ITEM_STATUS_RUNNING)
    won_auctions = AuctionEvent.objects.filter(winning_bidder=request.user.user, item__status=AUCTION_ITEM_STATUS_SOLD)
    listable_items = Item.objects.filter(seller=request.user.user, status=AUCTION_ITEM_STATUS_IDLE)
    
    return render_to_response('lebay/view_user_home.html', {
        'current_auctions': current_auctions,
        'won_auctions': won_auctions,
        'listable_items': listable_items,
    }, context_instance=RequestContext(request))

@login_required
def edit_seller_profile(request):
    if request.user.user.is_seller():
        seller = Seller.objects.get(user=request.user.user)
    else:
        seller = Seller(user=request.user.user, paypal_email=request.user.email)
        seller.save()

    if request.method == 'POST':
        form = SellerProfileForm(data=request.POST, instance=seller)
        if form.is_valid():
            seller = form.save()
            return HttpResponseRedirect(reverse('com:lebay_user_home')) 
    else:
        form = SellerProfileForm(instance=seller)

    return render_to_response('lebay/seller_profile.html', {
        'form': form,
    }, context_instance=RequestContext(request))        

@login_required
def view_item(request, item_id):
    try:
        item = Item.objects.get(pk=item_id)
    except Item.DoesNotExist:
        raise Http404

    item_locked = False
    if item.status == AUCTION_ITEM_STATUS_RUNNING:
        item_locked = True
    
    return render_to_response('lebay/view_item_detail.html', {
        'item': item,
        'item_locked': item_locked
    }, context_instance=RequestContext(request))

@login_required
def edit_item(request, item_id):
    try:
        item = Item.objects.get(pk=item_id, seller=request.user.user)
    except Item.DoesNotExist:
        raise Http404
    
    if item.status == AUCTION_ITEM_STATUS_RUNNING:
        return HttpResponseRedirect(reverse('com:lebay_view_item_detail', args=(item.pk,)))

    if request.method == 'POST':
        item_form = ItemForm(data=request.POST, instance=item)
        
        if item_form.is_valid():
            saved_item = item_form.save()
            return HttpResponseRedirect(reverse('com:lebay_view_item_detail', args=(saved_item.id,))) 
    else:
        item_form = ItemForm(instance=item)
    
    return render_to_response('lebay/edit_item_detail.html', {
        'item_form': item_form,
    }, context_instance=RequestContext(request))

@login_required
def list_item(request):
    try:
        seller_profile = Seller.objects.get(user=request.user.user)
    except Seller.DoesNotExist:
        return HttpResponseRedirect(reverse('com:lebay_create_seller_profile') + '?next=%s' % reverse('com:lebay_list_item'))
    
    if request.method == 'POST':
        item_form = ItemForm(data=request.POST, seller=request.user.user)
        auction_form = AuctionEventForm(data=request.POST)
        
        if item_form.is_valid() and auction_form.is_valid():
            item = item_form.save()
            auction_event = auction_form.save(item=item)
            return HttpResponseRedirect(reverse('com:lebay_view_auction_event', args(auction_event.id,))) 
    else:
        item_form = ItemForm()
        auction_form = AuctionEventForm(initial={'shipping_method': seller_profile.default_shipping_method, 'shipping_detail': seller_profile.default_shipping_detail, 'payment_detail': seller_profile.default_payment_detail})

    return render_to_response('lebay/list_item.html', {
        'item_form': item_form,
        'auction_form': auction_form
    }, context_instance=RequestContext(request))        

@login_required
def list_existing_item(request, item_id=None):
    try:
        item = Item.objects.get(pk=item_id)
    except Item.DoesNotExist:
        raise Http404

    if item.status == AUCTION_ITEM_STATUS_RUNNING:
        auction_event = AuctionEvent.objects.get(item=item)
        return HttpResponseRedirect(reverse('com:lebay_view_auction_event', args=(auction_event.pk,)))

    if request.method == 'POST':
        auction_form = AuctionEventForm(data=request.POST)
        if auction_form.is_valid():
            auction_event = auction_form.save(item=item)
            return HttpResponseRedirect(reverse('com:lebay_view_auction_event', args=(auction_event.pk,))) 
    else:
        auction_form = AuctionEventForm()

    return render_to_response('lebay/list_existing_item.html', {
        'item': item,
        'auction_form': auction_form
    }, context_instance=RequestContext(request))        

def view_categories(request):
    categories = ItemCategory.objects.all()
    return render_to_response('lebay/view_categories.html', {
        'categories': categories,
    }, context_instance=RequestContext(request))        

def view_category(request, category_id):
    try:
        category = ItemCategory.objects.get(pk=category_id)
    except ItemCategory.DoesNotExist:
        raise Http404
    
    auction_events = AuctionEvent.objects.get_current_auctions().filter(item__category=category)
    auction_paginator = Paginator(auction_events, 10)

    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        auction_page = auction_paginator.page(page)
    except (EmptyPage, InvalidPage):
        auction_page = auction_paginator.page(post_paginator.num_pages)
    
    return render_to_response('lebay/view_category.html', {
        'category': category,
        'auction_page': auction_page,
    }, context_instance=RequestContext(request))        

def search_auction_events(request):
    if request.method == 'POST':
        form = AuctionSearchForm(data=request.POST)
        if form.is_valid():
            matching_auctions = form.search()
            return render_to_response('lebay/display_search_results.html', {
                'matching_auctions': matching_auctions,
            }, context_instance=RequestContext(request))
        else:
            return HttpResponseRedirect(reverse('com:lebay_view_auction_events'))
    else:
        return HttpResponseRedirect(reverse('com:lebay_view_auction_events'))

@login_required
def view_auction_event(request, auction_event_id=None):
    try:
        auction_event = AuctionEvent.objects.get(pk=auction_event_id)
    except AuctionEvent.DoesNotExist:
        raise Http404

    if request.method == 'POST':
        form = BidForm(data=request.POST, auction_event=auction_event, bidder=request.user.user)
        if form.is_valid():
            bid = form.save()
            return HttpResponseRedirect(request.get_full_path())
    else:
        form = BidForm(initial={'amount': auction_event.get_current_price() + Decimal('0.01')})
    
    return render_to_response('lebay/view_auction.html', {
        'form': form,
        'auction_event': auction_event
    }, context_instance=RequestContext(request))

@login_required
def view_ended_auction_event(request, auction_event_id=None):
    try:
        auction_event = AuctionEvent.objects.get(pk=auction_event_id)
    except AuctionEvent.DoesNotExist:
        raise Http404
    
    if not auction_event.is_running():
        process_ended_auction(auction_event)

    return render_to_response('lebay/view_ended_auction.html', {
        'auction_event': auction_event
    }, context_instance=RequestContext(request))

def view_auction_events(request):
    try:
        auction_events = AuctionEvent.objects.get_current_auctions().filter(~Q(item__seller=request.user.user))
    except Exception, e:
        auction_events = AuctionEvent.objects.get_current_auctions()

    if request.GET:
        sort_by = request.GET.get('sort_by', '')
        if sort_by not in AUCTION_EVENT_SORTING_CHOICES:
            sort_by = AUCTION_EVENT_SORTING_TITLE
        auction_events = auction_events.order_by(dict(AUCTION_EVENT_SORTING_CHOICES)[sort_by])
    auction_paginator = Paginator(auction_events, 10)

    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        auction_page = auction_paginator.page(page)
    except (EmptyPage, InvalidPage):
        auction_page = auction_paginator.page(post_paginator.num_pages)
    
    return render_to_response('lebay/view_auctions.html', {
        'auction_page': auction_page
    }, context_instance=RequestContext(request)) 

@login_required
def view_bid_history(request, auction_event_id):
    try:
        auction_event = AuctionEvent.objects.get(pk=auction_event_id)
    except AuctionEvent.DoesNotExist:
        raise Http404
    
    bids = auction_event.bids.all()
    if bids.count():
        highest_bid = auction_event.bids.order_by('-amount')[0]
    else:
        highest_bid = None

    return render_to_response('lebay/view_bid_history.html', {
        'auction_event': auction_event,
        'highest_bid': highest_bid,  
        'bids': bids,
    }, context_instance=RequestContext(request))

@login_required
def pay_for_item(request, auction_event_id):
    try:
        auction_event = AuctionEvent.objects.get(pk=auction_event_id)
    except AuctionEvent.DoesNotExist:
        raise Http404

    if auction_event.winning_bidder == request.user.user:
        if not auction_event.is_paid():
            if request.method == 'POST':
                form = PaymentForm(request.POST)
                if form.is_valid():
                    invoice_hash = hashlib.md5()
                    invoice_hash.update(str(auction_event.pk) + str(auction_event.winning_bidder.pk))
                    
                    sale_record = Sales()
                    sale_record.auction_event = auction_event
                    sale_record.invoice_number = invoice_hash.hexdigest()
                    sale_record.save()
                    return HttpResponseRedirect(reverse('com:lebay_user_home'))
            else:
                form = PaymentForm()

            return render_to_response('lebay/pay_for_item.html', {
                'form': form,
                'auction_event': auction_event
            }, context_instance=RequestContext(request))
        else:
            return render_to_response('error.html', {
                'title': 'Payment Error',
                'summary': "You have already paid for this item.",
            }, context_instance=RequestContext(request))
    else:
        return render_to_response('error.html', {
            'title': 'Payment Error',
            'summary': "You are trying to pay for an item you didn't win.",
        }, context_instance=RequestContext(request))

@login_required
def manage_payments(request):
    sales = Sales.objects.filter(auction_event__item__seller=request.user.user)
    sales_formset = []
    if request.method == "POST":
        forms_are_valid = True
        for sale in sales:
            sale_form = SalesForm(data=request.POST, instance=sale, prefix=sale.pk)
            if sale_form.is_valid():
                sale_form.save()
                return HttpResponseRedirect(reverse('com:lebay_manage_payments'))
    else:
        for sale in sales:
            sale_form = SalesForm(instance=sale, prefix=sale.pk)
            sales_formset.append({'sale': sale, 'form': sale_form})
    return render_to_response("lebay/manage_payments.html", {
        'sales_formset': sales_formset,
    }, context_instance=RequestContext(request))
{% extends "base.html" %} {% block title %}All Auctions{% endblock %} {% block content %}

User Profile Menu


Items on Sale

{% for auction_event in current_auctions %} {% endfor %}
Title Condition Price Ending on
{{ auction_event.item.title|title }} {{ auction_event.item.get_condition }} ${{ auction_event.get_current_price }} {{ auction_event.end_time|date:"g:i A, j N Y" }}

Items Won

{% for auction_event in won_auctions %} {% endfor %}
Title Condition Price Ended on Payment Status
{{ auction_event.item.title|title }} {{ auction_event.item.get_condition }} ${{ auction_event.get_current_price }} {{ auction_event.end_time|date:"g:i A, j N Y" }} {% if not auction_event.is_paid %}Submit Payment{% else %}{{ auction_event.get_payment_status }}{% endif %}

Items in Inventory

{% for item in listable_items %} {% endfor %}
Title Condition Category Status Re-list
{{ item.title|title }} {{ item.get_condition }} {{ item.category }} {{ item.get_status }} Click
{% endblock %}

Reply via email to