コード例 #1
0
ファイル: models.py プロジェクト: rekognize/jinac
class Person(PolymorphicModel):
    name = models.CharField(_('name'), max_length=100)
    gender = models.CharField(_('gender'),
                              max_length=2,
                              blank=True,
                              null=True,
                              choices=(
                                  ('m', _('male')),
                                  ('f', _('female')),
                              ))
    short_bio = models.TextField(_('short bio'), blank=True, null=True)
    short_bio_en = models.TextField(_('short bio (EN)'), blank=True, null=True)
    bio = MartorField(_('biography'), blank=True, null=True)
    bio_en = MartorField(_('biography (EN)'), blank=True, null=True)

    reporter = models.ForeignKey(User,
                                 verbose_name=_('reporter'),
                                 blank=True,
                                 null=True,
                                 on_delete=models.SET_NULL)
    added = models.DateTimeField(_('added time'), auto_now_add=True)
    modified = models.DateTimeField(_('modified time'), auto_now=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = _('person')
        verbose_name_plural = _('people')
        ordering = ('name', )
コード例 #2
0
class Resume(Model):
    title = CharField(max_length=50, default='resume')
    whoami = MartorField()
    services = MartorField()
    experiences = models.ManyToManyField(Experience, blank=True)

    def __str__(self):
        return 'Resume'
コード例 #3
0
class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE,
                               blank=True, null=True)
    title = models.CharField(max_length=200)
    description = MartorField()
    wiki = MartorField(blank=True)

    def __str__(self):
        return self.title
コード例 #4
0
class Article(models.Model):
    tips = models.CharField(verbose_name=u"声明",
                            max_length=10,
                            editable=True,
                            blank=True,
                            null=True,
                            default=u"Develop")
    # author = models.TextField(verbose_name=u"作者", blank=True, null=True, editable=True, default=u"佚名")
    author = models.ForeignKey(
        User,
        verbose_name=u"作者",
        on_delete=models.DO_NOTHING,
    )
    title = models.CharField(
        verbose_name=u"标题",
        max_length=25,
        blank=False,
        null=False,
    )

    calendar = models.DateField(verbose_name=u"发布时间", auto_now_add=True)
    update = models.DateTimeField(verbose_name=u"最后更新", auto_now=True)
    numerous = models.IntegerField(verbose_name=u"点击数量",
                                   editable=True,
                                   blank=True,
                                   default=100)
    display = models.BooleanField(
        verbose_name=u"展示",
        default=True,
    )
    group = models.ForeignKey(ArticleGroup,
                              on_delete=models.CASCADE,
                              verbose_name=u"文章类型")
    # 采用markdown存储
    # thumbnail = models.URLField(verbose_name=u"缩略图")
    thumbnail_content = MartorField(verbose_name=u"缩略文字",
                                    blank=True,
                                    max_length=300)
    content = MartorField(verbose_name=u"内容详情",
                          blank=True,
                          max_length=sys.maxsize)

    def __str__(self):
        return self.title

    # def get_absolute_url(self):
    # return const.get_absolute_url('api:details', args=[self.id])

    def group_name(self):
        return self.group.__str__()

    def increase_views(self):
        self.numerous += 1
        self.save(update_fields=['numerous'])
コード例 #5
0
ファイル: models.py プロジェクト: metucclub/cclub-website
class Event(MultilingualModel):
    site = models.ForeignKey(Site, on_delete=models.CASCADE)

    title_tr = models.CharField(max_length=40)
    title_en = models.CharField(max_length=40)

    content_tr = MartorField()
    content_en = MartorField()

    class Meta:
        ordering = ['site', '-pk']

    def __str__(self):
        return '{} - {}'.format(self.site.name, self.title)
