def group_admin_members_add(request, slug, extra_context={}): group = get_object_or_404(auth_models.Group, name=slug) if request.method == "POST": user = get_object_or_404(auth_models.User, pk=int(request.POST['user_id'])) svmain_models.Membership(user=user, group=group, admin_flags='').save() messages.success(request, _("User %s added to the project.") % user.username) return HttpResponseRedirect('../') from django.views.generic.list_detail import object_list from savane.filters import search from django.contrib.auth.admin import UserAdmin context = {} context.update(extra_context) context.update({'group': group}) queryset = auth_models.User.objects.filter(is_active=True) \ .exclude(pk__in=group.user_set.all()) \ .order_by('username') return search(object_list)( request, queryset=queryset, paginate_by=20, model_admin=UserAdmin, extra_context=context, template_name='svmain/group_admin_members_add.html')
def canGuestReadFile(uid, id_source, req=None): o = M.Ownership.objects.get(source__id=id_source) e = M.Ensemble.objects.get(pk=o.ensemble_id) if o.ensemble.allow_guest and len( M.Membership.objects.filter( user__id=uid, ensemble=e, deleted=False)) == 0: #add membership for guest user: m = M.Membership() m.user_id = uid m.ensemble_id = e.id m.guest = True if e.section_assignment == M.Ensemble.SECTION_ASSGT_RAND: #assign guest to a random section if there are sections, unless we find a pgid cookie that correponded to a existing section sections = M.Section.objects.filter(ensemble=e) if sections: if req is not None and "pgid" in req.COOKIES: prev_sections = M.Section.objects.filter( membership__user__id=int(req.COOKIES.get("pgid")), membership__ensemble__id=e.id) if len(prev_sections): m.section = prev_sections[0] if m.section is None: m.section = random.choice(sections) m.save() return o.ensemble.allow_guest
def group_join(request, slug): g = get_object_or_404(auth_models.Group, name=slug) if svmain_models.Membership.objects.filter(user=request.user, group=g).count(): messages.error(request, _("Request for inclusion already registered")) else: svmain_models.Membership(user=request.user, group=g, admin_flags='P').save() # TODO: send e-mail notification to group admins messages.success( request, _("Request for inclusion sent to project administrators")) return HttpResponseRedirect('../')
def confirmInvite(id): invite = M.Invite.objects.filter(key=id) if len(invite) == 0: return None invite = invite[0] membership = M.Membership.objects.filter(user=invite.user_id, ensemble=invite.ensemble_id) if len(membership) == 0: membership = M.Membership() membership.user = invite.user membership.ensemble = invite.ensemble membership.admin = invite.admin membership.save() return invite
def get_membership(person, club): try: membership = self.open().query(Membership).filter( Membership.person_id == person.id, Membership.club_id == club.id).one() except: membership = mo.Membership() membership.person = person membership.club = club DB_MANAGER.save(membership) return membership return None
def create_ensemble(uid, P): #name, description, uid, allow_staffonly, allow_anonymous, ): import random, string ensemble = M.Ensemble(name=P["name"], description=P["description"]) if "allow_staffonly" in P: ensemble.allow_staffonly = P["allow_staffonly"] if "allow_anonymous" in P: ensemble.allow_anonymous = P["allow_anonymous"] if "allow_guest" in P: ensemble.allow_guest = P["allow_guest"] if "use_invitekey" in P: ensemble.use_invitekey = P["use_invitekey"] if "allow_download" in P: ensemble.allow_download = P["allow_download"] ensemble.invitekey = "".join([ random.choice(string.ascii_letters+string.digits) for i in xrange(0,50)]) ensemble.save() id = ensemble.pk membership = M.Membership(ensemble_id=id, user_id=uid, admin=1) membership.save() return id