Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

MikroTik + DJANGO. Часть 2. Модели генерации пароля и создания учетной записи

 17 Авг 2012    MikroTik, Практика и программирование MikroTik

При помощи моделей опишем данные, которые нам понадобятся для организации работы системы.

Редактируем файл models.py. Создаём две модели: для генератора пароля и создания учётной записи клиента.

Импортируем нужные модули:

 

# -*- coding: utf-8 -*-

from django.db import models

from django.db import connection

import random

#Модель извлечения данных о паролях, и генератор паролей

#Создаем модель Gen_passw

class Gen_passw(models.Model):

#Метод извлекающий данные о паролях

    def get_passwords(self):

       #Подключаемся к базе

        cur = connection.cursor()

      #Формируем SQL запрос

        sql = ("SELECT gen_password FROM wifiproject_create_account")

     #Выполняем запрос

        cur.execute(sql)

     #Полученные данные, присваиваем переменной list_passwords

        list_passwords = cur.fetchall()

    #Закрываем соединение с базой

        cur.close()

    #Возвращаем значение переменной list_passwords

        return list_passwords

#Метод генерирующий пароль

    def f_gen_passwd(self):

        arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',\

        \

        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B',\

        \

        'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',\

        \

        'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']

        passw = []

        for i in xrange(20):

            passw.append(random.choice(arr))

        return "".join(passw)

 

Для каждой модели создаётся таблица в базе данных abstract = True, этим мы укажем что для данной модели, таблицу создавать не нужно.

    class Meta:

        abstract = True

 

Добавляем модель, создающую учетные записи клиентов.

Назовём модель Create_account

class Create_account(models.Model):

#Создаем поле gen_password, тип которого CharField. Максимальное количество символов 200. verbose_name='Пароль для доступа' задаёт описание поля в панели администратора.

    gen_password = models.CharField(max_length=200, verbose_name='Пароль для доступа')

#В поле email будем хранить email, клиента

    email = models.EmailField()

#Поле end_time содержит дату отключения клиента.

    end_time = models.DateField(verbose_name='Дата отключения')

#Каждая модель, содержит метод save, для сохранения данных в базе.

    def save(self):

#Создаем экземпляр класса(модели) Gen_passw

        gen = Gen_passw()

#Выполняем бесконечный цикл

        while True:

#Присваиваем переменной new_password сгенерированный пароль.

            new_password = gen.f_gen_passwd()

#Извлекаем из базы данных запись, в которой поле gen_password равен значению переменной new_password. Если условие выполнено, это означает что пароль уже существует и будет сгенерирован новый пароль. Если условие не выполняется, прерываем цикл.

            if Create_account.objects.filter(gen_password=new_password):

                pass

            else:

                break

#Присваиваем полю gen_password, значение сгенерированного пароля

        self.gen_password = new_password

        super(Create_account, self).save()

    def __unicode__(self):

        return '%s' % (self.email)

 

Создадим базу данных и таблицы.

 

 Создние базы данных

Рис.1. Создние базы данных

 

При помощи phpmyadmin создадим базу данных с именем wifizone.

Подключаем наше приложение. Для этого необходимо в файле settings.py добавить строчку 'wifizone.wifiproject',

INSTALLED_APPS = (

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.sites',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    # Uncomment the next line to enable the admin:

    'django.contrib.admin',

    'wifizone.wifiproject',

    # Uncomment the next line to enable admin documentation:

    # 'django.contrib.admindocs',

)

 

 Создание таблиц в базе данных

Рис.2. Создание таблиц в базе данных

 

Переходим в директорию с проектом и выполняем команду python manage.py syncdb

В результате будут созданы таблицы для панели администратора и таблица для модели Create_account.

 

 Данные об администраторе

Рис.3. Данные об администраторе

 

После создания таблиц, будет предложено создать учётную запись администратора.

Евгений Рудченко специально для ASP24