コード例 #6
0
ファイル: models.py プロジェクト: rekognize/jinac
class Case(models.Model):
    name = models.CharField(_('case name'), max_length=250)
    name_en = models.CharField(_('case name (EN)'), max_length=250, blank=True, null=True)
    slug = models.SlugField(blank=True, null=True)
    no = models.CharField(_('file number'), max_length=20)
    court = models.ForeignKey(Court, verbose_name=_('court'), on_delete=models.CASCADE)
    filing_date = models.DateField(_('case filing date'), blank=True, null=True)  # iddianame tarihi
    opening_date = models.DateField(_('case opening date'), blank=True, null=True)  # dava acilis tarihi
    defendant_count = models.PositiveIntegerField(_('defendant count'), blank=True, null=True)
    journalist_defendant_count = models.PositiveIntegerField(_('journalist defendant count'), blank=True, null=True)
    coup_related = models.BooleanField(_('coup attempt related'), default=False)
    journalists = models.ManyToManyField(Journalist, through='CaseJournalist')
    plaintiff = models.ManyToManyField(Plaintiff, verbose_name=_('plaintiff'), blank=True)
    prosecutor = models.ForeignKey(Prosecutor, verbose_name=_('indictment prosecutor'),
                                   blank=True, null=True, on_delete=models.SET_NULL)
    summary = MartorField(_('case summary'), blank=True, null=True)
    summary_en = MartorField(_('case summary (EN)'), blank=True, null=True)
    order = models.PositiveSmallIntegerField(_('order'), default=0)

    related_cases = models.ManyToManyField('self', verbose_name=_('related cases'), blank=True)

    reporter = models.ForeignKey(User, verbose_name=_('reporter'), blank=True, null=True, on_delete=models.SET_NULL)
    publish = models.BooleanField(_('publish'), default=False)
    added = models.DateTimeField(_('added time'), auto_now_add=True)
    modified = models.DateTimeField(_('modified time'), auto_now=True)

    def __str__(self):
        return self.name

    def save(self, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        return super().save(**kwargs)

    def get_absolute_url(self):
        return reverse('case_detail', args=[self.id])

    def status(self):
        return self.casestatus_set.last()

    def notes(self):
        return self.casenote_set.filter(type__publish=True).filter(journalist__isnull=True)

    def get_journalists(self):
        return self.journalists.filter(publish=True)

    class Meta:
        verbose_name = _('case')
        verbose_name_plural = _('cases')
        ordering = ('slug', 'order', '-modified',)
コード例 #7
0
ファイル: models.py プロジェクト: castin1010/dolife
class Author(models.Model):

    # A User can have multiple author roles (or pseudonyms)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
                             blank=False, null=False)

    name = models.CharField(max_length=64, blank=False, null=False, unique=True)

    # Each user profile will have a field where they can tell other users
    #   something about themselves. This field will be empty when the user
    #   creates their account, so we specify `blank=True`.
    bio_text = MartorField(blank=True)

    # In addition to the `bio` field, each user may have a profile image or
    #   avatar. Similar to `bio`, this field is not required. It may be blank.
    avatar = models.URLField(blank=True)

    objects = AuthorManager()

    def __str__(self):
        return self.name

    def bio_html(self):
        """ Return the markdownified biography of this author """
        return SafeString(markdownify(self.bio_text))
コード例 #8
0
class UserRequest(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             related_name="+",
                             on_delete=models.CASCADE)
    title = models.CharField(max_length=255,
                             help_text="What is being requested?")
    request_type = models.IntegerField(choices=REQUEST_TYPES, null=False)
    acquired = models.BooleanField(default=False)
    cost = models.DecimalField(
        max_digits=6,
        decimal_places=2,
        help_text=
        "Leave blank, if no associated cost, or add estimated cost if not sure.",
    )
    description = MartorField(
        help_text=
        "detail of what is being requested, and where it can be purchased.")
    created_date = models.DateTimeField(default=timezone.now)

    def request_type_string(self):
        return REQUEST_TYPES[self.request_type][1]

    def get_absolute_url(self):
        return reverse("requests_detail", kwargs={"pk": self.pk})

    class Meta:
        ordering = ("acquired", "created_date")
