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!
{{ 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
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
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
Title | Condition | Category | Status | Re-list |
{{ item.title|title }} | {{ item.get_condition }} | {{ item.category }} | {{ item.get_status }} | Click |