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}))
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}))
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))
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))
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)
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)