コード例 #9
0
class Question(models.Model):
    author = models.ForeignKey(User, related_name='questions')
    title = models.CharField(max_length=255, null=False)
    text = MartorField()
    category = models.ForeignKey(QuestionCategory, related_name='questions', null=True)

    created = models.DateTimeField(editable=False)
    modified = models.DateTimeField()

    def get_absolute_url(self):
        return reverse_lazy('question:question', kwargs={'pk': self.id})

    def save(self, *args, **kwargs):
        """ On save, update timestamps """
        if not self.id:
            self.created = timezone.now()
        self.modified = timezone.now()
        return super(type(self), self).save(*args, **kwargs)

    def __str__(self):
        return 'Question #{} by @{}: "{}"'.format(self.pk, self.author.username, self.title[:20])

    def count_likes(self):
        return Like.objects\
            .filter(content_type=ContentType.objects.get(model='question'), object_id=self.id)\
            .count()

    class Meta:
        verbose_name = "question"
        verbose_name_plural = "questions"
コード例 #10
0
ファイル: models.py プロジェクト: marcogomex/Django
class Post(models.Model):
    post_subject = models.CharField(max_length=POST_SUBJECT_SIZE, null=True)
    message = MartorField(
        max_length=MESSAGE_FIELD_SIZE,
        help_text=f'Maximum length is {MESSAGE_FIELD_SIZE} characters',
    )
    topic = models.ForeignKey(Topic,
                              on_delete=models.CASCADE,
                              related_name='posts')
    created_by = models.ForeignKey(User,
                                   on_delete=models.CASCADE,
                                   related_name='posts')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(User,
                                   on_delete=models.CASCADE,
                                   related_name='+',
                                   null=True)
    updated_at = models.DateTimeField(null=True)
    allowed_editor = models.ManyToManyField(User, blank=True)

    def get_message_as_markdown(self):
        return self.message

    def __str__(self):
        return Truncator(self.post_subject).chars(30)
