Ignore the virtualenv-created directories under env/
- Legacy-Id: 12178
This commit is contained in:
parent
ef9bf2f175
commit
b2aae7dc35
7
env/.gitignore
vendored
Normal file
7
env/.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
/bin
|
||||||
|
/share
|
||||||
|
/selenium
|
||||||
|
/etc
|
||||||
|
/local
|
||||||
|
/lib
|
||||||
|
/include
|
|
@ -382,7 +382,7 @@ TEST_URL_COVERAGE_EXCLUDE = [
|
||||||
r"^\^admin/",
|
r"^\^admin/",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Tese are filename globs
|
# These are filename globs. They are fed directly to the coverage code checker.
|
||||||
TEST_CODE_COVERAGE_EXCLUDE = [
|
TEST_CODE_COVERAGE_EXCLUDE = [
|
||||||
"*/tests*",
|
"*/tests*",
|
||||||
"*/admin.py",
|
"*/admin.py",
|
||||||
|
@ -660,8 +660,7 @@ USER_PREFERENCE_DEFAULTS = {
|
||||||
}
|
}
|
||||||
|
|
||||||
TRAC_MASTER_DIR = "/a/www/trac-setup/"
|
TRAC_MASTER_DIR = "/a/www/trac-setup/"
|
||||||
TRAC_WIKI_DIR_ROOT = "/a/www/www6s/trac/"
|
TRAC_WIKI_DIR_PATTERN = "/a/www/www6s/trac/%s"
|
||||||
TRAC_WIKI_DIR_PATTERN = os.path.join(TRAC_WIKI_DIR_ROOT, "%s")
|
|
||||||
TRAC_WIKI_URL_PATTERN = "https://trac.ietf.org/trac/%s/wiki"
|
TRAC_WIKI_URL_PATTERN = "https://trac.ietf.org/trac/%s/wiki"
|
||||||
TRAC_ISSUE_URL_PATTERN = "https://trac.ietf.org/trac/%s/report/1"
|
TRAC_ISSUE_URL_PATTERN = "https://trac.ietf.org/trac/%s/report/1"
|
||||||
TRAC_SVN_DIR_PATTERN = "/a/svn/group/%s"
|
TRAC_SVN_DIR_PATTERN = "/a/svn/group/%s"
|
||||||
|
|
|
@ -4,16 +4,14 @@ import os
|
||||||
import copy
|
import copy
|
||||||
import syslog
|
import syslog
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
|
from optparse import make_option
|
||||||
#from optparse import make_option
|
#from optparse import make_option
|
||||||
|
|
||||||
from trac.admin.api import AdminCommandManager
|
|
||||||
from trac.core import TracError
|
from trac.core import TracError
|
||||||
from trac.env import Environment
|
from trac.env import Environment
|
||||||
from trac.perm import PermissionSystem
|
from trac.perm import PermissionSystem
|
||||||
from trac.ticket.model import Component, Milestone, Severity
|
from trac.ticket.model import Component, Milestone, Severity
|
||||||
from trac.util.text import unicode_unquote
|
from trac.util.text import unicode_unquote
|
||||||
from trac.versioncontrol.api import RepositoryManager
|
|
||||||
from trac.wiki.admin import WikiAdmin
|
|
||||||
from trac.wiki.model import WikiPage
|
from trac.wiki.model import WikiPage
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -33,8 +31,9 @@ class Command(BaseCommand):
|
||||||
help = "Create group wikis for WGs, RGs and Areas which don't have one."
|
help = "Create group wikis for WGs, RGs and Areas which don't have one."
|
||||||
|
|
||||||
option_list = BaseCommand.option_list + (
|
option_list = BaseCommand.option_list + (
|
||||||
|
make_option('--wiki-dir-pattern', dest='wiki_dir_pattern', help='File containing email (default: stdin)'),
|
||||||
)
|
)
|
||||||
#verbosity = 1
|
verbosity = 2
|
||||||
|
|
||||||
def note(self, msg):
|
def note(self, msg):
|
||||||
if self.verbosity > 1:
|
if self.verbosity > 1:
|
||||||
|
@ -238,12 +237,13 @@ class Command(BaseCommand):
|
||||||
def handle(self, *filenames, **options):
|
def handle(self, *filenames, **options):
|
||||||
self.verbosity = options['verbosity']
|
self.verbosity = options['verbosity']
|
||||||
self.errors = 0
|
self.errors = 0
|
||||||
|
self.wiki_dir_pattern = options.get('wiki_dir_pattern', settings.TRAC_WIKI_DIR_PATTERN)
|
||||||
|
|
||||||
if self.verbosity.isdigit():
|
if isinstance(self.verbosity, (type(""), type(u""))) and self.verbosity.isdigit():
|
||||||
self.verbosity = int(self.verbosity)
|
self.verbosity = int(self.verbosity)
|
||||||
|
|
||||||
if not os.path.exists(settings.TRAC_WIKI_DIR_ROOT):
|
if not os.path.exists(os.path.dirname(self.wiki_dir_pattern)):
|
||||||
raise CommandError('The Wiki base direcory specified in settings.TRAC_WIKI_DIR_ROOT (%s) does not exist.' % settings.TRAC_WIKI_DIR_ROOT)
|
raise CommandError('The Wiki base direcory specified for the wiki directories (%s) does not exist.' % os.path.dirname(self.wiki_dir_pattern))
|
||||||
|
|
||||||
groups = Group.objects.filter(
|
groups = Group.objects.filter(
|
||||||
type__slug__in=['wg','rg','area'],
|
type__slug__in=['wg','rg','area'],
|
||||||
|
@ -253,7 +253,7 @@ class Command(BaseCommand):
|
||||||
for group in groups:
|
for group in groups:
|
||||||
try:
|
try:
|
||||||
self.note("Processing group %s" % group.acronym)
|
self.note("Processing group %s" % group.acronym)
|
||||||
group.trac_dir = settings.TRAC_WIKI_DIR_PATTERN % group.acronym
|
group.trac_dir = self.wiki_dir_pattern % group.acronym
|
||||||
group.svn_dir = settings.TRAC_SVN_DIR_PATTERN % group.acronym
|
group.svn_dir = settings.TRAC_SVN_DIR_PATTERN % group.acronym
|
||||||
|
|
||||||
if not os.path.exists(group.svn_dir):
|
if not os.path.exists(group.svn_dir):
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os.path
|
import os.path
|
||||||
import types
|
import types
|
||||||
#import json
|
import shutil
|
||||||
#from pathlib import Path
|
from StringIO import StringIO
|
||||||
|
from pipe import pipe
|
||||||
|
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
|
@ -10,6 +11,7 @@ from email.mime.image import MIMEImage
|
||||||
from email.mime.multipart import MIMEMultipart
|
from email.mime.multipart import MIMEMultipart
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.core.management import call_command
|
||||||
from django.template import Context
|
from django.template import Context
|
||||||
from django.template.defaulttags import URLNode
|
from django.template.defaulttags import URLNode
|
||||||
from django.templatetags.static import StaticNode
|
from django.templatetags.static import StaticNode
|
||||||
|
@ -21,7 +23,9 @@ import debug # pyflakes:ignore
|
||||||
import ietf.urls
|
import ietf.urls
|
||||||
from ietf.utils.management.commands import pyflakes
|
from ietf.utils.management.commands import pyflakes
|
||||||
from ietf.utils.mail import send_mail_text, send_mail_mime, outbox
|
from ietf.utils.mail import send_mail_text, send_mail_mime, outbox
|
||||||
|
from ietf.utils.test_data import make_test_data
|
||||||
from ietf.utils.test_runner import get_template_paths
|
from ietf.utils.test_runner import get_template_paths
|
||||||
|
from ietf.group.models import Group
|
||||||
|
|
||||||
class PyFlakesTestCase(TestCase):
|
class PyFlakesTestCase(TestCase):
|
||||||
|
|
||||||
|
@ -186,6 +190,46 @@ class TemplateChecksTestCase(TestCase):
|
||||||
settings.DEBUG = saved_debug
|
settings.DEBUG = saved_debug
|
||||||
|
|
||||||
|
|
||||||
|
class TestWikiGlueManagementCommand(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
|
||||||
|
if not os.path.exists(self.wiki_dir_pattern):
|
||||||
|
os.mkdir(os.path.dirname(self.wiki_dir_pattern))
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
|
||||||
|
|
||||||
|
def test_wiki_create_output(self):
|
||||||
|
make_test_data()
|
||||||
|
groups = Group.objects.filter(
|
||||||
|
type__slug__in=['wg','rg','area'],
|
||||||
|
state__slug='active'
|
||||||
|
).order_by('acronym')
|
||||||
|
out = StringIO()
|
||||||
|
call_command('create_group_wikis', stdout=out, verbosity=2, wiki_dir_pattern=self.wiki_dir_pattern)
|
||||||
|
command_output = out.getvalue()
|
||||||
|
for group in groups:
|
||||||
|
self.assertIn("Processing group %s" % group.acronym, command_output)
|
||||||
|
# Do a bit of verification using trac-admin, too
|
||||||
|
admin_code, admin_output, admin_error = pipe('trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
|
||||||
|
self.assertEqual(admin_code, 0)
|
||||||
|
roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
|
||||||
|
for role in roles:
|
||||||
|
user = role.email.address.lower()
|
||||||
|
self.assertIn("Granting admin permission for %s" % user, command_output)
|
||||||
|
self.assertIn(user, admin_output)
|
||||||
|
docs = group.document_set.filter(stats_slug='active', type_id='draft')
|
||||||
|
for doc in docs:
|
||||||
|
name = doc.name
|
||||||
|
name = name.replace('draft-','')
|
||||||
|
name = name.replace(group.stream+'-', '')
|
||||||
|
name = name.replace(group.acronym+'-', '')
|
||||||
|
self.assertIn("Adding component %s"%name, command_output)
|
||||||
|
for page in settings.TRAC_WIKI_PAGES_TEMPLATES:
|
||||||
|
self.assertIn("Adding page %s" % os.path.basename(page), command_output)
|
||||||
|
self.assertIn("Indexing default repository", command_output)
|
||||||
|
|
||||||
## One might think that the code below would work, but it doesn't ...
|
## One might think that the code below would work, but it doesn't ...
|
||||||
|
|
||||||
# def list_static_files(path):
|
# def list_static_files(path):
|
||||||
|
|
Loading…
Reference in a new issue