old_contents: # Copyright (C) 2014 Andrey Antukh <niwi@niwi.be>
  # Copyright (C) 2014 Jesús Espino <jespinog@gmail.com>
  # Copyright (C) 2014 David Barragán <bameda@dbarragan.com>
  # This program is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Affero General Public License as
  # published by the Free Software Foundation, either version 3 of the
  # License, or (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU Affero General Public License for more details.
  #
  # You should have received a copy of the GNU Affero General Public License
  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
  import uuid
  
  from django.core.urlresolvers import reverse
  
  from taiga.users.models import User
  from taiga.base.utils.urls import get_absolute_url
  
  
  def get_or_generate_config(project):
      config = project.modules_config.config
      if config and "github" in config:
          g_config = project.modules_config.config["github"]
      else:
          g_config = {"secret": uuid.uuid4().hex}
  
      url = reverse("github-hook-list")
      url = get_absolute_url(url)
      url = "%s?project=%s" % (url, project.id)
      g_config["webhooks_url"] = url
      return g_config
  
  
  def get_github_user(user_id):
      user = None
  
      if user_id:
          try:
              user = User.objects.get(github_id=user_id)
          except User.DoesNotExist:
              pass
  
      if user is None:
          user = User.objects.get(is_system=True, username__startswith="github")
  
      return user
  
new_contents: # Copyright (C) 2014 Andrey Antukh <niwi@niwi.be>
  # Copyright (C) 2014 Jesús Espino <jespinog@gmail.com>
  # Copyright (C) 2014 David Barragán <bameda@dbarragan.com>
  # This program is free software: you can redistribute it and/or modify
  # it under the terms of the GNU Affero General Public License as
  # published by the Free Software Foundation, either version 3 of the
  # License, or (at your option) any later version.
  #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU Affero General Public License for more details.
  #
  # You should have received a copy of the GNU Affero General Public License
  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
  import uuid
  
  from django.core.urlresolvers import reverse
  
  from taiga.users.models import User
  from taiga.users.models import AuthData
  from taiga.base.utils.urls import get_absolute_url
  
  
  def get_or_generate_config(project):
      config = project.modules_config.config
      if config and "github" in config:
          g_config = project.modules_config.config["github"]
      else:
          g_config = {"secret": uuid.uuid4().hex}
  
      url = reverse("github-hook-list")
      url = get_absolute_url(url)
      url = "%s?project=%s" % (url, project.id)
      g_config["webhooks_url"] = url
      return g_config
  
  
  def get_github_user(github_id):
      user = None
  
      if github_id:
          try:
              user = AuthData.objects.get(key="github", value=github_id).user
          except AuthData.DoesNotExist:
              pass
  
      if user is None:
          user = User.objects.get(is_system=True, username__startswith="github")
  
      return user
  
subject: Fix #2401: Github integration error