コード例 #11
0
class BlogPost(models.Model):
    objects = models.Manager() # The default manager.
    published = PublishedManager() # Our custom manager.
    title = models.CharField(max_length=250, help_text="Give a clear title for the post")
    slug = models.SlugField(max_length=100, unique=True)
    show = models.BooleanField('BlogPost Enabled/Disabed', default=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, related_name='blogauthor', default = User)
    body = MartorField('Body of the blog post')
    allow_comments = models.BooleanField('allow comments', default=True)
    tags = TaggableManager(blank = True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def save(self):
          if not self.id:
              # Newly created object, so set slug
              self.slug = slugify(self.title)
          super(BlogPost, self).save()

    def get_absolute_url(self):
        return reverse('blog:blog_detail', args=[self.pk, self.slug])

    class Meta:
        ordering = ('-created',)

    def __str__(self):
        return self.title
コード例 #12
0
ファイル: models.py プロジェクト: castin1010/dolife
class Story(models.Model):
    """ Holds a single story content """
    author = models.ForeignKey('authors.Author', verbose_name=_("Pseudonym"),
                               on_delete=models.PROTECT)
    title = models.CharField(max_length=64, null=False, blank=False)
    tagline = models.CharField(max_length=64, blank=True)
    text = MartorField(null=False, blank=False)
    published_at = models.DateTimeField(default=None, null=True, blank=True, db_index=True)
    hidden_at = models.DateTimeField(default=None, null=True, blank=True)
    inspired_by = models.ForeignKey('self', default=None, null=True, blank=True,
                                    on_delete=models.PROTECT)
    language = models.CharField(_('language'),
                                max_length=5,
                                choices=settings.LANGUAGES,
                                default=settings.LANGUAGE_CODE[:2],
                                help_text=_('Story language.'))

    objects = StoryManager()

    def __str__(self):
        return self.title

    def read_time(self):
        return _("Short read")

    def html(self):
        """ Return the html version of the markdown.  Wraps it as a SafeString so it will
              display without being escaped.  This should probably be done and cached somewhere
              and let this method do a lookup for the cached version.  An alternative would be to
              double the storage in the DB but that could mean having to update the whole  DB if we
              fix something about martor.  Storing this in a memcached instance would probably
              be better """
        # TODO: Store the results in memcached for speed
        return SafeString(markdownify(self.text))
コード例 #13
0
class ArticleTranslation(models.Model):
    article = models.ForeignKey(Article,
                                on_delete=models.CASCADE,
                                related_name='translations')
    language = models.CharField(max_length=2, choices=settings.LANGUAGES)
    title = models.CharField(max_length=255)
    content = MartorField()
    formatted_content = models.TextField(editable=False)
    # Store the formatted_content field with all tags removed (for description)
    unformatted_content = models.TextField(editable=False)
    last_modified = models.DateField(auto_now=True)

    class Meta:
        unique_together = ('article', 'language')

    def __str__(self):
        return "{}—{}".format(self.article.title, self.get_language_display())

    def save(self, *args, **kwargs):
        # Parse markdown and cache it.
        self.formatted_content = markdownify(self.content)
        self.unformatted_content = strip_tags(self.formatted_content)
        super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('article', args=[self.article.slug
                                        ]) + '?language=' + self.language
コード例 #14
0
class Post(models.Model):
    title = models.CharField(max_length=240)
    subtitle = models.CharField(max_length=39, null=True, blank=True)
    body = MartorField()
    slug = models.SlugField(default="", editable=False, max_length=70)
    published = models.BooleanField(default=False)
    enable_preview = models.BooleanField(default=False)
    date_added = models.DateTimeField(default=timezone.now)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title, allow_unicode=True)
        if self.published:
            self.enable_preview = False
        super().save(*args, **kwargs)
        update_google()

    def get_absolute_url(self):
        kwargs = {"slug": self.slug}
        return reverse("postdetail", kwargs=kwargs)

    def __str__(self):
        if self.enable_preview:
            pub = "preview"
        else:
            pub = "published" if self.published else "unpublished"
        return f"{self.id} | {self.title} | {pub} | {self.get_absolute_url()}"
コード例 #15
0
class Page(models.Model):
    PAGE_STATUS_CHOICE = (
        ('1', 'Published'),
        ('0', 'UnPublished'),
    )
    page_name = models.CharField(max_length=255)
    page_body = MartorField(default='')
    page_author = models.ForeignKey(User, on_delete=models.CASCADE)
    page_date = models.DateTimeField('page date')
    page_status = models.CharField(max_length=1, choices=PAGE_STATUS_CHOICE, default='1')
    page_header = VersatileImageField(
        'Header',
        upload_to='page',
        default='',
        blank=True,
        width_field='page_header_image_width',
        height_field='page_header_image_height',
        ppoi_field='page_header_ppoi'
    )
    page_header_image_height = models.PositiveIntegerField(
        'Image Height',
        blank=True,
        null=True
    )
    page_header_image_width = models.PositiveIntegerField(
        'Image Width',
        blank=True,
        null=True
    )
    page_header_ppoi = PPOIField(
        'Image PPOI'
    )

    def __str__(self):
        return self.page_name
コード例 #16
0
ファイル: models.py プロジェクト: zhas/myblog
class Post(models.Model):
    title = models.CharField(_('Title'), max_length=255)
    slug = models.SlugField(max_length=127)
    description = models.TextField(_('Short description'), blank=True)
    markdown = MartorField(_('Text'))
    lang = models.CharField(_('Language'),
                            max_length=2,
                            choices=settings.LANGUAGES)
    category = models.ForeignKey('Category',
                                 null=True,
                                 on_delete=models.SET_NULL)

    page_views = models.PositiveIntegerField(_('Page views'), default=0)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    is_published = models.BooleanField(_('Is published'), default=False)

    class Meta:
        verbose_name = _('Post')
        verbose_name_plural = _('Posts')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        if self.lang == 'ru':
            return '/{}/'.format(self.slug)
        else:
            return '/{}/{}/'.format(self.lang, self.slug)
