Example #1
0
                'day': published_at.day,
                'pk': self.pk
            })
        return ('blogs_entry_update', (), {
            'author': self.author.username,
            'pk': self.pk
        })


from permission import add_permission_logic
from kawaz.core.publishments.perms import PublishmentPermissionLogic
from kawaz.core.personas.perms import ChildrenPermissionLogic
from kawaz.core.personas.perms import KawazAuthorPermissionLogic

add_permission_logic(Category, KawazAuthorPermissionLogic(
    field_name='author',
    any_permission=True
))
add_permission_logic(Category, ChildrenPermissionLogic(
    add_permission=True
))

add_permission_logic(Entry, KawazAuthorPermissionLogic(
    field_name='author',
    any_permission=True,
))
add_permission_logic(Entry, PublishmentPermissionLogic())

from .activity import EntryActivityMediator
registry.register(Entry, EntryActivityMediator())
Example #2
0
        return self.user.nickname

    def get_absolute_url(self):
        # TODO: このメソッドは使用しないため削除
        # テンプレートなどで間違えて使用されていた場合を考えメソッド自体は
        # 一定期間残し、代わりに例外を投げる
        raise Exception(
            'Profile.get_absolute_url is obsolete. '
            'Use Persona.get_absolute_url instead. '
            'e.g. user.profile.get_absolute_url => '
            'user.get_absolute_url'
        )

from ..activities.profile import ProfileActivityMediator
from activities.registry import registry
registry.register(Profile, ProfileActivityMediator())

class Skill(models.Model):
    """It is the model which indicates what users can"""
    label = models.CharField(_('Label'), unique=True, max_length=32)
    description = models.CharField(_('Description'), max_length=128)
    order = models.IntegerField(_("Order"), default=0)

    def __str__(self):
        return self.label

    class Meta:
        ordering = ('order', 'pk',)
        verbose_name = _("Skill")
        verbose_name_plural = _("Skills")
Example #3
0
 def setUp(self):
     registry.register(CommentTestArticle, ActivityMediator())
Example #4
0
    last_modifier = models.ForeignKey(
        settings.AUTH_USER_MODEL, verbose_name=_('Last modified by'),
        editable=False, null=True, related_name='last_modified_announcements')
    objects = AnnouncementManager()

    class Meta:
        ordering = ('-created_at',)
        verbose_name = _('Announcement')
        verbose_name_plural = _('Announcements')
        permissions = (
            ('view_announcement', 'Can view the announcement'),
        )

    def __str__(self):
        return self.title

    @models.permalink
    def get_absolute_url(self):
        kwargs = dict(pk=self.pk)
        if self.pub_state == 'draft':
            return ('announcements_announcement_update', (), kwargs)
        return ('announcements_announcement_detail', (), kwargs)


from permission import add_permission_logic
from .perms import AnnouncementPermissionLogic
add_permission_logic(Announcement, AnnouncementPermissionLogic())

from .activity import AnnouncementActivityMediator
registry.register(Announcement, AnnouncementActivityMediator())
Example #5
0
    def _get_upload_path(self, filename):
        basedir = os.path.join('thumbnails', 'activities', 'contrib',
                               'hatenablog')
        return os.path.join(basedir, filename)

    title = models.CharField(_('Title'), max_length=128)
    url = models.URLField(_('URL'), unique=True)
    thumbnail = models.ImageField(_('Image'),
                                  storage=OverwriteStorage(),
                                  upload_to=_get_upload_path,
                                  default='')
    md5 = models.CharField(max_length=32)
    created_at = models.DateTimeField(_('Created at'))

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('-created_at', )
        verbose_name = _('Hatenablog entry')
        verbose_name_plural = _('Hatenablog entries')

    def get_absolute_url(self):
        return self.url


from .activity import HatenablogEntryActivityMediator
from activities.registry import registry

registry.register(HatenablogEntry, HatenablogEntryActivityMediator())
Example #6
0
    class Meta:
        ordering = ('pk', )
        verbose_name = _('Screen shot')
        verbose_name_plural = _('Screen shots')

    def __str__(self):
        return '{}({})'.format(self.image.name, self.product.title)


