示例#1
0
def index(request):
    logger = logging.getLogger(__name__)
    logger.info('this package is alive')
    s = []

    org_twitter_handle = org_name = get_org_name()

    s.append('<link rel="shortcut icon" type="image/png" '
             'href="../static/favicon.png"/>')

    api_data_dump = json.loads(
        requests.get('https://gci-leaders.netlify.com/data.json').content)
    for item in api_data_dump:
        if item['name'] == org_name:
            org_twitter_handle = item['twitter_url'].split('twitter.com/')[-1]
    if org_twitter_handle is not None:
        s.append('<a class="twitter-timeline" data-height="1000" '
                 'data-link-color="#2B7BB9" '
                 'href="https://twitter.com/{twitter_handle}">'
                 'Tweets by {twitter_handle}</a> <script async '
                 'src="https://platform.twitter.com/widgets.js" '
                 'charset="utf-8"></script>'.format(
                     twitter_handle=org_twitter_handle))

    return HttpResponse('\n'.join(s))
示例#2
0
 def setUpTestData(cls):
     # Set up non-modified objects used by all methods
     contributor = Contributor.objects.create(login='******',
                                              name='Shrikrishna Singh')
     label = Label.objects.create(name='status/STALE')
     created_at = pytz.utc.localize(parse('2016-12-13 18:11:57'))
     updated_at = pytz.utc.localize(parse('2016-12-20 06:48:23'))
     org_name = get_org_name()
     repo = org_name + '/' + org_name + '-quickstart'
     mr = MergeRequest.objects.create(number=58,
                                      repo=repo,
                                      title='Removed python 3.3 dependency',
                                      repo_id=52889504,
                                      author=contributor,
                                      created_at=created_at,
                                      updated_at=updated_at,
                                      state='merged',
                                      hoster='GitHub',
                                      ci_status=1)
     issue = IssueNumber.objects.create(number=57, repo_id=52889504)
     mr.closes_issues.add(issue)
     mr.labels.add(label)
     mr.assignees.add(contributor)
     Issue.objects.create(number=57,
                          repo=repo,
                          title='Remove the python 3.3.6 dependency',
                          repo_id=52889504,
                          author=contributor,
                          created_at=created_at,
                          updated_at=updated_at,
                          state='closed',
                          hoster='GitHub')
示例#3
0
def webservices_url(api_path):
    """
    Get API url for the webservices data.

    :param api_path: a string representing the API end_point
    :return: a url for the webservices data
    """
    webservices_path = 'webservices.' + get_org_name() + '.io/'
    url = ('https://rawgit.com/' + 'sks444/' + webservices_path + 'master/' +
           api_path + '.json')
    return url
示例#4
0
def get_organization_data():
    import_url = ('https://www.openhub.net/orgs/' + get_org_name() +
                  '.xml?api_key=' + OH_TOKEN)
    resp = requests.get(import_url)
    jsonString = json.dumps(xmltodict.parse(resp.content), indent=4)
    json_object = json.loads(jsonString)
    jdict = json_object['response']['result']['org']
    data = json.dumps(jdict)
    org = json.loads(data)

    return org
示例#5
0
def import_data(project):
    logger = logging.getLogger(__name__)
    name = project.get('name', None)

    try:
        project['org'] = get_org_name()
        (c, created) = OutsideProject.objects.get_or_create(**project)
        if created:
            c.save()
            logger.info('\nOutsideProject %s has been saved' % c)
    except Exception as ex:
        logger.error('Something went wrong saving this OutsideProject %s: %s' %
                     (name, ex))
示例#6
0
 def setUpTestData(cls):
     # Set up non-modified objects used by all methods
     contributor = Contributor.objects.create(login='******')
     created_at = pytz.utc.localize(parse('2016-12-13 17:45:38'))
     updated_at = pytz.utc.localize(parse('2017-12-21 00:01:23'))
     org_name = get_org_name()
     repo = org_name + '/' + org_name + '-quickstart'
     Issue.objects.create(number=57,
                          repo=repo,
                          title='Remove the python 3.3.6 dependency',
                          repo_id=52889504,
                          author=contributor,
                          created_at=created_at,
                          updated_at=updated_at,
                          state='closed',
                          hoster='GitHub')
     IssueNumber.objects.create(number=57, repo_id=52889504)