コード例 #17
0
ファイル: models.py プロジェクト: Jokotoye18/Forum
class Post(models.Model):
    topic = models.ForeignKey(Topic,
                              related_name='posts',
                              on_delete=models.CASCADE)
    post = MartorField()
    slug = models.SlugField(blank=True, max_length=200)
    created_by = models.ForeignKey(get_user_model(),
                                   related_name='posts',
                                   on_delete=models.CASCADE)
    updated_by = models.ForeignKey(get_user_model(),
                                   related_name="+",
                                   on_delete=models.CASCADE,
                                   blank=True,
                                   null=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now_add=True)

    objects = models.Manager()

    def __str__(self):
        return self.post

    def save(self, *args, **kwargs):
        self.slug = slugify(self.topic)
        return super().save(*args, **kwargs)

    def get_post_as_markdown(self):
        return mark_safe(markdown(self.post, safe_mode='escape'))
コード例 #18
0
class Recipe(models.Model):
    title = models.CharField(max_length=254,
                             unique=True,
                             verbose_name=_('title'))
    tags = models.ManyToManyField('Tag', blank=True, verbose_name=_('tags'))
    ingredient_units = models.ManyToManyField('IngredientUnit',
                                              through='IngredientInRecipe',
                                              blank=True,
                                              verbose_name=_('ingredients'))
    recipe = MartorField(blank=True, verbose_name=_('recipe'))
    popularity = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ['-popularity', 'title']
        verbose_name = _('recipe')
        verbose_name_plural = _('recipes')

    def __str__(self):
        return self.title

    def tag_list(self):
        return ', '.join(self.tags.all().values_list('name', flat=True))

    def get_absolute_url(self):
        return reverse('recipe', args=[str(self.id)])

    def get_add_to_cart_url(self):
        return reverse('add_to_cart', args=[str(self.id), 0])[:-1]

    tag_list.short_description = _('tags')
コード例 #19
0
ファイル: models.py プロジェクト: hds2g/RememberME
class Remember(core_models.TimeStampedModel):
    """Remember Model"""

    user = models.ForeignKey(
        "users.User", related_name="remembers", on_delete=models.CASCADE
    )

    STAGE_1WEEK = "7"
    STAGE_2WEEK = "14"
    STAGE_1MONTH = "30"
    STAGE_2MONTH = "60"
    STAGE_3MONTH = "90"
    STAGE_6MONTH = "180"
    STAGE_1YEAR = "360"

    REMEMBER_STAGE = (
        (STAGE_1WEEK, "1 Week"),
        (STAGE_2WEEK, "2 Week"),
        (STAGE_1MONTH, "1 Month"),
        (STAGE_2MONTH, "2 Month"),
        (STAGE_3MONTH, "3 Month"),
        (STAGE_6MONTH, "6 Month"),
        (STAGE_1YEAR, "1 Year"),
    )

    stage = models.CharField(max_length=7, choices=REMEMBER_STAGE, default=STAGE_1WEEK)

    showing_date = models.DateField(
        "Showing Date", default=datetime.today() + timedelta(days=7)
    )
    remember = MartorField()

    # slug = models.SlugField(unique=True, max_length=100)
    tags = TaggableManager(blank=True)
コード例 #20
0
ファイル: models.py プロジェクト: duskan/toylab
class Post(Signable):
    title = models.CharField(
        '제목',
        max_length=100,
        help_text='제목',
        null=False,
        blank=False,
    )
    subtitle = models.CharField(
        '부제목',
        max_length=100,
        help_text='부제목',
        null=True,
        blank=True,
    )
    contents = MartorField(
        '컨텐츠',
        help_text='html contents',
        null=False,
        blank=True,
    )
    # contents = models.TextField(
    #     '컨텐츠',
    #     help_text='html contents',
    #     null=False,
    #     blank=True,
    # )
    secret = models.BooleanField(default=False, )
