def sync_division_email_group(self, force=False): group_address = generate_email_list_address(self) group_name = generate_email_list_name(self) from ultimate.utils.google_api import GoogleAppsApi api = GoogleAppsApi() group_id = api.prepare_group_for_sync( group_name=group_name, group_id=self.division_email_group_id, group_email_address=group_address, force=force) self.division_email = group_address self.division_email_group_id = group_id success_count = 0 if Team.objects.filter(league=self).exists(): for team_member in TeamMember.objects.filter(team__league=self).order_by('user__last_name'): success_count += add_to_group( group_email_address=group_address, group_id=group_id, email_address=team_member.user.email) else: for registration in sorted(self.get_complete_registrations(), key=lambda r: r.user.last_name): success_count += add_to_group( group_email_address=group_address, group_id=group_id, email_address=registration.user.email) self.save() return success_count, group_address
def sync_division_captains_email_group(self, force=False): group_address = generate_email_list_address(self, suffix='captains') group_name = generate_email_list_name(self, suffix='Captains') from ultimate.utils.google_api import GoogleAppsApi api = GoogleAppsApi() group_id = api.prepare_group_for_sync( group_name=group_name, group_id=self.division_captains_email_group_id, group_email_address=group_address, force=force) self.division_captains_email = group_address self.division_captains_email_group_id = group_id success_count = 0 for team_member in TeamMember.objects.filter(team__league=self, captain=True).order_by('user__last_name'): success_count += add_to_group( group_email_address=group_address, group_id=group_id, email_address=team_member.user.email) self.save() return success_count, group_address
def sync_email_group(self, force=False): group_address = generate_email_list_address(self.league, team=self) group_name = generate_email_list_name(self.league, team=self) from ultimate.utils.google_api import GoogleAppsApi api = GoogleAppsApi() group_id = api.prepare_group_for_sync( group_name=group_name, group_id=self.group_id, group_email_address=group_address, force=force) self.email = group_address self.group_id = group_id success_count = 0 for team_member in self.teammember_set.all().order_by('user__last_name', 'user__first_name'): success_count += add_to_group( group_email_address=group_address, group_id=group_id, email_address=team_member.user.email) self.save() return success_count, group_address
def announcements(request): if request.method == 'POST': form = AnnoucementsForm(request.POST) user_email_address = request.POST.get('email', False) group_email_address = getattr( settings, 'ANNOUNCEMENTS_GROUP_ADDRESS', False) if form.is_valid() and user_email_address and group_email_address: success_count = add_to_group( group_email_address=group_email_address, email_address=user_email_address) if success_count: messages.success( request, 'Your email address was added successfully.') return HttpResponseRedirect(reverse('announcements')) else: messages.error( request, 'Your email address could not be added. It is possible that you are already a member.') else: messages.error( request, 'There was an error on the form you submitted.') else: form = AnnoucementsForm() return render_to_response('index/announcements.html', { 'form': form, }, context_instance=RequestContext(request))
def handle(self, *args, **options): email_address = options.get('email', None) file_path = options.get('file', None) team_id = options.get('team', None) league_id = options.get('league', None) group_address = options.get('group_address', None) force = options.get('force', None) success_count = 0 if not group_address and (email_address or file_path): self.stdout.write('group address (-l) is required with email (-e) or file (-f)') return if email_address: success_count = add_to_group(group_email_address=group_address, email_address=email_address) elif file_path: success_count = add_to_group(group_email_address=group_address, file_path=file_path) elif team_id: from ultimate.leagues.models import Team try: team = Team.objects.get(id=team_id) success_count, group_address = team.sync_email_group(force) except Team.DoesNotExist: self.stdout.write('bad team id') elif league_id: from ultimate.leagues.models import League try: league = League.objects.get(id=league_id) success_count = league.sync_email_groups(force) except League.DoesNotExist: self.stdout.write('bad league id') if group_address: self.stdout.write('{} email addresses added to {}'.format(success_count, group_address)) else: self.stdout.write('Success! Added {} email addresses.'.format(success_count))
def handle(self, *args, **options): email_address = options.get('email', None) file_path = options.get('file', None) team_id = options.get('team', None) league_id = options.get('league', None) group_address = options.get('group_address', None) force = options.get('force', None) success_count = 0 if not group_address and (email_address or file_path): raise CommandError('group address (-g) is required with email (-e) or file (-f)') if email_address: self.stdout.write(self.style.MIGRATE_HEADING('Adding email address to group:')) self.stdout.write(u'Adding {} to {}...'.format(email_address, group_address)) success_count = add_to_group(group_email_address=group_address, email_address=email_address) if success_count == 1: self.stdout.write(self.style.MIGRATE_SUCCESS('DONE')) self.stdout.write(u'Added {} to {}...'.format(email_address, group_address)) else: self.stdout.write(self.style.ERROR(' HMMM...')) self.stdout.write(self.style.ERROR('No email addresses added...')) elif file_path: self.stdout.write(self.style.MIGRATE_HEADING('Adding file to group:')) self.stdout.write(u'Adding file to {}...'.format(group_address), ending='') success_count = add_to_group(group_email_address=group_address, file_path=file_path) if success_count > 0: self.stdout.write(self.style.MIGRATE_SUCCESS('DONE')) else: self.stdout.write(self.style.ERROR(' HMMM...')) self.stdout.write(self.style.ERROR('No email addresses added...')) elif team_id: self.stdout.write(self.style.MIGRATE_HEADING('Adding team email addresses to group:')) from ultimate.leagues.models import Team try: team = Team.objects.get(id=team_id) self.stdout.write(u'Adding Team {}...'.format(team)) success_count, group_address = team.sync_email_group(force) target_count = team.size if success_count == target_count: self.stdout.write(self.style.MIGRATE_SUCCESS('SUCCESS')) self.stdout.write(self.style.MIGRATE_SUCCESS(u'Added {} of {} email addresses to {}'.format(success_count, target_count, group_address))) elif success_count > 0: self.stdout.write(self.style.ERROR('HMMM...')) self.stdout.write(self.style.ERROR(u'Added {} of {} email addresses to {}'.format(success_count, target_count, group_address))) else: self.stdout.write(self.style.ERROR('HMMM...')) self.stdout.write(self.style.ERROR('No email addresses added...')) except Team.DoesNotExist: self.stdout.write(self.style.ERROR('No team found with that id')) elif league_id: self.stdout.write(self.style.MIGRATE_HEADING('Adding division email addresses with group:')) from ultimate.leagues.models import League try: league = League.objects.get(id=league_id) self.stdout.write(u'Adding {}...'.format(league)) all_success_count, group_address, captains_success_count, captains_group_address = \ league.sync_email_groups(force) all_target_count = league.get_player_count() captains_target_count = league.get_captain_count() if all_success_count == all_target_count and captains_success_count == captains_target_count: self.stdout.write(self.style.MIGRATE_SUCCESS('SUCCESS')) self.stdout.write(self.style.MIGRATE_SUCCESS(u'Added {} of {} email addresses to {}'.format(all_success_count, all_target_count, group_address))) self.stdout.write(self.style.MIGRATE_SUCCESS(u'Added {} of {} email addresses to {}'.format(captains_success_count, captains_target_count, captains_group_address))) elif all_success_count > 0 or captains_success_count > 0: self.stdout.write(self.style.ERROR('HMMM...')) self.stdout.write(self.style.ERROR(u'Added {} of {} email addresses to {}'.format(all_success_count, all_target_count, group_address))) self.stdout.write(self.style.ERROR(u'Added {} of {} email addresses to {}'.format(captains_success_count, captains_target_count, captains_group_address))) else: self.stdout.write(self.style.ERROR('HMMM...')) self.stdout.write(self.style.ERROR('No email addresses added...')) except League.DoesNotExist: self.stdout.write(self.style.ERROR('No league division found with that id'))