Здравствуйте.
Возникла необходимость реализовать справочник сотрудников в Друпал. Не подскажете способ его проще и правильнее реализовать средствами Друпал или отдельно на чистом PHP? может модуль какой использовать?. На джанго это бы выглядело примерно так:
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 = ('сотрудники')
Комментарии
Без PHP можно собрать такой сайт на друпале за один вечер.
Вопрос не можно или нельзя, я и сам догадываюсь что можно. Вопрос как и через что это сделать, на джанго я накидал за 30 минут. Но мне нужно сделать для друпала, а я не в курсе через что тут реализуется подобный функционал.