class Template(Model): """Template Model. """ template_type = field.Integer(choices=TEMPLATE_TYPES) template = field.File(random_name="Template") description = field.String("Description") preview = field.File(random_name="Preview") version = field.String("Version") modify_date = field.DateTime("ModifyDate", format='%d %b %Y %H:%M:%S') name = field.String("Name", unique=True) def post_save(self): """ Get last_modified from S3 and update modify_date of this object. Returns: """ s3_manager = S3FileManager() s3_time = s3_manager.get_last_modified_date(self.template) modify_date = self.change_date_format(s3_time) self.modify_date = modify_date self.save(internal=True) @staticmethod def change_date_format(s3_modify_date): """ Change date time format for model. Args: s3_modify_date: <str> Returns: Formatted date time in str. <str> """ s3_time = s3_modify_date.split(" ")[1:-1] cut_time = '{} {} {} {}'.format(s3_time[0], s3_time[1], s3_time[2], s3_time[3]) return cut_time class Meta: app = 'Document' verbose_name = "Template" verbose_name_plural = "Templates" list_fields = ['description'] search_fields = ['description'] def __unicode__(self): return '%s' % self.description
class BAPFirma(Model): class Meta: verbose_name = __(u"Firma") verbose_name_plural = __(u"Firmalar") list_fields = ['ad', 'vergi_no'] unique_together = [('vergi_no', 'vergi_dairesi')] ad = field.String(__(u"Firma Adı"), required=True) telefon = field.String(__(u"Telefon"), required=True) adres = field.String(__(u"Adres"), required=True) e_posta = field.String(__(u"E-posta Adresi"), required=True, unique=True) vergi_no = field.String(__(u"Vergi Kimlik Numarası"), required=True) vergi_dairesi = field.Integer(__(u"Vergi Dairesi"), choices='vergi_daireleri', required=True) faaliyet_belgesi = field.File(_(u"Firma Faaliyet Belgesi"), random_name=False, required=True) faaliyet_belgesi_verilis_tarihi = field.Date( __(u"Faaliyet Belgesi Veriliş Tarihi"), required=True) durum = field.Integer(__(u"Durum"), choices='bap_firma_durum') class Yetkililer(ListNode): yetkili = User() def __unicode__(self): return "%s" % self.ad
class ProjeBelgeleri(ListNode): class Meta: verbose_name = __(u"Proje Belgesi") verbose_name_plural = __(u"Proje Belgeleri") belge = field.File(_(u"Belge"), random_name=True) belge_aciklamasi = field.String(_(u"Belge Açıklaması"), required=False)
class EkDosyalar(ListNode): class Meta: verbose_name = __(u"Ek Dosya") verbose_name_plural = __(u"Ek Dosyalar") list_fields = ['dosya_aciklamasi'] ek_dosya = field.File(__(u"Ek Dosya Seç"), random_name=True) dosya_aciklamasi = field.String(__(u"Dosya Açıklaması"))
class BAPTeknikSartname(Model): class Meta: verbose_name = __(u"Teknik Şartname") verbose_name_plural = __(u"Teknik Şartnameler") sartname_dosyasi = field.File(__(u"Şartname Dosyası"), random_name=True) aciklama = field.String(__(u"Açıklama")) ilgili_proje = BAPProje() def __unicode__(self): return "%s" % self.aciklama
class UniversiteDisiDestek(ListNode): class Meta: verbose_name = __(u"Üniversite Dışı Destek") verbose_name_plural = __(u"Üniversite Dışı Destekler") kurulus = field.String(_(u"Destekleyen Kurulus")) tur = field.String(_(u"Destek Türü")) destek_miktari = field.Float(_(u"Destek Miktarı")) verildigi_tarih = field.Date(_(u"Verildiği Tarih")) sure = field.Integer(_(u"Süresi(Ay CinsindenBA)")) destek_belgesi = field.File(_(u"Destek Belgesi"), random_name=True) destek_belgesi_aciklamasi = field.String(_(u"Belge Açıklaması"), required=False)
class User(Model, BaseUser): """ Basic User model """ username = field.String(_(u"Username"), index=True) password = field.String(_(u"Password")) superuser = field.Boolean(_(u"Super user"), default=False) avatar = field.File(_(u"Avatar"), random_name=True, required=False) locale_language = field.String(_(u"Preferred Language"), index=False, default=settings.DEFAULT_LANG) locale_datetime = field.String( _(u"Preferred Date and Time Format"), index=False, default=settings.DEFAULT_LOCALIZATION_FORMAT) locale_number = field.String(_(u"Preferred Number Format"), index=False, default=settings.DEFAULT_LOCALIZATION_FORMAT) last_login_role_key = field.String(_(u"Last Login Role Key")) unit = Unit() class Meta: """ meta class """ verbose_name = _(u"User") verbose_name_plural = _(u"Users") list_fields = ['username', 'superuser'] def pre_save(self): self.encrypt_password() def post_creation(self): self.prepare_channels() def last_login_role(self): last_key = self.last_login_role_key return Role.objects.get( last_key) if last_key else self.role_set[0].role def get_permissions(self): """ Permissions of the user. Returns: List of Permission objects. """ user_role = self.last_login_role( ) if self.last_login_role_key else self.role_set[0].role return user_role.get_permissions()
class BAPRapor(Model): class Meta: verbose_name = __(u"Proje Rapor") verbose_name_plural = __(u"Proje Raporları") proje = BAPProje() tur = field.Integer(__(u"Rapor Türü"), choices='bap_rapor_turu') durum = field.Integer(__(u"Rapor Durumu"), choices='bap_rapor_durum', default=1) belge = field.File(_(u"Proje Rapor Belgesi"), random_name=True) olusturulma_tarihi = field.Date(_(u"Rapor Oluşturulma Tarihi")) def __unicode__(self): return "%s-%s" % (self.proje.ad, self.get_tur_display())
class Attachment(Model): """ A model to store message attachments """ file = field.File("Dosya", random_name=True, required=False) typ = field.Integer("Tip", choices=ATTACHMENT_TYPES) name = field.String("Dosya Adı") description = field.String("Tanım") channel = Channel() message = Message() def serialize(self): return { 'description': self.description, 'file_name': self.name, 'url': "%s%s" % (settings.S3_PUBLIC_URL, self.file) } def __unicode__(self): return self.name
class Form(Model): """Form Model sınıfı. Bu model, genel kullanım amaçlı olarak sisteme yüklenecek olan formların kayıt edileceği data modelidir. """ ad = field.String(_(u"Form Adı"), index=True) file = field.File(_(u"File"), index=True, random_name=True ) # form eger PDF olarak yulendiyse bu alan kullanilir. permissions = Permission() date = field.Date(_(u"Form Tarihi"), index=True, format="%d.%m.%Y") class Meta: app = 'Form' verbose_name = _(u"Form") verbose_name_plural = _(u"Formlar") list_fields = ['ad', 'date'] search_fields = ['ad', 'file'] def __unicode__(self): return '%s %s' % (self.ad, self.date)
class User(Model): """User modeli User modeli Ulakbus temel kullanıcı modelidir. Temel kullanıcı bilgilerini içerir. Ulakbus'de işlem yapan/yapılan her kullanıcıya ait bir ve tek kullanıcı olması zorunludur. """ username = field.String("Username", index=True) password = field.String("Password") avatar = field.File("Profile Photo", random_name=True, required=False) name = field.String("First Name", index=True) surname = field.String("Surname", index=True) superuser = field.Boolean("Super user", default=False) class Meta: app = 'Sistem' verbose_name = "Kullanıcı" verbose_name_plural = "Kullanıcılar" search_fields = ['username', 'name', 'surname'] def get_avatar_url(self): """ Bu metot kullanıcıya ait avatar url'ini üretir. Returns: str: kullanıcı avatar url """ return "%s%s" % (settings.S3_PUBLIC_URL, self.avatar) def __unicode__(self): return "User %s" % self.username def set_password(self, raw_password): """ Kullanıcı şifresini encrypt ederek set eder. Args: raw_password (str) """ self.password = pbkdf2_sha512.encrypt(raw_password, rounds=10000, salt_size=10) def check_password(self, raw_password): """ Verilen encrypt edilmemiş şifreyle kullanıcıya ait encrypt edilmiş şifreyi karşılaştırır. Args: raw_password (str) Returns: bool: Değerler aynı olması halinde True, değilse False döner. """ return pbkdf2_sha512.verify(raw_password, self.password) def get_role(self, role_id): """ Kullanıcıya ait Role nesnesini getirir. Args: role_id (int) Returns: dict: Role nesnesi """ return self.role_set.node_dict[role_id]
class User(Model, BaseUser): """User modeli User modeli Ulakbus temel kullanıcı modelidir. Temel kullanıcı bilgilerini içerir. Ulakbus'de işlem yapan/yapılan her kullanıcıya ait bir ve tek kullanıcı olması zorunludur. """ avatar = field.File(_(u"Profil Fotoğrafı"), random_name=True, required=False) username = field.String(_(u"Kullanıcı Adı"), index=True, unique=True) password = field.String(_(u"Parola")) e_mail = field.String(_(u"E-Posta"), index=True, unique=True) name = field.String(_(u"Ad"), index=True) surname = field.String(_(u"Soyad"), index=True) superuser = field.Boolean(_(u"Super user"), default=False) last_login_role_key = field.String(_(u"Son Giriş Yapılan Rol")) locale_language = field.String( _(u"Tercih Edilen Dil Formatı"), index=False, default=settings.DEFAULT_LANG, choices=translation.available_translations.items() ) locale_datetime = field.String(_(u"Tercih Edilen Gün ve Zaman Formatı"), index=False, default=settings.DEFAULT_LOCALIZATION_FORMAT, choices=translation.available_datetimes.items()) locale_number = field.String(_(u"Tercih Edilen Sayı Formatı"), index=False, default=settings.DEFAULT_LOCALIZATION_FORMAT, choices=translation.available_numbers.items()) class Meta: app = 'Sistem' verbose_name = _(u"Kullanıcı") verbose_name_plural = _(u"Kullanıcılar") search_fields = ['username', 'name', 'surname'] @lazy_property def full_name(self): return "%s %s" % (self.name, self.surname) def last_login_role(self): """ Eğer kullanıcı rol geçişi yaparsa, kullanıcının last_login_role_key field'ına geçiş yaptığı rolün keyi yazılır. Kullanıcı çıkış yaptığında ve tekrardan giriş yaptığında son rolü bu field'dan öğrenilir. Eğer kullanıcının last_login_role_key field'ı dolu ise rol bilgisi oradan alınır. Yoksa kullanıcının role_set'inden default rolü alınır. """ last_key = self.last_login_role_key return Role.objects.get(last_key) if last_key else self.role_set[0].role def pre_save(self): if not self.username or not self.password: raise IntegrityError self.encrypt_password() def post_creation(self): self.prepare_channels() def get_avatar_url(self): if self.avatar: return BaseUser.get_avatar_url(self) else: # FIXME: This is for fun, remove when we resolve static hosting problem return "https://www.gravatar.com/avatar/%s" % hashlib.md5( "*****@*****.**" % self.username).hexdigest() def __unicode__(self): return "%s %s" % (self.name, self.surname)
class Belgeler(ListNode): belge = field.File(_(u"Firma Teklif Belgesi"), random_name=False, required=True) aciklama = field.String(__(u"Belge Açıklaması"), required=True)