コード例 #21
0
ファイル: models.py プロジェクト: ghalaax/Off
class Element(models.Model):
    __element_related_name__ = None
    uid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
    title = models.CharField(blank=True,
                             null=True,
                             max_length=255,
                             unique=True)
    description = MartorField(blank=True, null=True)
    tags = models.CharField(blank=True, null=True, max_length=255)
    renderer = models.CharField(blank=True, null=True, max_length=512)
    links = models.ManyToManyField('self',
                                   symmetrical=False,
                                   through='ElementLink',
                                   through_fields=('node', 'sibbling'))

    @classmethod
    def cast(cls, element, raise_exception=False):
        child_field_name = cls.__element_related_name__ or cls.__name__.lower()
        if raise_exception:
            return getattr(element, child_field_name)
        return getattr(element, child_field_name, None)

    @classmethod
    def defines(cls, element):
        child_field_name = cls.__element_related_name__ or cls.__name__.lower()
        return hasattr(element, child_field_name)

    def __str__(self):
        return str(self.uid)
コード例 #22
0
class Author(models.Model):
    name = models.CharField(max_length=100)
    bio = MartorField(blank=True)
    formatted_bio = models.TextField(editable=False)
    twitter = models.CharField(max_length=15,
                               blank=True,
                               null=True,
                               help_text='Username (without the @)')
    slug = models.SlugField(
        unique=True,
        help_text="Please do not change this after the author is live.")
    is_male = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    def get_articles(self):
        return self.articles.filter(published=True)

    def get_absolute_url(self):
        return reverse('author', args=[self.slug])

    def save(self, *args, **kwargs):
        # Parse markdown and cache it.
        self.formatted_bio = markdownify(self.bio)
        super().save(*args, **kwargs)
コード例 #23
0
class Post(AbstractCreateUpdateModel):
    """
    blog post information
    """
    category = models.ForeignKey(PostCategory,
                                 on_delete=models.CASCADE,
                                 related_name='post_category')
    author = models.ForeignKey(settings.AUTH_USER_MODEL,
                               on_delete=models.SET_NULL,
                               null=True)
    title = models.CharField(max_length=120)
    content = MartorField()
    draft = models.BooleanField(default=False)
    read_count = models.IntegerField(default=0)

    # read_time = models.TimeField(null=True, blank=True)

    class Meta:
        db_table = 'post'

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("posts:detail", kwargs={"id": self.id})

    def get_markdown(self):
        content = self.content
        markdown_text = markdown(content)
        return mark_safe(markdown_text)
コード例 #24
0
class MarkdownPage(models.Model):
    title_fr = models.CharField(max_length=255)
    title_vo = models.CharField(max_length=255)
    description_fr = models.TextField()
    description_vo = models.TextField()
    tags = models.ManyToManyField(Tag)
    body_fr = MartorField()
    body_vo = MartorField()
    created_at = models.DateTimeField(auto_now_add=True, editable=False)
    updated_at = models.DateTimeField()

    def __str__(self):
        return f'"{self.title_fr} | {self.title_vo}" (page {self.pk})'

    class Meta:
        abstract = True
コード例 #25
0
class LogEntry(models.Model):
    user = models.ForeignKey(User,
                             on_delete=models.CASCADE,
                             related_name="logentry_user")
    creation_dt = models.DateTimeField(auto_now_add=True)
    project = models.ForeignKey(Project,
                                null=True,
                                blank=True,
                                on_delete=models.CASCADE)
    content = MartorField(null=False, blank=False)

    def __str__(self):
        return self.content

    class Meta:
        db_table = 'pl_logentry'
        ordering = [
            '-creation_dt',
        ]

    def edit_url(self):
        return reverse('edit-entry', args=[self.pk])

    def delete_url(self):
        return reverse(
            'delete-entry',
            args=[self.pk],
        )
