class Cuisine(models.Model): """ Django Model to hold Cuisines. Cuisines have a one to Many relation with Recipes. Each Recipe will be assigned a Cuisine. :title: = Title of the Cuisine :author: = Creator of the Cuisine """ title = models.CharField(_('title'), max_length=100, unique=True) slug = AutoSlugField(_('slug'), populate_from='title', unique=True) author = models.ForeignKey(User, on_delete=models.CASCADE) class Meta: ordering = ['title'] def __str__(self): return self.title
class Comment(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=True) post = models.ForeignKey(Post, on_delete=models.CASCADE,) slug = AutoSlugField(populate_from='name') name= models.CharField(max_length=80) email = models.EmailField() body = models.TextField(max_length=50) created_on = models.DateTimeField(auto_now_add=True) active = models.BooleanField(default=True) reply = models.ForeignKey('self',null=True, blank=True, related_name='replies',on_delete=models.CASCADE) content = models.TextField(max_length=100, default=True) class Meta: ordering = ['created_on'] def __str__(self): return 'Comment {} by {}'.format(self.body, self.name)
class Experience(Model): job_title = CharField(max_length=100) location = CharField(max_length=100) company = CharField(max_length=150) slug = AutoSlugField(max_length=50, populate_from=["id", "job_title"]) started_at = DateField() ended_at = DateField(null=True, blank=True) current = BooleanField(default=True) created_at = DateTimeField(auto_now_add=True) tasks = TextField() class Meta: ordering = ("-created_at", ) def __str__(self): return "{} at {} had {}".format(self.job_title, self.company, len(self.tasks.split('\n')))
class ProductVariantBase(models.Model): """ Base model for creating product variants """ product = ParentalKey(Product, related_name='variants') price = models.DecimalField(max_digits=12, decimal_places=2) ref = models.CharField(max_length=32) stock = models.IntegerField(default=0) slug = AutoSlugField( separator='', populate_from=('product', 'ref'), ) class Meta: abstract = True def get_product_title(self): return self.product.title
class Course(models.Model): """ Django Model to hold Courses. Courses have a one to Many relation with Recipes. Each Recipe will be assigned a Course. :title: = Title of the Course :author: = Creator of the Course """ title = models.CharField(_('title'), max_length=100, unique=True) slug = AutoSlugField(_('slug'), populate_from='title', unique=True) author = models.ForeignKey(User, verbose_name=_('author')) class Meta: ordering = ['title'] def __unicode__(self): return '%s' % self.title
class Party(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) title = models.CharField( max_length=100, ) slug = AutoSlugField( populate_from='title', ) description = models.TextField() when = models.DateTimeField( help_text='YYYY-MM-DD HH:MM:SS', ) venue = models.ForeignKey( Venue, related_query_name="parties_here", null=True, ) public = models.BooleanField( default=False, ) organizers = models.ManyToManyField( 'auth.User', blank=True, related_name='organizing_parties', ) objects = PartyQuerySet.as_manager() class Meta: verbose_name = 'party' verbose_name_plural = 'parties' ordering = ['when'] def __str__(self): return '"{}" at {}'.format(self.title, self.venue) def get_absolute_url(self): return reverse('parties:party-detail', kwargs={'slug': self.slug})
class Menu(ClusterableModel): """The main menu clusterable model.""" title = models.CharField(max_length=100) slug = AutoSlugField(populate_from="title", editable=True) panels = [ MultiFieldPanel([ FieldPanel("title"), FieldPanel("slug"), ], heading="Menu"), InlinePanel("menu_items", label="Menu Item") ] def __str__(self): return self.title
class Board(MetaDataModel): class Meta(MetaDataModel.Meta): verbose_name = '게시판' verbose_name_plural = '게시판 목록' unique_together = ( ('ko_name', 'deleted_at'), ('en_name', 'deleted_at'), ) slug = AutoSlugField(populate_from=[ 'en_name', ], ) ko_name = models.CharField( max_length=32, verbose_name='게시판 국문 이름', ) en_name = models.CharField( max_length=32, verbose_name='게시판 영문 이름', ) ko_description = models.TextField(verbose_name='게시판 국문 소개', ) en_description = models.TextField(verbose_name='게시판 영문 소개', ) # 사용자 그룹에 대해 접근 권한을 제어하는 bit mask 입니다. # access_mask & (1<<user.group) > 0 일 때 접근이 가능합니다. # 사용자 그룹의 값들은 `UserGroup`을 참고하세요. access_mask = models.IntegerField( default=2, # 카이스트 구성원만 사용 가능 null=False, verbose_name='접근 권한 값') is_readonly = models.BooleanField( verbose_name='읽기 전용 게시판', help_text='활성화했을 때 관리자만 글을 쓸 수 있습니다. (ex. 포탈공지)', default=False) is_hidden = models.BooleanField( verbose_name='리스트 숨김 게시판', help_text='활성화했을 때 메인페이지 상단바 리스트에 나타나지 않습니다. (ex. 뉴아라공지)', default=False, db_index=True, ) def __str__(self): return self.ko_name def group_has_access(self, group: int) -> bool: return (self.access_mask & (1 << group)) > 0
class Client(models.Model): # Choices Values MARRIED = 'MR' SINGLE = 'SL' LIVINGTOGETHER = 'LT' MARRIED_STATUS_CHOICES = ((MARRIED, 'Married'), (SINGLE, 'Single'), (LIVINGTOGETHER, 'Living together')) # Fields name = CharField(max_length=255) slug = AutoSlugField(populate_from='name', blank=True) created = DateTimeField(auto_now_add=True, editable=False) last_updated = DateTimeField(auto_now=True, editable=False) occupation = CharField(max_length=100, null=True, blank=True) address = CharField(max_length=500) home_telephone = CharField(max_length=30, null=True, blank=True) work_telephone = CharField(max_length=100, null=True, blank=True) domicile = CharField(max_length=100, null=True, blank=True) dob = DateField(null=True, blank=True) place_of_birth = CharField(max_length=100, null=True, blank=True) name_at_birth = CharField(max_length=255, null=True, blank=True) marital_status = CharField(max_length=2, choices=MARRIED_STATUS_CHOICES, default=SINGLE) # Relationship Fields user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="ClientLoginProfile", null=True) class Meta: ordering = ('-created', ) def __unicode__(self): return u'%s' % self.slug def __str__(self): return u'%s' % self.name def get_absolute_url(self): return reverse('client_client_detail', args=(self.slug, )) def get_update_url(self): return reverse('client_client_update', args=(self.slug, ))
class Palestra(models.Model): MEETUP = 1 COURSE = 2 SHOWCASE = 3 PRESENTATION = 4 TYPE = ((MEETUP, _('Meetup')), (COURSE, _('Curso')), (SHOWCASE, _('Demonstração')), (PRESENTATION, _('Apresentação'))) talk_name = models.CharField(_('Nome da palestra'), max_length=45, unique=True) talk_description = models.TextField(_('Descrição da palestra'), max_length=90) local = models.CharField(_('Prédio/Bloco da palestra'), help_text=_('Exemplo: Bloco X'), max_length=30) room = models.CharField(_('Sala da palestra'), max_length=30) date = models.DateField(_('Data')) hour_init = models.TimeField(_('Início'), help_text='HH/MM') hour_end = models.TimeField(_('Término'), help_text='HH/MM') number_vacancies = models.SmallIntegerField(_('Vagas'), default=100) created = CreationDateTimeField() modification = ModificationDateTimeField() slug = AutoSlugField(populate_from=['talk_name', 'room']) palestrante = models.ManyToManyField(Palestrante) type = models.SmallIntegerField(_('Formato'), choices=TYPE, default=PRESENTATION) @property def str_all_palestrante(self): return ', '.join([str(p) for p in self.palestrante.all()]) @property def len_palestrantes(self): return len(self.palestrante.all()) def __str__(self): return self.talk_name class Meta: verbose_name = _('Palestra cadastrada') verbose_name_plural = _('Palestras cadastrados')
class Blog(models.Model): title = models.CharField(max_length=255) slug = AutoSlugField(populate_from='title', max_length=255, editable=True, unique=True) image = models.ImageField(null=True, blank=True) small_description = models.TextField(null=True, blank=True) description = RichTextField() tags = models.ManyToManyField(Tag) created = models.DateTimeField(auto_now=True) modified = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.title def get_absolute_url(self): return reverse('blog_detail', kwargs={'slug': self.slug})