示例#7
0
def activity_json(request):

    org_name = get_org_name()

    # URL to grab all issues from
    issues_url = 'http://' + org_name + '.github.io/gh-board/issues.json'

    content = requests.get(issues_url)
    try:
        parsed_json = content.json()
    except json.JSONDecodeError:
        return HttpResponse('{}')

    real_data = Scraper(parsed_json['issues'], datetime.datetime.today())
    real_data = real_data.get_data()

    return HttpResponse(json.dumps(real_data))
示例#8
0
def unassigned_issues_activity_json(request):
    try:
        GH_TOKEN = get_api_key('GH')
    except Exception:
        return HttpResponse('[]')
    org_name = get_org_name()
    org_repo_name = org_name
    # Here 'org_repo_name' is the name of repository of a organization.
    # (assumed here, that name of repository is same as the organization name.)
    # But you can change 'org_repo_name' as per your requirement.
    repo_name = org_name + '/' + org_repo_name
    # 'repo_name' is a full name of repository e.g. `fossasia/susi_server`
    # which further used for query (assuming here 'org_name' is different from
    # 'org_repo_name')
    repo = GitHubRepository(GitHubToken(GH_TOKEN), repo_name)
    mr_requests = repo.merge_requests
    final_list = run(mr_requests)
    return HttpResponse(json.dumps(final_list))
示例#9
0
def import_data(contributor):
    logger = logging.getLogger(__name__)
    name = contributor.get('name', None)

    try:
        (cr, create) = ContributionsToPortfolioProject.objects.get_or_create(
            **contributor['contributions_to_portfolio_projects'])
        if create:
            cr.save()
        contributor['contributions_to_portfolio_projects'] = cr
        contributor['org'] = get_org_name()
        (c, created) = OutsideCommitter.objects.get_or_create(**contributor)
        if created:
            c.save()
            logger.info('\nOutsideCommitter %s has been saved' % name)
    except Exception as ex:
        logger.error(
            'Something went wrong saving this OutsideCommitter %s: %s' %
            (name, ex))
示例#10
0
def get_data(for_what):
    n = 100
    data_list = []
    logger = logging.getLogger(__name__)
    for i in range(1, n):
        import_url = ('https://www.openhub.net/orgs/' + get_org_name() + '/' +
                      for_what + '.xml?api_key=' + OH_TOKEN + '&page=' +
                      str(i))
        try:
            resp = requests.get(import_url)
            jsonString = json.dumps(xmltodict.parse(resp.content), indent=4)
            json_object = json.loads(jsonString)
        except Exception as ex:
            logger.error(ex)
            break
        if for_what == 'affiliated_committers':
            try:
                data = get_affiliated_committers_data(json_object)
            except Exception as ex:
                logger.error(ex)
                break
        elif for_what == 'outside_committers':
            try:
                data = get_outside_committers_data(json_object)
            except Exception as ex:
                logger.error(ex)
                break
        elif for_what == 'outside_projects':
            try:
                data = get_outside_projects_data(json_object)
            except Exception as ex:
                logger.error(ex)
                break
        elif for_what == 'projects':
            try:
                data = get_portfolio_projects_data(json_object)
            except Exception as ex:
                logger.error(ex)
                break
        data_list = data_list + data
    return data_list
示例#11
0
def inactive_issues_json(request):
    try:
        GH_TOKEN = get_api_key('GH')
    except Exception:
        return HttpResponse('[]')
    g1 = Github(GH_TOKEN)
    org_name = get_org_name()
    org = g1.get_organization(org_name)
    repo = org.get_repo(org_name)
    issues = repo.get_issues()
    issues_list = []
    for myissue in issues:
        labels = []
        for mylabel in myissue.labels:
            labels.append(mylabel.name)
        if 'status/blocked' not in labels:
            if myissue.state == 'open' and myissue.pull_request is None:
                issues_list.append(myissue)

    final_list = run(issues_list)
    return HttpResponse(json.dumps(final_list))
