Ejemplo n.º 1
0
def bitbucket_username_category_watched(request, username, category):
    """has all bitbucket repos and the latest 30 events for a username with a specific category"""
    owned = False
    username = urllib.unquote(username)
    category = urllib.unquote(category)
    category = category.lower()
    user = request.user
    try:
        bitbucket_username = user.social_auth.get(
            provider='bitbucket').extra_data['username']
        if username == bitbucket_username:
            bitbucket_provider = BitbucketProvider(user)
            watched_filtered, repository_user = bitbucket_provider.retrieve_watched_category_repositories(
                username, category)
            repository_user.save()
            if len(watched_filtered) == 0:
                watched = bitbucket_provider.get_repositories(
                    username, "starred")
                for repo in watched:
                    update = False
                    try:
                        repository = Repository.objects.get(
                            host_slug='bitbucket/' + repo['owner'].lower() +
                            '/' + repo['name'].lower())
                    except ObjectDoesNotExist:
                        update = True
                        repository = Repository()
                    if update or (datetime.now() - repository.last_modified
                                  ) > timedelta(days=1):
                        bitbucket_provider.create_or_update_repository_details(
                            repo, repository)
                        if not repository.private:
                            repository.save()
                    if repository.language == category:
                        watched_filtered.append(repository)
                RepositoryCategory.objects.get_or_create(name=category)
                watched_filtered.sort(key=lambda x: x.watchers, reverse=True)
            repo_events = bitbucket_provider.get_repositories_events(
                watched_filtered)
            return render_to_response(
                'bitbucket_username_category_watched.html', {
                    'username': username,
                    'watched': watched_filtered,
                    'category': category,
                    'repo_events': repo_events,
                    'owned': owned
                },
                context_instance=RequestContext(request))
    except ObjectDoesNotExist:
        pass
    res = HttpResponse("Unauthorized")
    res.status_code = 401
    return res
Ejemplo n.º 2
0
def bitbucket_username_category_watched(request,username,category):
    """has all bitbucket repos and the latest 30 events for a username with a specific category"""
    owned = False
    username = urllib.unquote(username)
    category = urllib.unquote(category)
    category = category.lower()
    user = request.user
    try:
        bitbucket_username = user.social_auth.get(provider='bitbucket').extra_data['username']
        if username == bitbucket_username:
            bitbucket_provider = BitbucketProvider(user)
            watched_filtered, repository_user = bitbucket_provider.retrieve_watched_category_repositories(username, category)
            repository_user.save()
            if len(watched_filtered) == 0:
                watched = bitbucket_provider.get_repositories(username, "starred")
                for repo in watched:
                    update = False
                    try:
                        repository = Repository.objects.get(host_slug= 'bitbucket/'+repo['owner'].lower() + '/' + repo['name'].lower())
                    except ObjectDoesNotExist:
                        update = True
                        repository = Repository()
                    if update or (datetime.now() - repository.last_modified) > timedelta(days = 1):
                        bitbucket_provider.create_or_update_repository_details(repo, repository)
                        if not repository.private:
                            repository.save()
                    if repository.language == category:
                        watched_filtered.append(repository)
                RepositoryCategory.objects.get_or_create(name = category)
                watched_filtered.sort(key=lambda x: x.watchers, reverse = True)
            repo_events = bitbucket_provider.get_repositories_events(watched_filtered)
            return render_to_response('bitbucket_username_category_watched.html', {'username': username, 'watched':watched_filtered, 'category':category, 'repo_events':repo_events,'owned':owned},context_instance=RequestContext(request))
    except ObjectDoesNotExist:
        pass
    res = HttpResponse("Unauthorized")
    res.status_code = 401
    return res
