Ejemplo n.º 1
0
def add_edit(request, slug=None):
    """ Add/Edit group """
    form = GroupForm(request.POST or None,
                     instance=slug and Group.objects.get(slug__iexact=slug))

    if slug:
        check = GroupPermission(request.user)
        group = Group.objects.get(slug__iexact=slug)
        if not check.change_group(group):
            raise Http404

    if request.method == "POST" and form.is_valid():
        group = form.save(request.user, slug)
        form.save_m2m()

        # Notification
        if slug:
            msg = _("Group '%(group)s' has been updated" %
                    {'group': group.name})
        else:
            msg = _("Group '%(group)s' has been created" %
                    {'group': group.name})
        request.user.message_set.create(message=msg)

        return HttpResponseRedirect(
            reverse('group-detail', kwargs={'slug': group.slug}))

    return direct_to_template(request,
                              template='blgroup/form.html',
                              extra_context={
                                  'form': form,
                              })
Ejemplo n.º 2
0
def make_admin(request, model, model_slug, member_slug, permitted=False):
    """ Give administrator rights """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model, slug=model_slug, members=request.user)

    user = get_object_or_404(User, username=member_slug)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        codename = 'group_permission.change_group'
        check = GroupPermission(request.user)
        if check.change_group(model_object):
            permitted = True

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        codename = 'project_permission.change_project'
        check = ProjectPermission(request.user)
        if check.change_project(model_object):
            permitted = True
        
    if permitted:
        permission = Permission(codename=codename,
                                content_type=ContentType.objects.get_for_model(model),
                                object_id=model_object.id,
                                user=user,
                                approved=True)
        permission.save()

        # Notification
        model_object.create_activity(request.user, Activity.ADMIN, user)
        request.user.message_set.create(message=_("Member '%(member)s' has been granted admin permissions for '%(project)s'" % {'member': user.username, 'project': model_object.name }))

    return HttpResponseRedirect(reverse(redirect_reverse,
                                        kwargs = {'slug': model_object.slug}))
Ejemplo n.º 3
0
def add_edit(request, slug=None):
    """ Add/Edit group """
    form = GroupForm(request.POST or None,
                     instance=slug and Group.objects.get(slug__iexact=slug))

    if slug:
        check = GroupPermission(request.user)
        group = Group.objects.get(slug__iexact=slug)
        if not check.change_group(group):
            raise Http404
        
    if request.method == "POST" and form.is_valid():
        group = form.save(request.user, slug)
        form.save_m2m()

        # Notification
        if slug: msg = _("Group '%(group)s' has been updated" % {'group': group.name })
        else: msg = _("Group '%(group)s' has been created" % {'group': group.name })
        request.user.message_set.create(message=msg)

        return HttpResponseRedirect(reverse('group-detail', kwargs = {'slug': group.slug }))

    return direct_to_template(request,
                              template='blgroup/form.html',
                              extra_context={'form': form, })
Ejemplo n.º 4
0
def delete(request, slug):
    """ Delete group """
    group = get_object_or_404(Group, slug__iexact=slug)
    check = GroupPermission(request.user)
    
    if check.delete_group(group):
        group.delete()

        # Notification
        request.user.message_set.create(message=_("Group '%(group)s' has been deleted" % {'group': group.name }))
        
        return HttpResponseRedirect(reverse('group-list'))
    else:
        raise Http404
Ejemplo n.º 5
0
def delete(request, slug):
    """ Delete group """
    group = get_object_or_404(Group, slug__iexact=slug)
    check = GroupPermission(request.user)

    if check.delete_group(group):
        group.delete()

        # Notification
        request.user.message_set.create(
            message=_("Group '%(group)s' has been deleted" %
                      {'group': group.name}))

        return HttpResponseRedirect(reverse('group-list'))
    else:
        raise Http404
