Example #1
0
def create_group(request, pk=None):
    if pk:
        group = Group.objects.get(id=pk)
    else:
        group = Group()

    if request.method == "POST":
        group = GroupModelForm(request.POST, instance=group)
        if group.is_valid():
            created_group = group.save()
            formset = GroupMemberFormSet(request.POST, instance=created_group)
            print(formset)
            if formset.is_valid():
                formset.save()
                print(formset.cleaned_data)
                return HttpResponseRedirect(reverse('groups'))


            else:
                print("formset invalid")
                print(formset.errors)
                context = {
                    'group_form': group,
                    'formset': formset,
                }
        else:
            print("form invalic")
            formset = GroupMemberFormSet(instance=Group())
            context = {
                'group_form': group,
                'formset': formset,
            }


    else:

        if pk:
            group = Group.objects.get(id=pk)
            group_form = GroupModelForm(instance=group)
        else:
            group = Group()
            group_form = GroupModelForm()

        formset = GroupMemberFormSet(instance=group)

        context = {
            'group_form': group_form,
            'formset': formset,
        }
    template = loader.get_template('groups/create_update.html')
    return HttpResponse(template.render(context, request))
Example #2
0
def groups(request):
    """
    :param request:
    :return:
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))

    if not request.user.is_superuser:
        return HttpResponseRedirect(reverse('index'))

    error_messages = []

    if request.method == 'POST':
        form = groupAddForm(request.POST)
        if form.is_valid():
            group = form.cleaned_data
            new_group = Group(name=group['name'])
            new_group.save()
            return HttpResponseRedirect(request.get_full_path())
        else:
            for msg_err in form.errors.values():
                error_messages.append(msg_err.as_text())

    groups = Group.objects.all().order_by('name')
    groups_inst = []
    for group in groups:
        groups_inst.append(
            (group, Instance.objects.filter(group=group).order_by('name')))
    return render(request, 'groups.html', locals())
Example #3
0
    def test_membership(self):
        membership = Membership()

        user = User.objects.create_user('Testy McTest', '*****@*****.**',
                                        'testpassword')
        user.save()

        group = Group()
        group.name = "Test Group"
        group.save()

        membership.user = User.objects.get(id=user.id)
        membership.group = Group.objects.get(id=group.id)
        membership.is_admin = False

        membership.save()

        test_membership = Membership.objects.get(id=membership.id)

        self.assertEquals(test_membership, membership)
        self.assertEquals(test_membership.user, User.objects.get(id=user.id))
        self.assertEquals(test_membership.group,
                          Group.objects.get(id=group.id))
        self.assertEquals(test_membership.is_admin, False)

        membership.delete()
        group.delete()
        user.delete()
Example #4
0
 def save(self):
     if self.model is None:
         self.model = Group(name='', visible=True, key='')
     data = self.cleaned_data
     self.model.name=data['name']
     self.model.visible=data['visible']
     self.model.key=data.get('key')
     return self.model
Example #5
0
def add(group_name):
    try:
        group = Group(name=group_name, user_id=g.auth['sub'])
        db.session.add(group)
        db.session.commit()
    except IntegrityError as e:
        raise AlreadyExistsError(group_name)
    return ('', HTTPStatus.NO_CONTENT)
Example #6
0
 def setUp(self):
     self.tournament = Tournament()
     self.tournament.save()
     self.group = Group(letter='A')
     self.group.tournament_id = self.tournament.id
     self.group.save()
     self.team = Team(name='Brazil')
     self.team.group_id = self.group.id
Example #7
0
 def setUp(self):
     user_obj = User(email='*****@*****.**', is_lecture=True)
     user_obj.set_password("randPassword")
     user_obj.save()
     group = Group()
     group.save()
     lecture_groups = LectureGroups(user=user_obj)
     lecture_groups.groups_list.add(group)
     lecture_groups.save()
Example #8
0
 def setUp(self):
     user_obj = User(email='*****@*****.**')
     user_obj.set_password("randPassword")
     user_obj.save()
     group = Group()
     group.save()
     student_groups = StudentGroups(user=user_obj)
     student_groups.groups_list.add(group)
     student_groups.save()
Example #9
0
    def test_group(self):
        group = Group()
        group.name = "Test Group"

        group.save()

        test_group = Group.objects.get(id=group.id)

        self.assertEquals(test_group, group)
        self.assertEquals(test_group.name, "Test Group")
        self.assertEquals(test_group.date_created, group.date_created)

        group.delete()
Example #10
0
 def setUp(self):
     self.club = Club(name="NTNUI")
     self.club.save()
     self.group = Group(name="NTNUI Fotball", club=self.club)
     self.group.save()
     self.user = User.objects.create_superuser("testuser",
                                               email="*****@*****.**",
                                               password="******")
     self.user.save()
     self.interest = Interest(session_id="c00k13M0n5t3r", group=self.group)
     self.interest.save()
     self.factory = APIRequestFactory()
     self.interests = Interest.objects.all()
Example #11
0
    def post(self, request):
        name = request.POST.get('name')

        group = Group()

        group.name = name
        group.start_date = start_date
        group.max_students = max_students

        group.save()
        print(group)

        return redirect('/groups/all')
Example #12
0
    def post(self, request, *args, **kwargs):
        data = request.data
        #create a new group given the name, description, and image
        serializer = GroupSerializer(data=data)
        if (serializer.is_valid(raise_exception=True)):
            group_obj = Group(name=data.get('name'),
                              description=data.get('description'),
                              image=data.get('image'))
            group_obj.save()

        #associate the group with the owner and members through Membership
        owner = request.user
        if (not Membership.objects.filter(user=owner,
                                          group=group_obj).exists()):
            own_mem_obj = Membership(user=owner, group=group_obj, owner=True)
            own_mem_obj.save()

        members = data.get('members', '')
        members = [item.strip() for item in members.strip().split(',')]
        for member in members:
            try:
                user_obj = User.objects.get(email=member)
            except User.DoesNotExists:
                pass
            if (not Membership.objects.filter(user=user_obj,
                                              group=group_obj).exists()):
                mem_obj = Membership(user=user_obj,
                                     group=group_obj,
                                     owner=False)
                mem_obj.save()

                #notify the group
                msg_obj = BuddyMessage(user=user_obj,
                                       group=group_obj,
                                       message=''.join((user_obj.buddycode,
                                                        ' joined the group')),
                                       message_type=settings.MSG_TYPE_JOIN)
                msg_obj.save()

        #create an activity for the owner
        if (not CreateGroup.objects.filter(user=owner,
                                           group=group_obj).exists()):
            activity_obj = CreateGroup(owner=owner,
                                       group=group_obj,
                                       longitude=owner.longitude,
                                       latitude=owner.latitude)
            activity_obj.save()

        return Response({"success": True}, status=HTTP_200_OK)
Example #13
0
 def save(self, commit=True):
     group = Group(name=self.cleaned_data['name'],
                   tagline=self.cleaned_data['tagline'],
                   description=self.cleaned_data['description'],
                   email=self.cleaned_data['email'],
                   website=self.cleaned_data['website'],
                   owner=self.owner,
                   location=self.cleaned_data['location'],
                   address=self.cleaned_data['address'],
                   city=self.cleaned_data['city'],
                   state=self.cleaned_data['state'],
                   zip_code=self.cleaned_data['zip_code'],
                   approvalNeeded=self.cleaned_data['approvalNeeded'],
                   private=self.cleaned_data['private'])
     return group
Example #14
0
 def create(self, request, *args, **kwargs):
     data = dict(request.data)
     user = request.user
     level = Level.safe_get(data.get('level_id'))
     admin = Member.safe_get(data.get('admin_id'))
     parent_group = Group.safe_get(data.get('parent_group_id'))
     group = Group()
     group.title = data.get('title', '')
     group.level_id = level.to_dbref() if level else None
     group.admin_id = admin.to_dbref() if admin else None
     group.created_at = datetime.utcnow()
     group.created_by = user.to_dbref() if user.id else None
     group.parent_group_id = parent_group.id if parent_group else None
     group.save()
     response = {"id": str(group.id), "title": group.title}
     return HTTPResponse(response)
Example #15
0
    def create_course_group(self, request, pk=None):
        course = self.get_object()
        group_name = request.data.get('name')
        group = Group(name=group_name, course=course)
        group.save()
        for student in group.students.all():
            assign_perm('groups.view_group', student.user, group)

        # Assign view permission to students in group
        for assistant in group.course.assistant_set.all():
            assign_perm('groups.view_group', assistant.user, group)
            assign_perm('groups.change_group', assistant.user, group)

        assign_perm('groups.change_group', group.course.professor.user, group)
        assign_perm('groups.delete_group', group.course.professor.user, group)
        assign_perm('groups.view_group', group.course.professor.user, group)
        return Response(GroupSerializer(group).data)
Example #16
0
def create_group(name, email, url_root, owner):
    """
	_name_		Name of group
	_email_		Email address for group (?)
	_url_root_	acSite
	_owner_		MCID of user/doctor that controls this group
	"""
    u = User()
    u.mcid = mcid_generator.next_mcid()
    u.email = email
    u.set_password(str(u.mcid))
    u.first_name = name
    u.last_name = 'Group'
    u.rolehack = 'rls'
    u.acctype = 'GROUP'
    u.updatetime = 0
    u.ccrlogupdatetime = 0
    u.save()

    g = Group()
    g.grouptypeid = 0
    g.name = name
    g.accid_id = u.mcid
    g.save()

    p = Practice()
    p.providergroupid = g
    p.practicename = name
    p.accid_id = u.mcid
    p.save()

    p.practiceRlsUrl = urljoin(url_root, 'acct/ws/R.php?pid=%d' % p.practiceid)
    p.save()

    g.parentid = p.practiceid
    g.save()

    ga = Groupadmin()
    ga.groupinstanceid = g.groupinstanceid
    ga.adminaccid = owner
    ga.save()

    add_to_group(g, owner)

    return g, p
Example #17
0
 def setUp(self):
     self.phase = Tournament.FIRST_PHASE
     self.group_letter = 'A'
     self.team_a_name = 'Brazil'
     self.team_b_name = 'Germany'
     self.tournament = Tournament(phase=self.phase)
     self.tournament.save()
     self.group = Group(letter=self.group_letter)
     self.group.tournament_id = self.tournament.id
     self.group.save()
     self.team_a_goals = random.randint(0, 10)
     self.team_b_goals = random.randint(0, 10)
     self.team_a = Team(name=self.team_a_name)
     self.team_b = Team(name=self.team_b_name)
     self.team_a.group_id = self.group.id
     self.team_b.group_id = self.group.id
     self.team_a.save()
     self.team_b.save()
Example #18
0
    def handle(self, *args, **options):
        Group.objects.all().delete()
        Category.objects.all().delete()
        Choice.objects.all().delete()
        Question.objects.all().delete()

        #сбрасываем автоинкремент чтобы не ловить индекс категории
        from django.db import connection
        cursor = connection.cursor()
        sql = 'ALTER TABLE groups_group AUTO_INCREMENT=1;'
        cursor.execute(sql)
        sql = 'ALTER TABLE questions_category AUTO_INCREMENT=1;'
        cursor.execute(sql)

        for i in range(0, self.groups_pool_length):
            group = Group(name=self.groups_prefix + str(i + 1))
            group.save()
        print 'Таблица групп наполнена'

        for i in range(0, self.categories_pool_length):
            category = Category(name=self.categories_prefix + str(i + 1))
            category.save()
        print 'Таблица категорий наполнена'

        import random
        for i in range(0, self.questions_pool_length):
            a = random.randint(0, 20)
            b = random.randint(0, 20)
            answer = a + b
            question_text = '%s %s. Введите правильный ответ в выражении %s+%s' % (
                self.questions_prefix, i, a, b)
            question = Question(
                category=Category.objects.all().order_by('?')[0],
                question=question_text,
                answer=str(answer))
            question.save()

            for j in range(3):
                choice = Choice(
                    question=question,
                    choice_text=answer +
                    (-1)**random.randint(0, 10) * random.randint(1, 3))
                choice.save()
        print 'Таблицы вопросов и выборов наполнены'
Example #19
0
def create_group(group_name, articles, num_comments, clone_and_sample):
    """
    Create group from articles (sampling its comments)
    """
    try:
        group = Group.objects.get(name=group_name)
    except DoesNotExist:
        group = Group(name=group_name)

    if clone_and_sample:
        group.articles = [
            clone_and_sample_comments(art, num_comments) for art in articles
        ]
    else:
        group.articles = articles

    group.save()

    return group
Example #20
0
def addGroup(request):

    if request.method == 'GET':
        return HttpResponse(render(request, 'add_group.html'))
    elif request.method == 'POST':

        name = request.POST.get('name')
        start_date = request.POST.get('startDate')
        max_students = request.POST.get('maxStudents')

        group = Group()

        group.name = name
        group.start_date = start_date
        group.max_students = max_students

        group.save()

    return redirect('/groups/all')
Example #21
0
    def handle(self, **options):
        group_id = options['group_id']
        if group_id:
            group_id = int(group_id)

        if not group_id:
            raise Exception("--group_id is required!")

        group_src = Group.objects.get(id=group_id)
        group_dst = Group()

        group_dst.__dict__ = copy.deepcopy(group_src.__dict__)
        group_dst.id = None
        group_dst.name += " copy"
        group_dst.save()

        for student_src in group_src.students.all():
            print "Copy student {0}".format(
                student_src.get_full_name().encode("utf-8"))
            group_dst.students.add(student_src)
Example #22
0
def groups_edit(request, pk):
    """Edit an Group"""

    try:
        object = Group.objects.get(pk=pk)
    except:
        object = Group()

    if request.method == 'POST':  # If the form has been submitted...
        form = GroupForm(request.POST, instance=object)

        if form.is_valid():  # If the form is valid
            object = form.save()

            messages.success(request, 'The group has been saved.')

            return redirect(reverse('groups.views.groups_list'))
    else:
        form = GroupForm(instance=object)

    return render_to_response('groups/groups/edit.html', {'form': form},
                              context_instance=RequestContext(request))
Example #23
0
    def setUp(self):
        lecture = User(email='*****@*****.**', first_name='John', last_name='Snow', is_student=False, is_lecture=True)
        lecture2 = User(email='*****@*****.**', first_name='Harry', last_name='Potter', is_student=False, is_lecture=True)
        lecture.set_password("randPassword")
        lecture.save()
        lecture2.save()
        student = User(email='*****@*****.**', first_name='Frodo', last_name='Baggins')
        student2 = User(email='*****@*****.**', first_name='Titus', last_name='Flavius')
        student3 = User(email='*****@*****.**', first_name='Philip', last_name='Capet')
        student.save()
        student2.save()
        student3.save()

        group = Group(course='python', lectures_list=[Lecture(lecture=lecture)],
                      enrolled_list=[Enrolled(student=student,
                                              marks_list=[Mark(value=5, max_points=10, for_what="exercise", note=""),
                                                          Mark(value=2, max_points=10, for_what="quiz", note="")]),
                                     Enrolled(student=student2,
                                              marks_list=[Mark(value=7, max_points=10, for_what="exercise", note=""),
                                                          Mark(value=10, max_points=10, for_what="quiz", note="")]
                                              )])
        group.save()
Example #24
0
def group(request):
    '''Creates a view of group to add a new group reading the user posted data.'''
    groups = Group.objects.all()
    if request.method == 'POST':
        form = GroupForm(request.POST)
        if form.is_valid():
            group_code = form.cleaned_data['group_code']
            name = form.cleaned_data['name']
            description = form.cleaned_data['description']
            try:
                group = Group()
                group.group_code = group_code
                group.name = name
                group.description = description
                group.save()
            except:
                pass
            return HttpResponseRedirect(reverse('index'))
    else:
        form = GroupForm()
    return render(request, 'groups/group.html', {
        'groups': groups,
        'form': form
    })
Example #25
0
 def setUp(self):
     self.project = Project(group=Group(name='name', slug='slug'))
Example #26
0
def groups(request):
    if request.POST:
        item = Group(name=request.POST['name'])
        item.save()
    object_list = Group.objects.all().order_by("name")
    return render(request, 'groups/index.html', locals())
Example #27
0
def create_test_offering():
    """
    main test course: interesting data for grades, marking, submission, groups
    """
    from grades.models import Activity, LetterActivity, CalNumericActivity, CalLetterActivity
    from submission.models import SubmissionComponent
    from submission.models.code import CodeComponent
    from submission.models.pdf import PDFComponent
    from groups.models import Group, GroupMember
    from marking.models import ActivityComponent

    crs = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)

    crs.set_labtut(True)
    crs.set_url("http://www.cs.sfu.ca/CC/165/common/")
    crs.set_taemail("*****@*****.**")
    crs.save()

    # create example activities
    a1 = NumericActivity.objects.get(offering=crs, slug='a1')
    a2 = NumericActivity(offering=crs,
                         name="Assignment 2",
                         short_name="A2",
                         status="URLS",
                         due_date=crs.semester.start +
                         datetime.timedelta(days=70),
                         percent=10,
                         group=True,
                         max_grade=20,
                         position=2)
    a2.set_url("http://www.cs.sfu.ca/CC/165/common/a2")
    a2.save()
    pr = LetterActivity(offering=crs,
                        name="Project",
                        short_name="Proj",
                        status="URLS",
                        due_date=crs.semester.start +
                        datetime.timedelta(days=80),
                        percent=40,
                        group=True,
                        position=3)
    pr.save()
    re = LetterActivity(offering=crs,
                        name="Report",
                        short_name="Rep",
                        status="URLS",
                        due_date=crs.semester.start +
                        datetime.timedelta(days=81),
                        percent=10,
                        group=False,
                        position=4)
    re.save()
    ex = NumericActivity(offering=crs,
                         name="Final Exam",
                         short_name="Exam",
                         status="URLS",
                         due_date=None,
                         percent=30,
                         group=False,
                         max_grade=90,
                         position=5)
    ex.save()
    to = CalNumericActivity(offering=crs,
                            name="Final Percent",
                            short_name="Perc",
                            status="INVI",
                            due_date=None,
                            percent=0,
                            group=False,
                            max_grade=100,
                            formula="[[activitytotal]]",
                            position=6)
    to.save()
    to = CalLetterActivity(offering=crs,
                           name="Letter Grade",
                           short_name="Letter",
                           status="INVI",
                           due_date=None,
                           percent=0,
                           group=False,
                           numeric_activity=to,
                           position=6)
    to.save()

    # make A1 submittable and markable
    s = CodeComponent(activity=a1,
                      title=u"Cöde File",
                      description="The code you're submitting.",
                      allowed=".py,.java")
    s.save()
    s = PDFComponent(activity=a1,
                     title="Report",
                     description="Report on what you did.",
                     specified_filename="report.pdf")
    s.save()

    m = ActivityComponent(
        numeric_activity=a1,
        max_mark=5,
        title=u"Part ➀",
        description="Part ➀ was done well and seems to work.",
        position=1,
        slug='part-1')
    m.save()
    m = ActivityComponent(
        numeric_activity=a1,
        max_mark=5,
        title="Part 2",
        description="Part 2 was done well and seems to work.",
        position=2)
    m.save()

    # create some groups
    members = list(Member.objects.filter(offering=crs, role='STUD'))
    random.shuffle(members)
    m = members.pop()
    g = Group(name="SomeGroup", courseoffering=crs, manager=m)
    g.save()
    for m in [m, members.pop()]:
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a2)
        gm.save()

    m = members.pop()
    g = Group(name="AnotherGroup", courseoffering=crs, manager=m)
    g.save()
    for m in [m, members.pop(), members.pop()]:
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a2)
        gm.save()
        gm = GroupMember(group=g, student=m, confirmed=True, activity=pr)
        gm.save()

    return itertools.chain(
        Activity.objects.all(),
        NumericActivity.objects.all(),
        LetterActivity.objects.all(),
        CalNumericActivity.objects.all(),
        CalLetterActivity.objects.all(),
        SubmissionComponent.objects.all(),
        CodeComponent.objects.all(),
        PDFComponent.objects.all(),
        Group.objects.all(),
        GroupMember.objects.all(),
        ActivityComponent.objects.all(),
    )
Example #28
0
def submit(request, course_slug):
    person = get_object_or_404(Person, userid=request.user.username)
    course = get_object_or_404(CourseOffering, slug=course_slug)
    member = Member.objects.exclude(role='DROP').get(person=person,
                                                     offering=course)
    is_staff = is_course_staff_by_slug(request, course_slug)
    span = course.group_span_activities()

    error_info = None
    name = request.POST.get('GroupName')
    if name:
        name = name[:30]
    #Check if group has a unique name
    if Group.objects.filter(name=name, courseoffering=course):
        error_info = "A group named \"%s\" already exists" % (name)
        messages.add_message(request, messages.ERROR, error_info)
        return HttpResponseRedirect(
            reverse('offering:groups:groupmanage',
                    kwargs={'course_slug': course_slug}))
    #Check if the group name is empty, these two checks may need to be moved to forms later.
    if name == "":
        error_info = "Group name cannot be empty: please enter a group name."
        messages.add_message(request, messages.ERROR, error_info)
        return HttpResponseRedirect(
            reverse('offering:groups:groupmanage',
                    kwargs={'course_slug': course_slug}))

    else:
        # find selected activities
        selected_act = []
        activities = Activity.objects.filter(offering=course,
                                             group=True,
                                             deleted=False)
        if not is_staff:
            activities = activities.exclude(status='INVI')

        for activity in activities:
            activityForm = ActivityForm(request.POST, prefix=activity.slug)
            if activityForm.is_valid(
            ) and activityForm.cleaned_data['selected'] == True:
                selected_act.append(activity)

        # no selected activities: fail.
        if not selected_act:
            messages.add_message(request, messages.ERROR,
                                 "Group not created: no activities selected.")
            return HttpResponseRedirect(
                reverse('offering:groups:groupmanage',
                        kwargs={'course_slug': course_slug}))

        # check groups_span_activities restriction if it's set
        if not span and not is_staff and len(selected_act) > 1:
            # students cannot violate groups_span_activities restriction, but instructors can
            messages.add_message(
                request, messages.ERROR,
                "Group not created: groups cannot last for more than one activity in this course."
            )
            return HttpResponseRedirect(
                reverse('offering:groups:groupmanage',
                        kwargs={'course_slug': course_slug}))

        groupForSemester = False

        #validate database integrity before saving anything.
        #If one student is in a group for an activity, he/she cannot be in another group for the same activity.
        if is_course_student_by_slug(request, course_slug):
            isStudentCreatedGroup = True
            studentList = []
            studentList.append(member)
        elif is_course_staff_by_slug(request, course_slug):
            isStudentCreatedGroup = False
            studentList = []
            students = Member.objects.select_related('person').filter(
                offering=course, role='STUD')
            for student in students:
                studentForm = StudentForm(request.POST,
                                          prefix=student.person.userid)
                if studentForm.is_valid(
                ) and studentForm.cleaned_data['selected'] == True:
                    studentList.append(student)
        #Check if students has already in a group
        if _validateIntegrity(request, isStudentCreatedGroup, groupForSemester,
                              course, studentList, selected_act) == False:
            return HttpResponseRedirect(
                reverse('offering:groups:groupmanage',
                        kwargs={'course_slug': course_slug}))
        #No selected members,group creating will fail.
        if not studentList:
            messages.add_message(request, messages.ERROR,
                                 "Group not created: no members selected.")
            return HttpResponseRedirect(
                reverse('offering:groups:groupmanage',
                        kwargs={'course_slug': course_slug}))

        group = Group(name=name,
                      manager=member,
                      courseoffering=course,
                      groupForSemester=groupForSemester)
        group.save()
        #LOG EVENT#
        l = LogEntry(userid=request.user.username,
                     description="created a new group %s for %s." %
                     (group.name, course),
                     related_object=group)
        l.save()

        if is_course_student_by_slug(request, course_slug):
            for activity in selected_act:
                groupMember = GroupMember(group=group,
                                          student=member,
                                          confirmed=True,
                                          activity_id=activity.id)
                groupMember.save()
                #LOG EVENT#
                l = LogEntry(
                    userid=request.user.username,
                    description=
                    "automatically became a group member of %s for activity %s."
                    % (group.name, groupMember.activity),
                    related_object=groupMember)
                l.save()

            messages.add_message(request, messages.SUCCESS, 'Group Created')
            return HttpResponseRedirect(
                reverse('offering:groups:groupmanage',
                        kwargs={'course_slug': course_slug}))

        elif is_course_staff_by_slug(request, course_slug):
            students = Member.objects.select_related('person').filter(
                offering=course, role='STUD')
            for student in students:
                studentForm = StudentForm(request.POST,
                                          prefix=student.person.userid)
                if studentForm.is_valid(
                ) and studentForm.cleaned_data['selected'] == True:
                    for activity in selected_act:
                        groupMember = GroupMember(group=group,
                                                  student=student,
                                                  confirmed=True,
                                                  activity_id=activity.id)
                        groupMember.save()
                        #LOG EVENT#
                        l = LogEntry(
                            userid=request.user.username,
                            description=
                            "added %s as a group member to %s for activity %s."
                            % (student.person.userid, group.name,
                               groupMember.activity),
                            related_object=groupMember)
                        l.save()

                    n = NewsItem(user=student.person,
                                 author=member.person,
                                 course=group.courseoffering,
                                 source_app="group",
                                 title="Added to Group",
                                 content="You have been added the group %s." %
                                 (group.name),
                                 url=reverse(
                                     'offering:groups:groupmanage',
                                     kwargs={'course_slug': course.slug}))
                    n.save()

            messages.add_message(request, messages.SUCCESS, 'Group Created')
            return HttpResponseRedirect(
                reverse('offering:groups:view_group',
                        kwargs={
                            'course_slug': course_slug,
                            'group_slug': group.slug
                        }))
        else:
            return HttpResponseForbidden()
def add_group(u, g):
    from groups.models import Group, Affiliation
    group = Affiliation(user=u, group=g)
    group.save()
    default = Affiliation(user=u, group=Group(pk='default'))
    default.save()
Example #30
0
    def test_group_submission_view(self):
        """
        test if group submission can be viewed by group member and non group member
        """
        now = datetime.datetime.now()
        _, course = create_offering()
        a1 = NumericActivity(name="Assignment 1",
                             short_name="A1",
                             status="RLS",
                             offering=course,
                             position=2,
                             max_grade=15,
                             due_date=now,
                             group=True)
        a1.save()
        a2 = NumericActivity(name="Assignment 2",
                             short_name="A2",
                             status="RLS",
                             offering=course,
                             position=1,
                             max_grade=15,
                             due_date=now,
                             group=True)
        a2.save()
        p = Person.objects.get(userid="ggbaker")
        member = Member(person=p,
                        offering=course,
                        role="INST",
                        career="NONS",
                        added_reason="UNK")
        member.save()
        c1 = URL.Component(activity=a1, title="URL Link", position=8)
        c1.save()
        c2 = Archive.Component(activity=a1,
                               title="Archive File",
                               position=1,
                               max_size=100000)
        c2.save()
        c3 = Code.Component(activity=a1,
                            title="Code File",
                            position=3,
                            max_size=2000,
                            allowed=".py")
        c3.save()

        userid1 = "0aaa0"
        userid2 = "0aaa1"
        userid3 = "0aaa2"
        for u in [userid1, userid2, userid3]:
            p = Person.objects.get(userid=u)
            m = Member(person=p,
                       offering=course,
                       role="STUD",
                       credits=3,
                       career="UGRD",
                       added_reason="UNK")
            m.save()
        m = Member.objects.get(person__userid=userid1, offering=course)
        g = Group(name="Test Group", manager=m, courseoffering=course)
        g.save()
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a1)
        gm.save()
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a2)
        gm.save()
        m = Member.objects.get(person__userid=userid2, offering=course)
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a1)
        gm.save()
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a2)
        gm.save()
        m = Member.objects.get(person__userid=userid3, offering=course)
        gm = GroupMember(group=g, student=m, confirmed=True, activity=a2)
        gm.save()

        client = Client()
        # login as "0aaa0", member of group : test_group for assignment1 and assgnment2
        client.login_user("0aaa0")

        #submission page for assignment 1
        url = reverse('offering:submission:show_components',
                      kwargs={
                          'course_slug': course.slug,
                          'activity_slug': a1.slug
                      })
        response = basic_page_tests(self, client, url)
        self.assertContains(
            response,
            "This is a group activity. You will submit on behalf of the group “Test Group”."
        )
        self.assertContains(
            response, "You haven't made a submission for this component.")