コード例 #26
0
class Page(models.Model):
    title = models.CharField(max_length=255)
    slug = AutoSlugField(populate_from='title', max_length=255)
    published = models.BooleanField()
    order = models.PositiveIntegerField(
        help_text="Set the order this page will appear in the nav.", default=0)
    meta_description = models.TextField(
        help_text="Text for meta tag description and social cards (SEO)",
        blank=True,
        null=True)
    content = MartorField(blank=True, null=True)
    internal_notes = models.TextField(
        help_text="A place to leave notes – this won't show up on page.",
        blank=True,
        null=True)

    objects = PageManager()

    class Meta:
        ordering = ('order', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('page', args=[self.slug])
コード例 #27
0
ファイル: models.py プロジェクト: haoleism/smartlicense
class Template(models.Model):

    code = models.CharField(
        max_length=16,
        verbose_name='Code',
        help_text='A short code (16 chars) as identifier for the template.',
        unique=True
    )

    name = models.CharField(
        max_length=64,
        verbose_name='Name',
        help_text="A human readable title for the Smart License template."
    )

    description = models.CharField(
        max_length=255,
        verbose_name='Description',
        help_text="A short description of Smart License template."
    )

    template = MartorField(
        verbose_name='Template',
        help_text="The tamplate data itself (Markdown/Jinja).",
    )

    class Meta:
        verbose_name = "Smart License Template"
        verbose_name_plural = "Smart License Templates"

    def __str__(self):
        return self.name
コード例 #28
0
class Article(models.Model):
	authors = models.ManyToManyField(Author, related_name="articles")
	cats = models.ManyToManyField(Cat, related_name="articles")

	slug = models.SlugField(max_length=63, unique=True)
	title = models.CharField(max_length=255)
	content = MartorField()
	img = models.ImageField()

	date = models.DateField()
	featured = models.BooleanField(default=False)
	draft = models.BooleanField(default=True)
	pop = models.IntegerField(default=0)

	objects = models.Manager()
	nondraft = NondraftManager()

	def __str__(self):
		return self.title

	def to_search(self):
		return ArticleIndex(
			meta={"id": self.pk},
			authors=" ".join([a.name for a in self.authors.all()]),
			cats=" ".join([c.name for c in self.cats.all()]),
			title=self.title,
			content=self.content,
			date=self.date)

	class Meta:
		ordering = ["-featured", "-date", "-pk"]
コード例 #29
0
class Question(models.Model):
    title = models.CharField(max_length=100)
    writer = models.ForeignKey(
        User,
        null=True, 
        on_delete=models.SET_NULL
    )
    content = MartorField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    sub_category = models.ForeignKey(
        SubCategory,
        null=True,
        on_delete=models.SET_NULL
    )
    published = models.DateTimeField(auto_now_add=True)
    recommend = models.IntegerField(default=0)
    recommended_person = models.ManyToManyField(User, blank=True, related_name='question_recommanded_person')
    tags = models.ManyToManyField(Tag, blank=True)
    comments = models.ManyToManyField(Comment, blank=True)
    answers = models.ManyToManyField(Answer, blank=True)

    def get_comment_count(self):
        return self.comments.all().count()

    def __str__(self):
        return '[' + str(self.category) + '] ' + self.title
コード例 #30
0
class Element(PolymorphicModel):
    design = models.ForeignKey(Design, on_delete=models.CASCADE)
    element_type = models.ForeignKey(ElementType, on_delete=models.PROTECT)
    name = models.CharField(max_length=50, unique=True)
    description = MartorField(default="", blank=True)
    observation_date = models.DateField(
        null=True,
        blank=True,
        help_text="If empty, an unexisting element (to be added).",
    )
    permanence = models.PositiveSmallIntegerField(
        null=True, blank=True, choices=settings.PERMANENCE_CHOICES)
    is_risky = models.BooleanField(default=False)

    objects = ElementManager()

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.name

    @property
    def all_tags(self):
        return self.element_type.tags.all() | self.tags.all()