Ejemplo n.º 6
0
def make_admin(request, model, model_slug, member_slug, permitted=False):
    """ Give administrator rights """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model,
                                     slug=model_slug,
                                     members=request.user)

    user = get_object_or_404(User, username=member_slug)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        codename = 'group_permission.change_group'
        check = GroupPermission(request.user)
        if check.change_group(model_object):
            permitted = True

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        codename = 'project_permission.change_project'
        check = ProjectPermission(request.user)
        if check.change_project(model_object):
            permitted = True

    if permitted:
        permission = Permission(
            codename=codename,
            content_type=ContentType.objects.get_for_model(model),
            object_id=model_object.id,
            user=user,
            approved=True)
        permission.save()

        # Notification
        model_object.create_activity(request.user, Activity.ADMIN, user)
        request.user.message_set.create(message=_(
            "Member '%(member)s' has been granted admin permissions for '%(project)s'"
            % {
                'member': user.username,
                'project': model_object.name
            }))

    return HttpResponseRedirect(
        reverse(redirect_reverse, kwargs={'slug': model_object.slug}))
Ejemplo n.º 7
0
def delete_member(request, model, model_slug, member_slug):
    """ Delete member """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model,
                                     slug=model_slug,
                                     members=request.user)

    user = get_object_or_404(User, username=member_slug)

    kwargs = {}
    msg = _("Member '%(member)s' has been removed from '%(project)s'" % {
        'member': user.username,
        'project': model_object.name
    })
    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        check = GroupPermission(request.user)
        if not check.change_group(model_object):
            raise Http404

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        kwargs['slug'] = model_object.slug
        check = ProjectPermission(request.user)
        if not check.change_project(model_object) and user != request.user:
            raise Http404
        if user == request.user:
            redirect_reverse = 'project-list'
            kwargs = {}
            msg = _("You have resigned from '%(project)s'" %
                    {'project': model_object.name})

    if model_object.members.count() > 1:
        model_object.members.remove(user.id)
        model_object.save()

        # Notification
        model_object.create_activity(request.user, Activity.DELETE, user)
        request.user.message_set.create(message=msg)

    return HttpResponseRedirect(reverse(redirect_reverse, kwargs=kwargs))
Ejemplo n.º 8
0
def delete_member(request, model, model_slug, member_slug):
    """ Delete member """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model, slug=model_slug, members=request.user)

    user = get_object_or_404(User, username=member_slug)

    kwargs = {}
    msg = _("Member '%(member)s' has been removed from '%(project)s'" % {'member': user.username, 'project': model_object.name })
    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        check = GroupPermission(request.user)
        if not check.change_group(model_object):
            raise Http404

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        kwargs['slug'] = model_object.slug
        check = ProjectPermission(request.user)
        if not check.change_project(model_object) and user != request.user:
            raise Http404
        if user == request.user:
            redirect_reverse = 'project-list'
            kwargs = {}
            msg = _("You have resigned from '%(project)s'" % {'project': model_object.name })

    if model_object.members.count() > 1:
        model_object.members.remove(user.id)
        model_object.save()

        # Notification
        model_object.create_activity(request.user, Activity.DELETE, user)
        request.user.message_set.create(message=msg)

    return HttpResponseRedirect(reverse(redirect_reverse,
                                        kwargs = kwargs))
