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))
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')
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
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
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))
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)
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))
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))
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))
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
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))
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'])
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))
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))
def test_org_name(self): org_name = get_org_name() self.assertTrue(org_name)
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()
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,