# -*- coding: utf-8 -*- # Standard library imports # Third party imports # Local application / specific library imports from machina.apps.forum_tracking.abstract_models import AbstractForumReadTrack from machina.apps.forum_tracking.abstract_models import AbstractTopicReadTrack from machina.core.db.models import model_factory ForumReadTrack = model_factory(AbstractForumReadTrack) TopicReadTrack = model_factory(AbstractTopicReadTrack)
# -*- coding: utf-8 -*- # Standard library imports # Third party imports # Local application / specific library imports from machina.apps.forum_conversation.abstract_models import AbstractPost from machina.apps.forum_conversation.abstract_models import AbstractTopic from machina.core.db.models import model_factory Topic = model_factory(AbstractTopic) Post = model_factory(AbstractPost)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from machina.apps.forum_member.abstract_models import AbstractForumProfile from machina.core.db.models import model_factory ForumProfile = model_factory(AbstractForumProfile)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from machina.apps.forum.abstract_models import AbstractForum from machina.core.db.models import model_factory Forum = model_factory(AbstractForum)
# -*- coding: utf-8 -*- # Standard library imports # Third party imports import django # Local application / specific library imports from machina.apps.forum_tracking.abstract_models import AbstractForumReadTrack from machina.apps.forum_tracking.abstract_models import AbstractTopicReadTrack from machina.core.db.models import model_factory ForumReadTrack = model_factory(AbstractForumReadTrack) TopicReadTrack = model_factory(AbstractTopicReadTrack) if django.VERSION < (1, 7): # pragma: no cover from . import receivers # noqa
""" Forum conversation models ========================= This module defines models provided by the ``forum_conversation`` application. """ from machina.apps.forum_conversation.abstract_models import AbstractPost, AbstractTopic from machina.core.db.models import model_factory Topic = model_factory(AbstractTopic) Post = model_factory(AbstractPost)
# -*- coding: utf-8 -*- # Standard library imports # Third party imports import django # Local application / specific library imports from machina.apps.forum_permission.abstract_models import AbstractForumPermission from machina.apps.forum_permission.abstract_models import AbstractGroupForumPermission from machina.apps.forum_permission.abstract_models import AbstractUserForumPermission from machina.core.db.models import model_factory ForumPermission = model_factory(AbstractForumPermission) GroupForumPermission = model_factory(AbstractGroupForumPermission) UserForumPermission = model_factory(AbstractUserForumPermission) if django.VERSION < (1, 7): # pragma: no cover from . import receivers # noqa
# -*- coding: utf-8 -*- from __future__ import unicode_literals from machina.apps.forum_conversation.forum_attachments.abstract_models import AbstractAttachment from machina.core.db.models import model_factory Attachment = model_factory(AbstractAttachment)
""" Forum polls models ================== This module defines models provided by the ``forum_polls`` application. """ from machina.apps.forum_conversation.forum_polls.abstract_models import ( AbstractTopicPoll, AbstractTopicPollOption, AbstractTopicPollVote ) from machina.core.db.models import model_factory TopicPoll = model_factory(AbstractTopicPoll) TopicPollOption = model_factory(AbstractTopicPollOption) TopicPollVote = model_factory(AbstractTopicPollVote)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from machina.apps.forum_conversation.forum_polls.abstract_models import AbstractTopicPoll from machina.apps.forum_conversation.forum_polls.abstract_models import AbstractTopicPollOption from machina.apps.forum_conversation.forum_polls.abstract_models import AbstractTopicPollVote from machina.core.db.models import model_factory TopicPoll = model_factory(AbstractTopicPoll) TopicPollOption = model_factory(AbstractTopicPollOption) TopicPollVote = model_factory(AbstractTopicPollVote)
""" Forum permission models ======================= This module defines models provided by the ``forum_permission`` application. """ from machina.apps.forum_permission.abstract_models import ( AbstractForumPermission, AbstractGroupForumPermission, AbstractUserForumPermission ) from machina.core.db.models import model_factory ForumPermission = model_factory(AbstractForumPermission) GroupForumPermission = model_factory(AbstractGroupForumPermission) UserForumPermission = model_factory(AbstractUserForumPermission)
# The number of time the topic has been viewed. # Add Index for sorting views_count = models.PositiveIntegerField( editable=False, blank=True, default=0, verbose_name=_("Views count"), db_index=True, ) class Meta(MachinaAbstractTopic.Meta): abstract = True def get_active_users(self, user): # collect active users for this topic and exclude current user active_post_users = (User.objects.filter( is_active=True, posts__topic=self, posts__approved=True).exclude(pk=user.pk).distinct()) list_active_users = [{ "name": get_forum_member_display_name(user), "user": user.pk, } for user in active_post_users] return sorted(list_active_users, key=lambda i: i["name"]) Topic = model_factory(AbstractTopic) from machina.apps.forum_conversation.models import * # noqa
# -*- coding: utf-8 -*- # Standard library imports # Third party imports import django # Local application / specific library imports from machina.apps.forum.abstract_models import AbstractForum from machina.core.db.models import model_factory Forum = model_factory(AbstractForum) if django.VERSION < (1, 7): # pragma: no cover from .receivers import * # noqa
""" Forum attachments models ======================== This module defines models provided by the ``forum_attachments`` application. """ from machina.apps.forum_conversation.forum_attachments.abstract_models import AbstractAttachment from machina.core.db.models import model_factory Attachment = model_factory(AbstractAttachment)
class Meta: """Options for the ``AbstractUser`` model.""" abstract = True app_label = "ashley" constraints = [ models.UniqueConstraint( fields=["lti_consumer", "lti_remote_user_id"], name="ashleyuser_unique_consumer_remote_user_id", ), ] # Default implementation of the AbstractUser, using django-machina's model factory User = model_factory(AbstractUser) class AbstractLTIContext(Model): """Abstract LTI Context model for Ashley.""" GROUP_PREFIX = "cg" GROUP_DELIMITER = ":" lti_id = models.CharField(max_length=150, null=False, blank=False, db_index=True) lti_consumer = models.ForeignKey( LTIConsumer, on_delete=models.PROTECT, null=False, db_index=True ) # Indicates if forums of this class have been locked, this field is used