示例#12
0
class LatestTasksFeed(Feed):
    title = 'GCI tasks feed'
    link = get_deploy_url() + '/gci/tasks/rss.xml'
    description = 'GCI tasks ordered by modification time.'
    author_name = get_org_name()
    author_link = get_deploy_url()

    def items(self):
        yaml = YAML()
        with open(os.path.join('_site', 'tasks.yaml')) as f:
            res = list(yaml.load(f).values())

        res.sort(key=lambda x: x['last_modified'], reverse=True)

        return res

    def item_title(self, item):
        return item['name']

    def item_description(self, item):
        desc = item['description']
        if item['external_url']:
            desc += '\n\nExternal URL: [{url}]({url})'.format(
                url=item['external_url'])
        return markdown2.markdown(desc)

    def item_link(self, item):
        return 'https://codein.withgoogle.com/tasks/' + str(item['id'])

    def item_pubdate(self, item):
        return dateutil.parser.parse(item['last_modified'])

    def item_updateddate(self, item):
        return dateutil.parser.parse(item['last_modified'])

    def item_author_name(self):
        return self.author_name

    def item_categories(self, item):
        return tuple(item['tags'])
示例#13
0
def import_data(project):
    logger = logging.getLogger(__name__)
    name = project.get('name', None)

    try:
        (cr, create) = PortfolioProjectActivity.objects.get_or_create(
            **project['twelve_mo_activity_and_year_on_year_change']
            )
        if create:
            cr.save()
            project['twelve_mo_activity_and_year_on_year_change'] = cr
            project['org'] = get_org_name()
        (c, created) = PortfolioProject.objects.get_or_create(
            **project
            )
        if created:
            c.save()
            logger.info('\nPortfolioProject %s has been saved' % name)
    except Exception as ex:
        logger.error(
            'Something went wrong saving this PortfolioProject %s: %s'
            % (name, ex))
示例#14
0
def import_data(affiliator):
    logger = logging.getLogger(__name__)
    name = affiliator.get('name', None)

    try:
        (cr1, create1) = MostCommit.objects.get_or_create(
            **affiliator['most_commits'])
        if create1:
            cr1.save()
        (cr2, create2) = MostRecentCommit.objects.get_or_create(
            **affiliator['most_recent_commit'])
        if create2:
            cr2.save()
        affiliator['most_commits'] = cr1
        affiliator['most_recent_commit'] = cr2
        affiliator['org'] = get_org_name()
        (c, created) = AffiliatedCommitter.objects.get_or_create(**affiliator)
        if created:
            c.save()
            logger.info('\nAffiliatedCommitter %s has been saved' % c)
    except Exception as ex:
        logger.error(
            '\n\nSomething went wrong saving this AffiliatedCommitter %s: %s' %
            (name, ex))
示例#15
0
 def test_org_name(self):
     org_name = get_org_name()
     self.assertTrue(org_name)
示例#16
0
from django.core.management import call_command
from django.test import TestCase

from data.issues import import_issue
from community.git import get_org_name
from data.merge_requests import import_mr
from gamification.models import (
    Level,
    Badge,
    Participant,
    BadgeActivity,
)
from data.contrib_data import import_data
from data.newcomers import active_newcomers

ORG_NAME = get_org_name()


class CreateConfigDataTest(TestCase):
    @classmethod
    def setUpTestData(cls):
        call_command('create_config_data')

    def test_command_create_config_data(self):
        levels = Level.objects.all()

        # There must be 9 levels created
        # as there are 9 levels listed in file config.py
        self.assertEquals(levels.count(), 8)

        b_activities = BadgeActivity.objects.all()
示例#17
0
import logging
import pprint

from gci.gitorg import get_issue
from gci.task import lookup_url

from community.git import get_org_name

org_name = get_org_name()

unsuitable_labels = {
    'status/blocked',
    'status/invalid',
    'status/needs info',
    'status/needs design',
    'status/needs discussion',
}

difficulty_level_names = ('newcomer', 'low', 'medium', 'high', 'extreme')

MAX_TAGS = 5

# 1: 'Code',
# 2: Design (User Interface, Artwork, etc)
# 3: Documentation & Training
# 4: Quality Assurance
# 5: Outreach & Research

CATEGORY_TAGS = {
    'design': 2,
    'ui': 2,