class DirectoryTest(TestCase): def setUp(self): # create the objects needed self.client = Client() self.directory = Directory() self.user = User(username='******') self.user.set_password('google') self.user.is_active = True self.user.save() def tearDown(self): self.client = None self.directory = None self.user = None def test_save(self): self.directory.headline = 'Unit Testing' self.directory.summary = 'Unit Testing' # required fields self.directory.creator = self.user self.directory.creator_username = self.user.username self.directory.owner = self.user self.directory.owner_username = self.user.username self.directory.status = True self.directory.status_detail = 'active' self.directory.enclosure_length = 0 self.directory.timezone = 'America/Chicago' self.directory.save() self.assertEquals(type(self.directory.id), long)
def setUp(self): # create the objects needed self.client = Client() self.directory = Directory() self.user = User(username='******') self.user.set_password('google') self.user.is_active = True self.user.save()
def request_associate( request, to_directory_id, form_class=RequestAssociateForm, template_name="directories/affiliates/request_associate.html"): if not get_setting('module', 'directories', 'affiliates_enabled'): raise Http404 to_directory = get_object_or_404(Directory, pk=to_directory_id) # Check user permission if not to_directory.allow_associate_by(request.user): raise Http404 # Get a list of allowed affiliate categories cats = to_directory.cats.all() allowed_affliated_cats = to_directory.get_affliated_cats() if not allowed_affliated_cats: raise Http404 # Get initial for the from_directory_url field, and display a warning message if there is no listings available to connect warning_msg_string = '' directory_initial = None initial_opts = None # get a list of directories that can be connected by this user directories = Directory.get_my_directories_filter( request.user, my_directories_only=True).filter(status_detail='active').filter( cats__in=allowed_affliated_cats).distinct() if not directories: if not request.user.is_superuser: warning_msg_string = _( 'ATTENTION! No listings available for you to connect!') else: # superuser can connect all within the allowed affiliate categories directories = Directory.objects.filter( status_detail='active').filter( cats__in=allowed_affliated_cats).distinct() if directories: [directory_initial] = [ d for d in directories if d not in to_directory.affiliates.filter( affiliateship_affiliate_directories__connected_as__isnull =False) ][:1] or [None] if not directory_initial: warning_msg_string = _( 'ATTENTION! No listings available to connect!') else: [directory_initial] = [ d for d in directories if d not in to_directory.affiliates.filter( affiliateship_affiliate_directories__connected_as__isnull=False ) ][:1] or [None] if not directory_initial: affiliateship = Affiliateship.objects.filter( directory=to_directory, affiliate__in=directories, connected_as__isnull=False)[0] connected_directory = affiliateship.affiliate connected_as = affiliateship.connected_as warning_msg_string = _( f'ATTENTION! Your listing has been connected as "{connected_as}" already! Click <a href="{connected_directory.get_absolute_url()}">Here</a> to view your listing' ) if directory_initial: site_url = get_setting('site', 'global', 'siteurl') initial_opts = { 'from_directory_url': f'{site_url}{directory_initial.get_absolute_url()}' } if directory_initial.cats.all().exists(): initial_opts.update( {'request_as': directory_initial.cats.all()[0]}) request_form = form_class(request.POST or None, request=request, to_directory=to_directory, initial=initial_opts) if request.method == "POST": if request_form.is_valid(): request_email = request_form.save() # log an event description = _( 'Requested to associate to {to_directory} from {from_directory}.' ).format( to_directory=request_email.affiliate_request.to_directory, from_directory=request_email.affiliate_request.from_directory) EventLog.objects.log(instance=request_email.affiliate_request, description=description) msg_string = _('Successfully submitted the affiliate request to the owner of %s') \ % str(request_email.affiliate_request.to_directory) messages.add_message(request, messages.SUCCESS, msg_string) return redirect("directory.search") return render_to_resp(request=request, template_name=template_name, context={ 'directory': to_directory, 'cats': cats, 'allowed_affliated_cats': allowed_affliated_cats, 'request_form': request_form, 'warning_msg_string': warning_msg_string })
def search(request, my_directories_only=False, template_name="directories/search.html"): if my_directories_only and request.user.is_authenticated: directories = Directory.get_my_directories_filter( request.user, my_directories_only=my_directories_only).distinct() else: filters = get_query_filters(request.user, 'directories.view_directory') directories = Directory.objects.filter(filters).distinct() cat = None if not request.user.is_anonymous: directories = directories.select_related() query = request.GET.get('q', None) form = DirectorySearchForm(request.GET, is_superuser=request.user.is_superuser) if form.is_valid(): search_category = form.cleaned_data['search_category'] query = form.cleaned_data.get('q') search_method = form.cleaned_data['search_method'] cat = form.cleaned_data.get('cat') sub_cat = form.cleaned_data.get('sub_cat') region = form.cleaned_data.get('region') cat = [int(c) for c in cat if c.isdigit()] if sub_cat: sub_cat = [int(c) for c in sub_cat if c.isdigit()] if cat: directories = directories.filter(cats__in=list(cat)) if sub_cat: directories = directories.filter(sub_cats__in=list(sub_cat)) if region: directories = directories.filter(region=region) if query and 'tag:' in query: tag = query.strip('tag:') directories = directories.filter(tags__icontains=tag) elif query and search_category: search_type = '__iexact' if search_method == 'starts_with': search_type = '__istartswith' elif search_method == 'contains': search_type = '__icontains' search_filter = {'%s%s' % (search_category, search_type): query} directories = directories.filter(**search_filter) directories = directories.order_by('headline') EventLog.objects.log() if not get_setting('module', 'directories', 'showresultswithoutsearch'): if "?" not in request.get_full_path(): directories = directories.none() return render_to_resp(request=request, template_name=template_name, context={ 'directories': directories, 'form': form, 'a_to_z': string.ascii_lowercase })