from permission import add_permission_logic
from .perms import ProductPermissionLogic
from kawaz.core.personas.perms import ChildrenPermissionLogic
add_permission_logic(
    Product,
    ChildrenPermissionLogic(add_permission=True,
                            change_permission=False,
                            delete_permission=False))
add_permission_logic(Product, ProductPermissionLogic())

from .activity import ProductActivityMediator
from activities.registry import registry
registry.register(Product, ProductActivityMediator())

from .activity import ReleaseActivityMediator
registry.register(PackageRelease, ReleaseActivityMediator())
registry.register(URLRelease, ReleaseActivityMediator())

from .activity import ScreenshotActivityMediator
registry.register(Screenshot, ScreenshotActivityMediator())
Example #7
0

from django_comments.models import Comment

from .activity import CommentActivityMediator
from activities.registry import registry
registry.register(Comment, CommentActivityMediator())

from permission import add_permission_logic
from .perms import CommentPermissionLogic
add_permission_logic(Comment, CommentPermissionLogic())
Example #8
0
    """
    created = kwargs.get('created')
    instance = kwargs.get('instance')
    if instance.pub_state != 'draft' and not instance.administrator in instance.members.all():
        instance.join(instance.administrator)

from permission import add_permission_logic
from kawaz.core.personas.perms import KawazAuthorPermissionLogic
from permission.logics import CollaboratorsPermissionLogic
from kawaz.core.publishments.perms import PublishmentPermissionLogic
from .perms import ProjectPermissionLogic

add_permission_logic(Project, KawazAuthorPermissionLogic(
    field_name='administrator',
    change_permission=True,
    delete_permission=True
))
add_permission_logic(Project, CollaboratorsPermissionLogic(
    field_name='members',
    change_permission=True,
    delete_permission=False
))
add_permission_logic(Project, ProjectPermissionLogic())
add_permission_logic(Project, PublishmentPermissionLogic(
    author_field_name='administrator'
))

from .activity import ProjectActivityMediator
from activities.registry import registry
registry.register(Project, ProjectActivityMediator())
Example #9
0
        editable=False,
        null=True,
        related_name='last_modified_announcements')
    objects = AnnouncementManager()

    class Meta:
        ordering = ('-created_at', )
        verbose_name = _('Announcement')
        verbose_name_plural = _('Announcements')
        permissions = (('view_announcement', 'Can view the announcement'), )

    def __str__(self):
        return self.title

    @models.permalink
    def get_absolute_url(self):
        kwargs = dict(pk=self.pk)
        if self.pub_state == 'draft':
            return ('announcements_announcement_update', (), kwargs)
        return ('announcements_announcement_detail', (), kwargs)


from permission import add_permission_logic
from .perms import AnnouncementPermissionLogic

add_permission_logic(Announcement, AnnouncementPermissionLogic())

from .activity import AnnouncementActivityMediator

registry.register(Announcement, AnnouncementActivityMediator())
Example #10
0
 def setUp(self):
     registry.register(CommentTestArticle, ActivityMediator())
Example #11
0
                  "Letters, digits, and - are the only characters available.")
                % {'username': self.username})
        # 使用不可のユーザー名が指定されていた場合はエラー
        if self.username in INVALID_USERNAMES:
            raise ValidationError(
                _("The username '%(username)s' is reserved. "
                  "Please chose a different username.") %
                {'username': self.username})
        # ニックネームが指定されていない場合は自動的にユーザー名を当てはめる
        if not self.nickname:
            self.nickname = self.username
        super().clean_fields(exclude=exclude, **kwargs)

    @models.permalink
    def get_absolute_url(self):
        return ('personas_persona_detail', (), {'slug': self.username})


# username に対し独自のValidationをかけているためデフォルトのhelp_textと
# 実情があっていないため、強制的に書き換える
Persona._meta.get_field('username').help_text = _(
    'Required. 30 characters or fewer. Letters, digits and /-/_ only.')

from permission import add_permission_logic
from ..perms import PersonaPermissionLogic
add_permission_logic(Persona, PersonaPermissionLogic())

from ..activities.persona import PersonaActivityMediator
from activities.registry import registry
registry.register(Persona, PersonaActivityMediator())
Example #12
0
        return ('personas_persona_detail', (), {
            'slug': self.username
        })
# username に対し独自のValidationをかけているためデフォルトのhelp_textと
# 実情があっていないため、強制的に書き換える
Persona._meta.get_field('username').help_text = _(
    'Required. 30 characters or fewer. Letters, digits and /-/_ only.'
)

from permission import add_permission_logic
from ..perms import PersonaPermissionLogic
add_permission_logic(Persona, PersonaPermissionLogic())

from ..activities.persona import PersonaActivityMediator
from activities.registry import registry
registry.register(Persona, PersonaActivityMediator())

from django.dispatch import receiver
from slack_invitation.slack import SlackInvitationClient, SlackInvitationException
from registration.signals import user_accepted


@receiver(user_accepted)
def invite_to_slack(user, profile, request, **kwargs):
    try:
        team = getattr(settings, 'DJANGO_SLACK_INVITATION_TEAM', None)
        token = getattr(settings, 'DJANGO_SLACK_INVITATION_TOKEN', None)
        if not team or not token:
            raise ImproperlyConfigured('Both DJANGO_SLACK_INVITATION_TEAM and '
                                       'DJANGO_SLACK_INVITATION_TOKEN must be set')
        client = SlackInvitationClient(team, token)
Example #13
0
        basedir = os.path.join('thumbnails',
                               'activities',
                               'contrib',
                               'hatenablog')
        return os.path.join(basedir, filename)

    title = models.CharField(_('Title'), max_length=128)
    url = models.URLField(_('URL'), unique=True)
    thumbnail = models.ImageField(_('Image'),
                                  storage=OverwriteStorage(),
                                  upload_to=_get_upload_path,
                                  default='')
    md5 = models.CharField(max_length=32)
    created_at = models.DateTimeField(_('Created at'))

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('-created_at',)
        verbose_name = _('Hatenablog entry')
        verbose_name_plural = _('Hatenablog entries')

    def get_absolute_url(self):
        return self.url

from .activity import HatenablogEntryActivityMediator
from activities.registry import registry
registry.register(HatenablogEntry,
                  HatenablogEntryActivityMediator())
Example #14
0
        return self.user.nickname

    def get_absolute_url(self):
        # TODO: このメソッドは使用しないため削除
        # テンプレートなどで間違えて使用されていた場合を考えメソッド自体は
        # 一定期間残し、代わりに例外を投げる
        raise Exception(
            'Profile.get_absolute_url is obsolete. '
            'Use Persona.get_absolute_url instead. '
            'e.g. user.profile.get_absolute_url => '
            'user.get_absolute_url'
        )

from ..activities.profile import ProfileActivityMediator
from activities.registry import registry
registry.register(Profile, ProfileActivityMediator())

class Skill(models.Model):
    """It is the model which indicates what users can"""
    label = models.CharField(_('Label'), unique=True, max_length=32)
    description = models.CharField(_('Description'), max_length=128)
    order = models.IntegerField(_("Order"), default=0)

    def __str__(self):
        return self.label

    class Meta:
        ordering = ('order', 'pk',)
        verbose_name = _("Skill")
        verbose_name_plural = _("Skills")
Example #15
0
from django.test import TestCase
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from activities.models import Activity
from activities.tests.models import ActivitiesTestModelA
from activities.registry import registry
from activities.mediator import ActivityMediator
from kawaz.core.personas.models import Persona
from kawaz.core.personas.tests.factories import PersonaFactory
from kawaz.core.activities.tests.factories import ActivityFactory

registry.register(ActivitiesTestModelA, ActivityMediator())


class ActivityViewTestCase(TestCase):
    def test_activities_activity_list_url(self):
        """
        name=activities_activity_listから/activities/を引ける
        """
        self.assertEqual(reverse('activities_activity_list'), '/activities/')

    def test_get_activities(self):
        """
        10件ずつActivityを取得できる
        """
        ct = ContentType.objects.get_for_model(ActivitiesTestModelA)
        for i in range(15):
            test_model = ActivitiesTestModelA(text="hogehoge")
            test_model.save()

        r = self.client.get('/activities/')
Example #16
0
from django.test import TestCase
from django.contrib.contenttypes.models import ContentType
from django.core.urlresolvers import reverse
from activities.models import Activity
from activities.tests.models import ActivitiesTestModelA
from activities.registry import registry
from activities.mediator import ActivityMediator
from kawaz.core.personas.models import Persona
from kawaz.core.personas.tests.factories import PersonaFactory
from kawaz.core.activities.tests.factories import ActivityFactory

__author__ = 'giginet'

registry.register(ActivitiesTestModelA, ActivityMediator())

class ActivityViewTestCase(TestCase):

    def test_activities_activity_list_url(self):
        """
        name=activities_activity_listから/activities/を引ける
        """
        self.assertEqual(reverse('activities_activity_list'), '/activities/')

    def test_get_activities(self):
        """
        10件ずつActivityを取得できる
        """
        ct = ContentType.objects.get_for_model(ActivitiesTestModelA)
        for i in range(15):
            test_model = ActivitiesTestModelA(text="hogehoge")
            test_model.save()
Example #17
0
    class Meta:
        ordering = ('pk',)
        verbose_name = _('Screen shot')
        verbose_name_plural = _('Screen shots')

    def __str__(self):
        return '{}({})'.format(self.image.name, self.product.title)


from permission import add_permission_logic
from .perms import ProductPermissionLogic
from kawaz.core.personas.perms import ChildrenPermissionLogic
add_permission_logic(Product, ChildrenPermissionLogic(
    add_permission=True,
    change_permission=False,
    delete_permission=False
))
add_permission_logic(Product, ProductPermissionLogic())

from .activity import ProductActivityMediator
from activities.registry import registry
registry.register(Product, ProductActivityMediator())

from .activity import ReleaseActivityMediator
registry.register(PackageRelease, ReleaseActivityMediator())
registry.register(URLRelease, ReleaseActivityMediator())

from .activity import ScreenshotActivityMediator
registry.register(Screenshot, ScreenshotActivityMediator())
Example #18
0
from django.db.models.signals import post_delete
from django.dispatch import receiver
from kawaz.core.utils.signals import disable_for_loaddata


@receiver(post_save, sender=Event)
@disable_for_loaddata
def join_organizer(**kwargs):
    """
    作成者を自動的に参加させるシグナルレシーバ
    """
    created = kwargs.get('created')
    instance = kwargs.get('instance')
    if created:
        instance.attend(instance.organizer)


from permission import add_permission_logic
from permission.logics.staff import StaffPermissionLogic
from .perms import EventPermissionLogic
from kawaz.core.publishments.perms import PublishmentPermissionLogic
add_permission_logic(Event, EventPermissionLogic()),
add_permission_logic(Event, PublishmentPermissionLogic(
    author_field_name='organizer')),
add_permission_logic(Category, StaffPermissionLogic(any_permission=True))

from .activity import EventActivityMediator
from activities.registry import registry
registry.register(Event, EventActivityMediator())

Example #19
0
from django.db.models.signals import post_save
from django.db.models.signals import post_delete
from django.dispatch import receiver
from kawaz.core.utils.signals import disable_for_loaddata


@receiver(post_save, sender=Event)
@disable_for_loaddata
def join_organizer(**kwargs):
    """
    作成者を自動的に参加させるシグナルレシーバ
    """
    created = kwargs.get('created')
    instance = kwargs.get('instance')
    if created:
        instance.attend(instance.organizer)


from permission import add_permission_logic
from permission.logics.staff import StaffPermissionLogic
from .perms import EventPermissionLogic
from kawaz.core.publishments.perms import PublishmentPermissionLogic
add_permission_logic(Event, EventPermissionLogic()),
add_permission_logic(
    Event, PublishmentPermissionLogic(author_field_name='organizer')),
add_permission_logic(Category, StaffPermissionLogic(any_permission=True))

from .activity import EventActivityMediator
from activities.registry import registry
registry.register(Event, EventActivityMediator())