Пример #1
0
 def _add_to_db(self, team, conf, div, override):
     if not override:
         if not Team.objects.filter(
                 team_name=team, conference=conf, division=div).exists():
             self.g = Team(team_name=team, conference=conf, division=div)
             self.g.save()
     else:
         self.g = Team(team_name=team, conference=conf, division=div)
         self.g.save()
Пример #2
0
    def setUp(self):
        self.early_crew = Team(name='Early Crew',
                               description='Build stuff',
                               is_early_crew=True)
        self.early_crew.save()

        self.late_crew = Team(name='Late Crew',
                              description='Tear stuff down',
                              is_late_crew=True)
        self.late_crew.save()

        super(TestUserProfileChangeAttendingView, self).setUp()
Пример #3
0
def list_teams(request):
    action = request.POST.get('action')

    if action == 'create_team':
        regex = re.compile('[^a-zA-Z0-9]')
        name = regex.sub('', request.POST.get('name'))

        if len(name) > 0:
            team = Team(name=name, owner=request.user)
            team.save()

            teamuser = TeamUser(team=team, user=request.user)
            teamuser.save()

    if action == 'delete_team':
        team_id = request.POST.get('id')
        if team_id:
            team = Team.objects.get(id=team_id)
            if team and team.owner == request.user:
                team.delete()

    teams = Team.objects.filter(teamuser__user=request.user)
    context = {
        'teams': teams,
    }
    return render(request, 'teams/list.html', context)
def db_init():
    # 建立小組
    for i in range(5):
        team = Team()
        db.session.add(team)
        db.session.commit()

    # 建立使用者
    for key, value in user_list.items():
        user = User(nickname=key, account=key, password=key, team_id=value)
        db.session.add(user)
        db.session.commit()

    # 小隊帳號
    for i in range(4):
        client = User(
            nickname=team_nickname_list[i], account=team_account_list[i],
            password=team_password_list[i], team_id=i+1)
        db.session.add(client)
        db.session.commit()

    # 建立 BanCard 資料
    for i in range(4):
        ban_card = BanCard()
        db.session.add(ban_card)
        db.session.commit()

    # 建立 Domain 資料
    for i in range(8):
        domain = Domain()
        db.session.add(domain)
        db.session.commit()
Пример #5
0
    def setUp(self) -> None:
        self.user = User.objects.create_user(username='******',
                                             email='*****@*****.**',
                                             password='******')
        self.user_profile = UserProfile()
        self.user_profile.user = self.user
        self.user_profile.save()

        self.team = Team(name='Kitchen', description='Cook stuff')
        self.team.save()
Пример #6
0
    def post(self, request, **kwargs):
        """新建团队,同时调用融云接口为该团队创建一个对应的群聊

        :param kwargs:
            name: 团队名称
            description: 团队描述
            url: 团队链接
            province:
            city:
            county:
            fields: 团队领域,格式:'field1|field2'
            tags: 标签,格式:'tag1|tag2|tag3|...'
        :return: team_id: 团队id
        """
        name = kwargs.pop('name')
        fields = kwargs.pop('fields', None)
        tags = kwargs.pop('tags', None)

        # 昵称唯一性验证
        if Team.enabled.filter(name=name).count() != 0:
            abort(403, '团队名已被注册')
        # 昵称非法词验证
        if check_bad_words(name):
            abort(403, '团队名含非法词汇')

        team = Team(owner=request.user, name=name)
        team.save()

        for k in kwargs:
            setattr(team, k, kwargs[k])
        fields = fields.split('|')[:2] if fields is not None else ('', '')
        team.field1, team.field2 = fields[0].strip(), fields[1].strip()

        if tags:
            tags = tags.split('|')[:5]
            with transaction.atomic():
                team.tags.all().delete()
                order = 0
                for tag in tags:
                    tag = tag.strip()
                    if tag:
                        team.tags.create(name=tag, order=order)
                        order += 1
        team.save()

        action.create_team(request.user, team)
        request.user.score += get_score_stage(2)
        request.user.score_records.create(
            score=get_score_stage(2), type="能力", description="成功创建一个团队")
        request.user.save()
        return JsonResponse({'team_id': team.id})
Пример #7
0
    def create_team(self, **kwargs):
        kwargs = merge_args(
            dict(region=Region.EU,
                 mode=Mode.TEAM_1V1,
                 season=self.season,
                 version=Version.HOTS,
                 league=League.GOLD,
                 member0=self.player,
                 member1=None,
                 member2=None,
                 member3=None,
                 race0=Race.ZERG,
                 race1=Race.UNKNOWN,
                 race2=Race.UNKNOWN,
                 race3=Race.UNKNOWN), **kwargs)

        self.team = Team(**kwargs)
        self.team.save()
        return self.team
Пример #8
0
    def test_details(self):
        team = Team(name='Test Team', description='This is a test.')
        team.save()

        alice = User.objects.create_user('alice', '*****@*****.**', 'passwd')
        alice.save()

        bob = User.objects.create_user('bob', '*****@*****.**', 'passwd')
        bob.save()

        alice_membership = TeamMembership(team=team,
                                          member=alice,
                                          is_lead=True)
        alice_membership.save()

        bob_membership = TeamMembership(team=team, member=bob)
        bob_membership.save()

        self.assertEqual(set(team.members.all()), {alice, bob})
        self.assertEqual(list(team.leads), [alice])
