Example #1
0
	def view( self, request, shop_name, dictionary = {} ):		
		cart = Cart( request.session )		

		req = request.REQUEST
		Location( request.session, 'shop' ).set( get_shop_location( shop_name, 'search', request.GET ) )

		search = Search( request.session )
		search_is_set = search.is_set()
		
		d = {	'categories': get_sorted_by_name( get_field_list_from_meta( 'product_category', ShopProductCategory, 'shop', self._shop_id  ) ),					
				'producers': get_sorted_by_name( get_field_list_from_meta( 'producer', ShopProducer, 'shop', self._shop_id ) ),
				'countries': get_sorted_by_name( get_field_list_from_meta( 'country', ShopCountry, 'shop', self._shop_id ) ),
				'search_is_set': search_is_set
		}

		q_dict = { 'shop': self._shop_id }

		if request.method == 'POST':
			form = SearchProductForm( request.POST )
			fields = dict( [ ( key, request.POST[ key ] ) for key in form.fields.iterkeys() ] )
			if form.is_valid():
				d.update( is_valid = True )
				q_dict.update( form.cleaned_data )
				search.set( **q_dict )				
				shop = get_shop_by_name( request.session, shop_name )
				page_products = ItemPage( Product ).get( q_dict = SearchView._removed_empty_items( form, q_dict ), page = 1 )
				d.update( page = 1 )
			else:
				d.update( is_valid = False )
				page_products = None
		else:
			form = SearchProductForm()

			is_page = 'page' in req
			page = int( req[ 'page' ] ) if is_page else 1		
			d.update( page = page )

			if search.is_set():
				fields = search.get()
				if is_page:
					fields.update( shop = self._shop_id )
					page_products = ItemPage( Product ).get( q_dict = SearchView._removed_empty_items( form, search.get() ), page = page )
				else:
					page_products = None
			else:
				fields = dict( [ ( key, form.fields[ key ].initial ) for key in form.fields.iterkeys() ] )
				page_products = None		
				
		if page_products:
			cart.add_in_cart_attr( page_products[ 'object_list' ] )

		d.update( page_products = page_products )
		
		d.update( form = form )
		d.update( fields = fields )

		d.update( dictionary )
		
		return super( SearchView, self ).view( request, shop_name, d )
Example #2
0
	def view( self, request, shop_name ):
		Location( request.session, 'shop' ).set( get_shop_location( shop_name, '', request.GET ) )
		req = request.REQUEST
		form_request = None
		page = int( req[ 'page' ] ) if 'page' in req else 1	

		q_dict = {}
		q_dict.update( shop = self._shop_id )
		
		if 'category' in req:
			category = int( req[ 'category' ] )
			q_dict.update( category = category )
		else:
			category = None
		
		page_products = ItemPage( Product ).get( q_dict = q_dict, page = page )
		
		cart = Cart( request.session )
		cart.add_in_cart_attr( page_products[ 'object_list' ] )

		return super( ShopView, self ).view( request, shop_name,
												{	'page_products': page_products,
													'page': int( page ),
													'num_products_on_page': NUM_ITEMS_ON_PAGE,
													'categories': get_sorted_by_name( get_field_list_from_meta( 'product_category', ShopProductCategory, 'shop', self._shop_id  ) ),
													'category': category
												} )