Commit 3b151b9b authored by jocelyn's avatar jocelyn
Browse files

Merge branch 'illyse-return' into 'master'

Intégration de l'app dsl_ldap de illyse

Closes #207, #208, and #209

See merge request ffdn/coin!2
parents 0227df9a 72fad952
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -344,9 +344,10 @@ Using optional apps

Some apps are not enabled by default :

- *vpn*: Management of OpenVPN subscription and credentials through LDAP
- *vpn*: Management of OpenVPN subscription and credentials through LDAP (used by [Illyse](https://www.illyse.net/) and [ARN](https://www.arn-fai.net/))
- *simple_dsl*: Simple DSL subscriptions, without handling
   any authentication backend or user configuration ("marque blanche")
- *dsl_ldap*: A DSL service which provisions LDAP for radius use (used by [Illyse](https://www.illyse.net/))
- *hardware_provisioning* : Self-service app to manage hardware inventory,
  hardware lent to members or in different stock sites.
- *maillists* : Self-service mailling-list (un)subscription for members:
+3 −2
Original line number Diff line number Diff line
@@ -10,10 +10,11 @@ from coin.configuration.models import Configuration


class ConfigurationForm(ModelForm):
    comment = forms.CharField(widget=forms.Textarea)

    class Meta:
        model = Configuration
        widgets = {
            'comment': forms.Textarea(),
        }
        fields = '__all__'

    def __init__(self, *args, **kwargs):
+18 −18
Original line number Diff line number Diff line
@@ -529,27 +529,27 @@ class MembershipFee(models.Model):
class LdapUser(ldapdb.models.Model):
    # "ou=users,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
    base_dn = settings.LDAP_USER_BASE_DN
    object_classes = [b'inetOrgPerson', b'organizationalPerson', b'person',
                      b'top', b'posixAccount', b'ldapPublicKey']
    object_classes = ['inetOrgPerson', 'organizationalPerson', 'person',
                      'top', 'posixAccount', 'ldapPublicKey']

    uid = CharField(db_column=b'uid', unique=True, max_length=255)
    nick_name = CharField(db_column=b'cn', unique=True, primary_key=True,
    uid = CharField(db_column='uid', unique=True, max_length=255)
    nick_name = CharField(db_column='cn', unique=True, primary_key=True,
                          max_length=255)
    first_name = CharField(db_column=b'givenName', max_length=255)
    last_name = CharField(db_column=b'sn', max_length=255)
    display_name = CharField(db_column=b'displayName', max_length=255,
    first_name = CharField(db_column='givenName', max_length=255)
    last_name = CharField(db_column='sn', max_length=255)
    display_name = CharField(db_column='displayName', max_length=255,
                             blank=True)
    password = CharField(db_column=b'userPassword', max_length=255)
    uidNumber = IntegerField(db_column=b'uidNumber', unique=True)
    gidNumber = IntegerField(db_column=b'gidNumber', default=2000)
    password = CharField(db_column='userPassword', max_length=255)
    uidNumber = IntegerField(db_column='uidNumber', unique=True)
    gidNumber = IntegerField(db_column='gidNumber', default=2000)
    # Used by Sympa for logging in.
    mail = CharField(db_column=b'mail', max_length=255, blank=True,
    mail = CharField(db_column='mail', max_length=255, blank=True,
                     unique=True)
    homeDirectory = CharField(db_column=b'homeDirectory', max_length=255,
    homeDirectory = CharField(db_column='homeDirectory', max_length=255,
                              default='/tmp')
    loginShell = CharField(db_column=b'loginShell', max_length=255,
    loginShell = CharField(db_column='loginShell', max_length=255,
                              default='/bin/bash')
    sshPublicKey = ListField(db_column=b'sshPublicKey', default=[])
    sshPublicKey = ListField(db_column='sshPublicKey', default=[])

    def __unicode__(self):
        return self.display_name
@@ -561,11 +561,11 @@ class LdapUser(ldapdb.models.Model):
# class LdapGroup(ldapdb.models.Model):
# "ou=groups,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
#     base_dn = settings.LDAP_GROUP_BASE_DN
#     object_classes = [b'posixGroup']
#     object_classes = ['posixGroup']

#     gid = IntegerField(db_column=b'gidNumber', unique=True)
#     name = CharField(db_column=b'cn', max_length=200, primary_key=True)
#     members = ListField(db_column=b'memberUid')
#     gid = IntegerField(db_column='gidNumber', unique=True)
#     name = CharField(db_column='cn', max_length=200, primary_key=True)
#     members = ListField(db_column='memberUid')

#     def __unicode__(self):
#         return self.name
+19 −0
Original line number Diff line number Diff line
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import datetime

from django.core.management.base import BaseCommand, CommandError
from django.db.models import Q

from coin.offers.models import OfferSubscription


class Command(BaseCommand):
    help = 'Returns the email addresses of all subscribers, in a format suitable for bulk importing in Sympa'

    def handle(self, *args, **options):
        emails = [s.member.email for s in OfferSubscription.objects.filter(Q(resign_date__gt=datetime.date.today) | Q(resign_date__isnull=True))]
        # Use a set to ensure uniqueness
        for email in set(emails):
            self.stdout.write(email)
+1 −0
Original line number Diff line number Diff line
@@ -269,6 +269,7 @@ LDAP_ACTIVATE = False
# Not setting them results in NameError
LDAP_USER_BASE_DN = None
VPN_CONF_BASE_DN = None
DSL_CONF_BASE_DN = None

# Allow member to edit their vpn
MEMBER_CAN_EDIT_VPN_CONF = True
Loading