def subscribe_athlete(club, email, first_name, last_name): ''' Subscribe automatically a new athlete ''' from users.models import Athlete from club.models import ClubMembership, ClubInvite from helpers import nameize # Build a unique username base = '%s_%s' % (nameize(first_name), nameize(last_name)) i = 1 username = None while username is None: username = i == 1 and base or '%s_%d' % (base, i) try: Athlete.objects.get(username=username) username = None except Athlete.DoesNotExist: pass # use this username i += 1 # Check existing user defaults = { 'username': username, 'first_name': first_name, 'last_name': last_name, } user, created = Athlete.objects.get_or_create(email=email, defaults=defaults) if not created: return # Build an avatar for new user user.build_avatar() user.save() # Create athlete club membership defaults = { 'role': 'athlete', } ClubMembership.objects.get_or_create(club=club, user=user, defaults=defaults) # Create an invite for new user data = { 'sender': club.manager, 'recipient': email, 'user': user, 'club': club, 'type': 'join', } invite = ClubInvite.objects.create(**data) invite.send()
def subscribe_athlete(club, email, first_name, last_name): ''' Subscribe automatically a new athlete ''' from users.models import Athlete from club.models import ClubMembership, ClubInvite from helpers import nameize # Build a unique username base = '%s_%s' % (nameize(first_name), nameize(last_name)) i = 1 username = None while username is None: username = i == 1 and base or '%s_%d' % (base, i) try: Athlete.objects.get(username=username) username = None except Athlete.DoesNotExist: pass # use this username i += 1 # Check existing user defaults = { 'username' : username, 'first_name' : first_name, 'last_name' : last_name, } user, created = Athlete.objects.get_or_create(email=email, defaults=defaults) if not created: return # Build an avatar for new user user.build_avatar() user.save() # Create athlete club membership defaults = { 'role' : 'athlete', } ClubMembership.objects.get_or_create(club=club, user=user, defaults=defaults) # Create an invite for new user data = { 'sender' : club.manager, 'recipient' : email, 'user' : user, 'club' : club, 'type' : 'join', } invite = ClubInvite.objects.create(**data) invite.send()
def clean(self): ''' Check passwords match ''' if 'password' in self.cleaned_data and 'password_check' in self.cleaned_data: if self.cleaned_data['password'] != self.cleaned_data[ 'password_check']: raise ValidationError(_('Please repeat the same password')) # Skip on join invite if self.invite and self.invite.type == 'join': return self.cleaned_data # Add unique username if 'firstname' in self.cleaned_data and 'lastname' in self.cleaned_data: i = 2 base_name = name = nameize('%(firstname)s %(lastname)s' % self.cleaned_data) while True: try: Athlete.objects.get(username=name) name = '%s_%d' % (base_name, i) i += 1 except: break self.cleaned_data['username'] = name return self.cleaned_data
def clean(self): ''' Check passwords match ''' if 'password' in self.cleaned_data and 'password_check' in self.cleaned_data: if self.cleaned_data['password'] != self.cleaned_data['password_check']: raise ValidationError(_('Please repeat the same password')) # Skip on join invite if self.invite and self.invite.type == 'join': return self.cleaned_data # Add unique username if 'firstname' in self.cleaned_data and 'lastname' in self.cleaned_data: i = 2 base_name = name = nameize('%(firstname)s %(lastname)s' % self.cleaned_data) while True: try: Athlete.objects.get(username=name) name = '%s_%d' % (base_name, i) i += 1 except: break self.cleaned_data['username'] = name return self.cleaned_data
def save(self, *args, **kwargs): # Init slug if self.slug == '': self.slug = nameize(self.name) # Generate html self.html = markdown(self.markdown) super(Page, self).save(*args, **kwargs)
def build_identity(self, activity): # Load details details = self.get_file(activity, 'details', format_json=True) # Load or create sport try: name = details['type'] sport = Sport.objects.get(strava_name=name) except Sport.DoesNotExist, e: parent = Sport.objects.get(slug='all') # generic category sport = Sport.objects.create(name=name, slug=nameize(name), strava_name=name, parent=parent, depth=1)
def build_image(self): ''' Build a Badge image, using a source Cropped as a centered circle, with custom background ''' # Files img_dir = os.path.join(settings.HOME, 'badges/images') bg_path = os.path.join(img_dir, 'background.png') if not os.path.exists(bg_path): raise Exception('Missing background %s' % bg_path) src_path = os.path.join(img_dir, '%s/%s.jpg' % (self.category.name, nameize(self.name))) if not os.path.exists(src_path): raise Exception('Missing source image %s' % src_path) # Images config img_size = (360, 360) mask_size = (300, 300) # Draw mask mask = Image.new('L', img_size, 0) draw = ImageDraw.Draw(mask) x = (img_size[0] - mask_size[0]) / 2.0 y = (img_size[1] - mask_size[1]) / 2.0 draw.ellipse((x, y, mask_size[0] + x, mask_size[1] + y), fill=255) # Apply mask to image src = Image.open(src_path) circle = ImageOps.fit(src, mask.size, centering=(0.5, 0.5)) circle.putalpha(mask) # Composite mask & background bg = Image.open(bg_path) output = Image.alpha_composite(bg, circle) output_path = self.build_image_path() output.save(os.path.join(settings.MEDIA_ROOT, output_path)) # Save new image reference self.image = output_path self.save() return output
def save(self, *args, **kwargs): self.slug = nameize(self.name) super(Localisation, self).save(*args, **kwargs)
def save(self, *args, **kwargs): self.slug = nameize(self.name) if self.pk is not None: self.calc_completion() super(Localisation, self).save(*args, **kwargs)
def save(self, *args, **kwargs): self.slug = nameize(self.name) super(Badge, self).save(*args, **kwargs)
def save(self, *args, **kwargs): self.slug = nameize(self.name) super(Product, self).save(*args, **kwargs)