Пример #9
0
def define():
    if current_user.permission_lvl < 4:
        flash('You have no permission to do this action.')
        return redirect(url_for('req.index'))

    identifier = request.args.get('id')

    if identifier:
        form = RelationshipForm(begin=Team.query.filter_by(id=identifier).first().from_team,
                                end=Team.query.filter_by(id=identifier).first().to_team,
                                team_id=identifier)
    else:
        form = RelationshipForm()

    if form.validate_on_submit():
        if not identifier:  # This is an add operation
            to_add = Team(from_team=form.begin.data, to_team=form.end.data)
            db.session.add(to_add)
            db.session.commit()
            flash('Relationship successfully added.')
            return redirect(url_for('admin.admin'))

        else:  # This is an edit operation
            to_edit = Team.query.filter_by(id=identifier).first()

            if to_edit.from_team == form.begin.data and to_edit.to_team == form.end.data:
                flash('No change was made to the database.')
                return redirect(url_for('admin.admin'))

            to_edit.from_team = form.begin.data
            to_edit.to_team = form.end.data
            db.session.commit()
            flash('Relationship successfully edited.')
            return redirect(url_for('admin.admin'))

    return render_template('admin/define.html', title='Relationship Manager', form=form)
Пример #10
0
def form_teams_view(request, spaceurl):
    member = get_user(request)
    space = Space.objects.get(url=spaceurl)
    msg = ""
    user_preferences = ""
    if member.username != space.teacher:
        return redirect('/profile_redirect/')
    setup_data = ""
    if request.method == 'POST':
        group_size_raw = request.POST.get('Group_Options', None)
        iterative_soulmates_raw = '1'
        algorithm_index_raw = request.POST.get('optradio', None)
        alpha_raw = request.POST.get('alpha')
        alpha_adjusted = float(alpha_raw) * 1000000
        alpha_adjusted = int(alpha_adjusted)
        theta_raw = request.POST.get('theta')
        theta_adjusted = float(theta_raw) * 100
        theta_adjusted = int(theta_adjusted)
        members = space.member_set.exclude(name='Account in Progress')
        number_members = members.count()

        setup_data = str(number_members) + " " + group_size_raw + " " + iterative_soulmates_raw + " " \
                     + algorithm_index_raw + " " + str(alpha_adjusted) + " " + str(theta_adjusted)

        # get input in format to store in team model
        algorithm_index = int(algorithm_index_raw)
        iterative_soulmates = iterative_soulmates_raw == "1"
        group_size = int(group_size_raw)

        # Assigns each member a rank and sets up easy lookup between usernames and rankings
        rank_to_user_dict = {}
        user_to_rank_dict = {}
        random_array = random.sample(range(0, members.count()),
                                     members.count())
        count = 0
        for member in members:
            rank = random_array[count]
            rank_to_user_dict[rank] = member.username
            user_to_rank_dict[member.username] = rank
            count += 1

        # Gets member preferences ready for the java program
        user_preferences = ""
        for member in members:
            member_data = member.username + " " + str(
                user_to_rank_dict[member.username]) + " "
            wants_any_team = False
            if Preferences.objects.filter(member=member, space=space).exists():
                finished = False
                pref_data = ""
                preferences = Preferences.objects.get(member=member,
                                                      space=space)
                preferenceArray = preferences.members_ranking.split(' ')
                for preference in preferenceArray:
                    if preference == "@myself@":
                        finished = True
                    elif preferences == "@team@":
                        wants_any_team = True
                    if preference in user_to_rank_dict and not finished:
                        pref_data += str(user_to_rank_dict[preference]) + " "
                if wants_any_team:
                    pref_data = "team " + pref_data
                else:
                    pref_data = "alone " + pref_data
                member_data += " " + pref_data
            else:
                member_data += "alone "
            user_preferences += member_data

        # Runs the team formation algorithms by passing in setup data and preference data to the Java executable
        p = Popen([
            'java', '-jar', 'JavaCode/TeamFormationAlgorithms.jar', setup_data,
            user_preferences
        ],
                  stdout=PIPE,
                  stderr=STDOUT)

        # Adds teams to the database by parsing the console output of the Java executable
        master_team = MasterTeam(space=space,
                                 iterative_soulmates=iterative_soulmates,
                                 number_of_members=group_size,
                                 algorithm_index=algorithm_index)
        master_team.save()
        space.teams_decided = False
        space.save()

        for raw_line in p.stdout:
            line = raw_line.decode("utf-8")
            if line[0:2] == 'T:':
                teammates = line[3:]
                user_list = teammates.split(" ")
                team = Team(space=space, master=master_team)
                team.save()
                for username in user_list:
                    if Member.objects.filter(username=username).exists():
                        user = Member.objects.get(username=username)
                        user.teams.add(team)
                        user.save()
                team.save()
            if line[0:2] == 'S:':
                solo_names = line[3:]
                solo_list = solo_names.split(" ")
                for username in solo_list:
                    if not username == '':
                        user = Member.objects.get(username=username)
                        team = Team(space=space, master=master_team)
                        team.save()
                        user.teams.add(team)
        master_team.save()

        return redirect("/choose_teams/" + space.url + "/")

    return render(
        request, "TeamFormation.html", {
            'member': member,
            'msg': "\"" + setup_data + "\" \"" + user_preferences + "\""
        })
 def save_teams(self, teams):
     print('Saving teams found')
     self.teams = Team.objects.bulk_create([Team(**team) for team in teams])