name = models.CharField(max_length=100, verbose_name=u"nom", unique=True)
short = models.SlugField(max_length=10, verbose_name=u"nom court", unique=True)
kind = models.CharField(max_length=10, choices=KIND_CHOICES, verbose_name=u"type")
- domain = models.CharField(max_length=20, choices=DOMAIN_CHOICES, verbose_name=u"domaine")
+ domain = models.CharField(max_length=20, choices=DOMAIN_CHOICES, blank=True, verbose_name=u"domaine")
dns = models.CharField(max_length=128, verbose_name=u"dns domain", blank=True)
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import datetime
+
+from django.utils import timezone
+
+
+class BaseSetup(object):
+
+ requires = ()
+
+ def __init__(self, verbosity=0, now=None):
+ self.verbosity = verbosity
+ if now is None:
+ now = timezone.now()
+ self.now = now
+
+ def run(self):
+ raise NotImplementedError
--- /dev/null
+# -*- coding: utf-8 -*-
+
+from . import BaseSetup
+
+from xnet.accounts import factories as accounts_factories
+from xnet.accounts import models as accounts_models
+
+
+class Setup(BaseSetup):
+
+ def run(self):
+ self.setup_groups()
+
+ def setup_groups(self):
+ accounts_factories.XGroupFactory(
+ name='Polytechnique.org',
+ short='xorg',
+ kind=accounts_models.XGroup.KIND_INSTIT,
+ domain='',
+ web='https://www.polytechnique.org/',
+ )
+
+ accounts_factories.XGroupFactory(
+ name='AX',
+ short='ax',
+ kind=accounts_models.XGroup.KIND_INSTIT,
+ domain='',
+ web='https://www.polytechniciens.com/',
+ )
+
+ accounts_factories.XGroupFactory(
+ name='École polytechnique',
+ short='ecole',
+ kind=accounts_models.XGroup.KIND_INSTIT,
+ domain='',
+ web='https://www.polytechnique.edu/',
+ )
+
+ accounts_factories.XGroupFactory(
+ name='FaëriX',
+ short='faerix',
+ kind=accounts_models.XGroup.KIND_BINET,
+ domain=accounts_models.XGroup.DOMAIN_LEISURE,
+ web='http://www.faerix.net/',
+ )
+
+ accounts_factories.XGroupFactory(
+ name="Bal de l'X",
+ short='bal',
+ kind=accounts_models.XGroup.KIND_BINET,
+ domain=accounts_models.XGroup.DOMAIN_EVENTS,
+ web='https://www.baldelx.com/',
+ )
--- /dev/null
+# -*- coding: utf-8 -*-
+
+"""Load a specific dataset into the database."""
+
+from django.core import management
+from django.db import transaction
+from django.utils import importlib
+
+
+class Command(management.BaseCommand):
+ args = '<dataset_name dataset_name ...>'
+ help = 'Load a specific dataset into the database.'
+
+ def handle(self, *dataset_names, **options):
+ if not dataset_names:
+ raise ValueError("At least one dataset name must be provided.")
+ for name in dataset_names:
+ self.load(name, **options)
+
+ def load(self, dataset_name, **options):
+ """Loads a dataset."""
+ verbosity = options.get('verbosity', 0)
+ indent = options.pop('indent', '')
+
+ if verbosity > 0:
+ self.stdout.write(u'%sImporting dataset %s...\n' % (indent, dataset_name))
+
+ dataset = importlib.import_module('xnet.datasets.%s' % dataset_name)
+ setup = dataset.Setup(verbosity=verbosity)
+
+ # Handle required datasets
+ for required in setup.requires:
+ self.load(required, indent=indent + ' ', **options)
+
+ # Load the data
+ with transaction.commit_on_success():
+ setup.run()
+
+ if verbosity > 0:
+ self.stdout.write(u'%sDone.\n' % indent)
--- /dev/null
+# -*- coding: utf-8 -*-
+
DEBUG = True
TEMPLATE_DEBUG = DEBUG
+INSTALLED_APPS = list(INSTALLED_APPS) + [
+ 'xnet.datasets',
+]
+
# Enable fake authentication.
AUTHGROUPEX_FAKE = True
AUTHGROUPEX_KEY = 'Just_for_dev'