Ejemplo n.º 3
0
def authed_category_watched(request,category):
    """has all github repos and the latest 30 events for a username with a specific category"""
    repo_link_type, _ = LinkType.objects.get_or_create(name = "starred")
    owned = False
    category = urllib.unquote(category).lower()
    github_watched_filtered = []
    bitbucket_watched_filtered = []
    github_repo_events = []
    bitbucket_repo_events = []
    user = request.user
    repository_user = None
    github_username = None
    bitbucket_username = None
    bitbucket_authed = True
    github_authed = True
    watched_filtered = []
    try:
        github_username = user.social_auth.get(provider='github').extra_data['username']
        github_provider = GithubProvider(user)
        github_watched_filtered, github_repository_user = github_provider.retrieve_category_repositories(github_username, category, "starred")
        watched_filtered.extend(github_watched_filtered)
        github_repository_user.save()
        if len(github_watched_filtered) == 0:
            watched = github_provider.get_repositories(github_username, "starred")

            count = 0
            for repo in watched:
                update = False
                try:
                    repository = Repository.objects.get(host_slug= 'github/'+repo['owner'].lower() + '/' + repo['name'].lower())
                except ObjectDoesNotExist:
                    update = True
                    repository = Repository()
                if update or (datetime.now() - repository.last_modified) > timedelta(days = 1):
                    repository = github_provider.create_or_update_repository_details(repo, repository)
                    if not repository.private:
                        repository.save()
                if repository.language == category:
                    github_watched_filtered.append(repository)
                    if not repository.private:
                        count += 1
                if not repository.private:
                    RepositoryUserRepositoryLink.objects.get_or_create(user = repository_user, repository = repository, link_type = repo_link_type)
            watched_filtered.extend(github_watched_filtered)
            watched_filtered.sort(key=lambda x: x.watchers, reverse = True)
            RepositoryCategory.objects.get_or_create(name = category.lower())
            github_repository_user.starred = count
            github_repository_user.save()


        # Get repository events
        github_repo_events = github_provider.get_repositories_events(github_watched_filtered)
        for github_repo_event in github_repo_events:
            github_repo_event['host'] = 'github'
            github_repo_event['created_on'] = dateutil.parser.parse(github_repo_event['created_at'])
    except ObjectDoesNotExist:
        github_authed = False

    user = request.user
    try:
        bitbucket_username = user.social_auth.get(provider='bitbucket').extra_data['username']
        bitbucket_provider = BitbucketProvider(user)
        bitbucket_watched_filtered, bitbucket_repository_user = bitbucket_provider.retrieve_watched_category_repositories(bitbucket_username, category)
        watched_filtered.extend(bitbucket_watched_filtered)
        bitbucket_repository_user.save()
        if len(bitbucket_watched_filtered) == 0:
            watched = bitbucket_provider.get_watched_repositories(bitbucket_username)
            for repo in watched:
                update = False
                try:
                    repository = Repository.objects.get(host_slug= 'bitbucket/'+repo['owner'].lower() + '/' + repo['name'].lower())
                except ObjectDoesNotExist:
                    update = True
                    repository = Repository()
                if update or (datetime.now() - repository.last_modified) > timedelta(days = 1):
                    bitbucket_provider.create_or_update_repository_details(repo, repository)
                    if not repository.private:
                        repository.save()
                if repository.language == category:
                    bitbucket_watched_filtered.append(repository)
            RepositoryCategory.objects.get_or_create(name = category)
            watched_filtered.extend(bitbucket_watched_filtered)
            watched_filtered.sort(key=lambda x: x.watchers, reverse = True)
        bitbucket_repo_events = bitbucket_provider.get_repositories_events(bitbucket_watched_filtered)
        for bitbucket_repo_event in bitbucket_repo_events:
            bitbucket_repo_event['host'] = 'bitbucket'
            bitbucket_repo_event['created_on'] = dateutil.parser.parse(bitbucket_repo_event['utc_created_on'])
    except ObjectDoesNotExist:
        bitbucket_authed = False
    repo_events = sorted(github_repo_events + bitbucket_repo_events,key=itemgetter('created_on'), reverse = True)[:30]
    if bitbucket_authed or github_authed:
        return render_to_response('username_category_watched.html', {'github_username': github_username,'github_authed': github_authed,'bitbucket_username':bitbucket_username, 'bitbucket_authed':bitbucket_authed, 'watched':watched_filtered, 'category':category, 'repo_events':repo_events,'owned':owned},context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect(reverse('repowatcher.main.views.authed'))
Ejemplo n.º 4
0
def authed_category_watched(request, category):
    """has all github repos and the latest 30 events for a username with a specific category"""
    repo_link_type, _ = LinkType.objects.get_or_create(name="starred")
    owned = False
    category = urllib.unquote(category).lower()
    github_watched_filtered = []
    bitbucket_watched_filtered = []
    github_repo_events = []
    bitbucket_repo_events = []
    user = request.user
    repository_user = None
    github_username = None
    bitbucket_username = None
    bitbucket_authed = True
    github_authed = True
    watched_filtered = []
    try:
        github_username = user.social_auth.get(
            provider='github').extra_data['username']
        github_provider = GithubProvider(user)
        github_watched_filtered, github_repository_user = github_provider.retrieve_category_repositories(
            github_username, category, "starred")
        watched_filtered.extend(github_watched_filtered)
        github_repository_user.save()
        if len(github_watched_filtered) == 0:
            watched = github_provider.get_repositories(github_username,
                                                       "starred")

            count = 0
            for repo in watched:
                update = False
                try:
                    repository = Repository.objects.get(
                        host_slug='github/' + repo['owner'].lower() + '/' +
                        repo['name'].lower())
                except ObjectDoesNotExist:
                    update = True
                    repository = Repository()
                if update or (datetime.now() -
                              repository.last_modified) > timedelta(days=1):
                    repository = github_provider.create_or_update_repository_details(
                        repo, repository)
                    if not repository.private:
                        repository.save()
                if repository.language == category:
                    github_watched_filtered.append(repository)
                    if not repository.private:
                        count += 1
                if not repository.private:
                    RepositoryUserRepositoryLink.objects.get_or_create(
                        user=repository_user,
                        repository=repository,
                        link_type=repo_link_type)
            watched_filtered.extend(github_watched_filtered)
            watched_filtered.sort(key=lambda x: x.watchers, reverse=True)
            RepositoryCategory.objects.get_or_create(name=category.lower())
            github_repository_user.starred = count
            github_repository_user.save()

        # Get repository events
        github_repo_events = github_provider.get_repositories_events(
            github_watched_filtered)
        for github_repo_event in github_repo_events:
            github_repo_event['host'] = 'github'
            github_repo_event['created_on'] = dateutil.parser.parse(
                github_repo_event['created_at'])
    except ObjectDoesNotExist:
        github_authed = False

    user = request.user
    try:
        bitbucket_username = user.social_auth.get(
            provider='bitbucket').extra_data['username']
        bitbucket_provider = BitbucketProvider(user)
        bitbucket_watched_filtered, bitbucket_repository_user = bitbucket_provider.retrieve_watched_category_repositories(
            bitbucket_username, category)
        watched_filtered.extend(bitbucket_watched_filtered)
        bitbucket_repository_user.save()
        if len(bitbucket_watched_filtered) == 0:
            watched = bitbucket_provider.get_watched_repositories(
                bitbucket_username)
            for repo in watched:
                update = False
                try:
                    repository = Repository.objects.get(
                        host_slug='bitbucket/' + repo['owner'].lower() + '/' +
                        repo['name'].lower())
                except ObjectDoesNotExist:
                    update = True
                    repository = Repository()
                if update or (datetime.now() -
                              repository.last_modified) > timedelta(days=1):
                    bitbucket_provider.create_or_update_repository_details(
                        repo, repository)
                    if not repository.private:
                        repository.save()
                if repository.language == category:
                    bitbucket_watched_filtered.append(repository)
            RepositoryCategory.objects.get_or_create(name=category)
            watched_filtered.extend(bitbucket_watched_filtered)
            watched_filtered.sort(key=lambda x: x.watchers, reverse=True)
        bitbucket_repo_events = bitbucket_provider.get_repositories_events(
            bitbucket_watched_filtered)
        for bitbucket_repo_event in bitbucket_repo_events:
            bitbucket_repo_event['host'] = 'bitbucket'
            bitbucket_repo_event['created_on'] = dateutil.parser.parse(
                bitbucket_repo_event['utc_created_on'])
    except ObjectDoesNotExist:
        bitbucket_authed = False
    repo_events = sorted(github_repo_events + bitbucket_repo_events,
                         key=itemgetter('created_on'),
                         reverse=True)[:30]
    if bitbucket_authed or github_authed:
        return render_to_response('username_category_watched.html', {
            'github_username': github_username,
            'github_authed': github_authed,
            'bitbucket_username': bitbucket_username,
            'bitbucket_authed': bitbucket_authed,
            'watched': watched_filtered,
            'category': category,
            'repo_events': repo_events,
            'owned': owned
        },
                                  context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect(reverse('repowatcher.main.views.authed'))