Работа с базой данных.

Аватар пользователя jammarra jammarra 5 мая 2012 в 5:43

Здравствуйте.

Возникла необходимость реализовать справочник сотрудников в Друпал. Не подскажете способ его проще и правильнее реализовать средствами Друпал или отдельно на чистом PHP? может модуль какой использовать?. На джанго это бы выглядело примерно так:

from django.db import models
from filebrowser.fields import FileBrowseField

class Company(models.Model):
    company = models.CharField(max_length=255, verbose_name="компания")

    def __unicode__(self):
        return u'%s' % self.company

    class Meta:
        verbose_name = ("компания")
        verbose_name_plural = ("компании")

class Department(models.Model):
    department_name = models.CharField(max_length=50, verbose_name="подразделение")

    def __unicode__(self):
        return u'%s' % self.department_name

    class Meta:
        verbose_name = ('подразделение')
        verbose_name_plural = ('подразделения')
       

class Job(models.Model):
    job_name = models.CharField(max_length=100, verbose_name="должность")

    def __unicode__(self):
        return u'%s' % self.job_name

    class Meta:
        verbose_name = ('должность')
        verbose_name_plural = ('должности')

class Address(models.Model):
    street = models.CharField(max_length=255, verbose_name="улица")
    house = models.IntegerField(verbose_name="номер дома")

    def __unicode__(self):
        return u'%s, %s' % (self.street, self.house)

    class Meta:
        verbose_name = ('адрес')
        verbose_name_plural = ('адреса')

class Floor(models.Model):
    floor = models.IntegerField(verbose_name="этаж")

    def __unicode__(self):
        return u'%s' % self.floor

    class Meta:
        verbose_name = ('этаж')
        verbose_name_plural = ('этажи')

class Room(models.Model):
    room = models.CharField(max_length=50, verbose_name="офис")

    def __unicode__(self):
        return u'%s' % self.room

    class Meta:
        verbose_name = ('офис')
        verbose_name_plural = ('офисы')

class Building(models.Model):
    building = models.CharField(max_length=255, verbose_name="строение")
    floor = models.ForeignKey(Floor, verbose_name="этаж", blank=True, null=True)
    room = models.ForeignKey(Room, verbose_name="офис №", blank=True, null=True)

    def __unicode__(self):
        return u'%s, %s этаж, комната %s' % (self.building, self.floor, self.room)

    class Meta:
        verbose_name = ('строение')
        verbose_name_plural = ('строения')

class Location(models.Model):
    address = models.ForeignKey(Address, verbose_name="адрес")
    build = models.ForeignKey(Building, verbose_name="локальное расположение")

    def __unicode__(self):
        return u'%s, %s' % (self.address, self.build)

    class Meta:
        verbose_name = ('месторасположение')
        verbose_name_plural = ('месторасположения')

class Phone(models.Model):
    LINE_CHOICES = (
                ('distributed', 'Внутренняя'),
                ('independent', 'Входящяя'),
            )
    phoneline = models.CharField(max_length=30, choices=LINE_CHOICES, verbose_name="линия")
    touchdown = models.IntegerField(verbose_name="дополнительный", blank=True, null=True)
    shortnum = models.IntegerField(verbose_name="городской", blank=True, null=True)
    longnum = models.IntegerField(verbose_name="федеральный", blank=True, null=True)
    location = models.ForeignKey(Location, verbose_name="месторасположение", blank=True, null=True)

    def __unicode__(self):
        if (self.phoneline == 'distributed'):
            return u'%s :внутренняя линия,  %s' % (self.touchdown, self.location)
        else:
            if (self.location):
                return u'%s %s' % (self.shortnum, self.location)
            else:
                return u'%s' % self.shortnum

    class Meta:
        verbose_name = ('телефон')
        verbose_name_plural = ('телефоны')

class Worker(models.Model):
    LINE_CHOICES = (
                ("m", "мужчина"),
                ("f", "женщина"),
            )

    first_name = models.CharField(max_length=50, verbose_name="имя")
    second_name = models.CharField(max_length=100, verbose_name="фамилия")
    patronymic_name = models.CharField(max_length=50, verbose_name="отчество", blank=True)
    sex = models.CharField(max_length=1, default="m", choices=LINE_CHOICES, verbose_name="пол", blank=True)
    birthday = models.DateField(verbose_name="дата рождения", blank=True, null=True)
    company = models.ForeignKey(Company, verbose_name="компания")
    department = models.ForeignKey(Department, verbose_name="подразделение")
    phone = models.ManyToManyField(Phone, verbose_name="телефон рабочий", blank=True)
    pers_email = models.EmailField(verbose_name="емайл личный", blank=True)
    pers_mobile = models.IntegerField(verbose_name="мобильный личный", blank=True, null=True)
    pers_phone = models.IntegerField(verbose_name="телефон домашний", blank=True, null=True)
    start_work = models.DateField(verbose_name="дата трудоустройства", blank=True, null=True)
    trial = models.BooleanField(verbose_name="на испытательном сроке", default="True")
    end_work = models.DateField(verbose_name="дата увольнения", blank=True, null=True)
    image = FileBrowseField(verbose_name="фото", directory="faceco/", max_length=200, blank=True, null=True)

    def __unicode__(self):
        return u'%s %s %s %s %s %s %s' % (self.second_name, self.first_name, self.patronymic_name, self.autosaloon, self.company, self.department, self.job)

    class Meta:
        verbose_name = ('сотрудник')
        verbose_name_plural = ('сотрудники')

Комментарии

Аватар пользователя jammarra jammarra 5 мая 2012 в 6:24

Вопрос не можно или нельзя, я и сам догадываюсь что можно. Вопрос как и через что это сделать, на джанго я накидал за 30 минут. Но мне нужно сделать для друпала, а я не в курсе через что тут реализуется подобный функционал.