Пример #1
0
def confirm_teams(request, t):
    sorted_post = sorted(request.POST.items())
    added_teams = 0

    for i in range(0, len(sorted_post) - 1, 4):
        # Sort through the items advancing 4 at a time
        instititution_id = sorted_post[i][1]
        team_name = sorted_post[i + 1][1]
        team_name = enforce_length(team_name, 'reference', Team, request)
        use_prefix = False

        if (sorted_post[i + 2][1] == "yes"):
            use_prefix = True
        speaker_names = sorted_post[i + 3][1].split(',')

        institution = Institution.objects.get(id=instititution_id)
        if team_name and speaker_names and institution:
            extra_reference_limit = 0
            extra_short_reference_limit = 0
            if use_prefix:
                # Team references/short_references depend on institution names
                extra_reference_limit = len(institution.name)
                extra_short_reference_limit = len(institution.code)

            reference = enforce_length(team_name,
                                       'reference',
                                       Team,
                                       request,
                                       extra_limit=extra_reference_limit)
            short_reference = enforce_length(
                team_name,
                'short_reference',
                Team,
                request,
                extra_limit=extra_short_reference_limit)

            newteam = Team(institution=institution,
                           reference=reference,
                           short_reference=short_reference,
                           tournament=t,
                           use_institution_prefix=use_prefix)
            try:
                newteam.save()
                for speaker in speaker_names:
                    name = enforce_length(speaker, 'name', Speaker, request)
                    newspeaker = Speaker(name=name, team=newteam)
                    newspeaker.save()
                added_teams += 1
            except IntegrityError:
                messages.error(
                    request,
                    "Team '%s %s' Was not saved; probably because that team already exists."
                    % (institution, team_name))

    if added_teams > 0:
        messages.success(
            request, "%s Teams have been added" % int(
                (len(sorted_post) - 1) / 4))
    return render(request, 'old_importer/data_index.html')
Пример #2
0
 def _post_clean_speakers(self):
     """Validates the Speaker instances that would be created."""
     for i, name in enumerate(self.cleaned_data.get('speakers', [])):
         try:
             speaker = Speaker(name=name)
             speaker.full_clean(exclude=('team',))
         except ValidationError as errors:
             for field, e in errors: # replace field with `speakers`
                 self.add_error('speakers', e)
Пример #3
0
    def import_speakers(self):
        self.speakers = {}

        for team in self.root.findall('participants/team'):
            for speaker in team.findall('speaker'):
                speaker_obj = Speaker(
                    team=self.teams[team.get('id')],
                    name=speaker.text, gender=speaker.get('gender', ''), email=speaker.get('email', ''))
                speaker_obj.save()
                self.speakers[speaker.get('id')] = speaker_obj

                speaker_obj.categories.set([self.speaker_categories[sc] for sc in speaker.get('categories', "").split() if sc != ""])