Example #1
0
    def handle(self, **options):
        if options.get('create_institution'):
            if not options['param']:
                print("Provide the institution name")
                exit()

            name = options['param'].strip()
            Institution.objects.create(name=options['param'].strip())

        if options.get('remove_user'):
            if not options['param']:
                print("Provide a user id")
                exit()

            user = User.objects.get(pk=int(options['param'].strip()))
            print("User has %d elections objects which will be removed" % user.elections.count())
            confirm = input('Write "yes of course" if you are sure you want to remove \'%s\' ? ' % user.user_id)
            if confirm == "yes of course":
                user.delete()
            else:
                exit()
            print("User removed")

        if options.get("reset_password"):
            if not options['param']:
                print("Provide a user id and a password")
                exit()
            user = self.get_user(options['param'])
            password = getpass.getpass("Password:"******"Confirm password:"******"enable_sms"):
            if not options['param']:
                print("Provide a user id and sms backend sender id")
                exit()

            sender = options.get('enable_sms', 'ZEUS')
            creds = getpass.getpass("Credentials (e.g. username:pass):")
            username, password = creds.split(":")

            user = self.get_user(options['param'])
            if user.sms_data:
                backend = user.sms_data
            else:
                backend = SMSBackendData()
                backend.limit = options.get("sms_limit", 10)
                print("SMS deliveries limit is set to 10")

            backend.credentials = "%s:%s" % (username, password)
            backend.sender = sender
            backend.save()
            user.sms_data = backend
            user.save()

        if options.get("sms_limit"):
            user = self.get_user(options['param'])
            user.sms_data.limit = options.get("sms_limit")
            user.sms_data.save()

        if options.get('create_user'):
            username = options['param'].strip()
            superadmin = options.get('superuser', False)
            manager = options.get('manager', False)
            name = options.get('name', None)

            try:
                existing = User.objects.get(user_id=username)
            except User.DoesNotExist:
                existing = False

            if existing:
                print("User %s, already exists" % username)
                exit()

            inst_pk = options.get('institution')
            if not inst_pk:
                print("Please provide an institution id using --institution")
                exit()
            inst = Institution.objects.get(pk=int(inst_pk))

            password = getpass.getpass("Password:"******"Confirm password:"******"Passwords don't match")
                exit()

            newuser = User()
            newuser.user_type = "password"
            newuser.admin_p = True
            newuser.info = {'name': name or username, 'password':
                            make_password(password)}
            newuser.name = name
            newuser.user_id = username
            newuser.superadmin_p = superadmin
            newuser.management_p = manager
            newuser.institution = inst
            newuser.ecounting_account = False
            newuser.save()
            newuser.user_groups.set([UserGroup.objects.get(name="default")])