コード例 #1
0
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()
コード例 #2
0
ファイル: tasks.py プロジェクト: La0/coach
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()
コード例 #3
0
ファイル: forms.py プロジェクト: paulrsilva/coach
    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
コード例 #4
0
ファイル: forms.py プロジェクト: La0/coach
  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
コード例 #5
0
ファイル: models.py プロジェクト: Flogerbe/coach
    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)
コード例 #6
0
ファイル: models.py プロジェクト: La0/coach
  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)
コード例 #7
0
ファイル: strava.py プロジェクト: La0/coach
  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)
コード例 #8
0
  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)
コード例 #9
0
  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
コード例 #10
0
ファイル: models.py プロジェクト: La0/beers
 def save(self, *args, **kwargs):
   self.slug = nameize(self.name)
   super(Localisation, self).save(*args, **kwargs)
コード例 #11
0
ファイル: models.py プロジェクト: La0/beers
 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)
コード例 #12
0
ファイル: models.py プロジェクト: La0/beers
 def save(self, *args, **kwargs):
   self.slug = nameize(self.name)
   super(Badge, self).save(*args, **kwargs)
コード例 #13
0
ファイル: models.py プロジェクト: La0/beers
 def save(self, *args, **kwargs):
   self.slug = nameize(self.name)
   super(Product, self).save(*args, **kwargs)