Ejemplo n.º 9
0
def add_member(request,
               model,
               model_slug,
               template='blprofile/includes/form.html'):
    """ Add member to model """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model,
                                     slug=model_slug,
                                     members=request.user)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        extra_context = {'group': model_object}
        check = GroupPermission(request.user)
        if not check.change_group(model_object):
            raise Http404

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        extra_context = {'project': model_object}
        check = ProjectPermission(request.user)
        if not check.change_project(model_object):
            raise Http404

    form = MemberForm()
    invite_form = InviteForm()
    msg = ''

    # Load every member of your projects
    projects = Project.objects.filter(members=request.user).distinct()
    members = []
    for project in projects:
        for member in project.members.all():
            if member not in members and member not in model_object.members.all(
            ):
                members.append(member)

    if request.method == "POST":
        if 'invite' in request.POST.keys():
            invite_form = InviteForm(request.POST)
            if invite_form.is_valid():
                invite = invite_form.save(request.user, model, model_object.id)
                msg = _(
                    "Invite for '%(project)s' has been send to '%(invite)s'" %
                    {
                        'project': model_object.name,
                        'invite': invite
                    })
        else:
            form = MemberForm(request.POST)
            if form.is_valid():
                members = form.save(model, model_object.id)

                member_string = ''
                for member in members:
                    member_string = member_string + member.strip() + ", "
                if len(members) > 1:
                    msg = _(
                        "Members '%(member)s' have been invited to '%(project)s'"
                        % {
                            'member': member_string[:-2],
                            'project': model_object.name
                        })
                    model_object.create_activity(request.user, Activity.INVITE)
                else:
                    msg = _(
                        "Member '%(member)s' has been invited to '%(project)s'"
                        % {
                            'member': member_string[:-2],
                            'project': model_object.name
                        })
                    user = User.objects.get(username__iexact=member)
                    model_object.create_activity(request.user, Activity.INVITE,
                                                 user)

        # Notification
        request.user.message_set.create(message=msg)

        return HttpResponseRedirect(
            reverse(redirect_reverse, kwargs={
                'slug': model_slug,
            }))

    extra_context['form'] = form
    extra_context['inviteform'] = invite_form
    extra_context['members'] = members
    return simple.direct_to_template(request,
                                     template=template,
                                     extra_context=extra_context)
Ejemplo n.º 10
0
def add_member(request, model, model_slug, template='blprofile/includes/form.html'):
    """ Add member to model """
    model = get_model(*model.split('.'))
    model_object = get_object_or_404(model, slug=model_slug, members=request.user)

    if isinstance(model_object, Group):
        redirect_reverse = 'group-detail'
        extra_context = {'group': model_object}
        check = GroupPermission(request.user)
        if not check.change_group(model_object):
            raise Http404

    elif isinstance(model_object, Project):
        redirect_reverse = 'project-detail'
        extra_context = {'project': model_object}
        check = ProjectPermission(request.user)
        if not check.change_project(model_object):
            raise Http404

    form = MemberForm()
    invite_form = InviteForm()
    msg = ''

    # Load every member of your projects
    projects = Project.objects.filter(members=request.user).distinct()
    members = []
    for project in projects:
        for member in project.members.all():
            if member not in members and member not in model_object.members.all():
                members.append(member)
        
    if request.method == "POST":
        if 'invite' in request.POST.keys():
            invite_form = InviteForm(request.POST)
            if invite_form.is_valid():
                invite = invite_form.save(request.user, model, model_object.id)
                msg = _("Invite for '%(project)s' has been send to '%(invite)s'" % {'project': model_object.name, 'invite': invite })
        else:
            form = MemberForm(request.POST)
            if form.is_valid():
                members = form.save(model, model_object.id)

                member_string = ''
                for member in members:
                    member_string = member_string + member.strip() + ", "
                if len(members) > 1:
                    msg = _("Members '%(member)s' have been invited to '%(project)s'" % {'member': member_string[:-2], 'project': model_object.name })
                    model_object.create_activity(request.user, Activity.INVITE)
                else:
                    msg = _("Member '%(member)s' has been invited to '%(project)s'" % {'member': member_string[:-2], 'project': model_object.name })
                    user = User.objects.get(username__iexact=member)
                    model_object.create_activity(request.user, Activity.INVITE, user)
                    
        # Notification
        request.user.message_set.create(message=msg)
                
        return HttpResponseRedirect(reverse(redirect_reverse,
                                            kwargs = {'slug': model_slug,}))

    extra_context['form'] = form
    extra_context['inviteform'] = invite_form
    extra_context['members'] = members
    return simple.direct_to_template(request,
                                     template=template,
                                     extra_context=extra_context)