Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 57fa599

Browse filesBrowse files
committed
pylint fixed
1 parent edfa71f commit 57fa599
Copy full SHA for 57fa599

File tree

Expand file treeCollapse file tree

10 files changed

+91
-35
lines changed
Filter options
Expand file treeCollapse file tree

10 files changed

+91
-35
lines changed

‎__pycache__/app.cpython-311.pyc

Copy file name to clipboard
0 Bytes
Binary file not shown.

‎__pycache__/settings.cpython-311.pyc

Copy file name to clipboard
631 Bytes
Binary file not shown.

‎models/__init__.py

Copy file name to clipboardExpand all lines: models/__init__.py
Whitespace-only changes.
203 Bytes
Binary file not shown.
1.67 KB
Binary file not shown.

‎models/filter.py

Copy file name to clipboard
+64-20Lines changed: 64 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,55 @@
1-
# Filter Model
2-
# models/filter.py
3-
import requests
1+
"""
2+
Filter Model
3+
4+
This module provides functionality for searching repositories on GitHub based on various filters.
5+
6+
Attributes:
7+
None
8+
9+
Methods:
10+
search_repositories_by_topic(language, topic, min_rating, token):
11+
Searches repositories on GitHub based on the specified filters.
12+
get_next_page_url(headers): Retrieves the URL of the next page in the paginated response.
13+
14+
"""
415
import json
16+
import requests
17+
518

19+
class Filter:
20+
"""
21+
Filter Model
622
7-
class Filter(object):
23+
This class provides functionality for searching repositories on GitHub based on various filters.
24+
25+
Attributes:
26+
None
27+
28+
Methods:
29+
search_repositories_by_topic(language, topic, min_rating, token):
30+
Searches repositories on GitHub based on the specified filters.
31+
get_next_page_url(headers): Retrieves the URL of the next page in the paginated response.
32+
33+
"""
834

935
def __init__(self):
1036
pass
1137

12-
def search_repositories_by_topic(language, topic, min_rating, token):
38+
@staticmethod
39+
def search_repositories(language, topic, min_rating, token):
40+
"""
41+
Search repositories on GitHub based on the specified filters.
42+
43+
Args:
44+
language (str): The programming language to filter by.
45+
topic (str): The topic or tag to filter by.
46+
min_rating (int): The minimum rating (stars) a repository should have.
47+
token (str): The GitHub API token for authentication.
48+
49+
Returns:
50+
list: A list of repository objects matching the specified filters.
51+
52+
"""
1353
headers = {
1454
'Authorization': f'Token {token}',
1555
'Accept': 'application/vnd.github.v3+json'
@@ -27,12 +67,12 @@ def search_repositories_by_topic(language, topic, min_rating, token):
2767
repositories = []
2868

2969
while url:
30-
response = requests.get(url, headers=headers)
70+
response = requests.get(url, headers=headers, timeout=10)
3171
response_json = json.loads(response.text)
3272

3373
if response.status_code == 200:
3474
repositories.extend(response_json['items'])
35-
url = get_next_page_url(response.headers)
75+
url = Filter.get_next_page_url(response.headers)
3676
else:
3777
print(
3878
f"Request failed with status code {response.status_code}")
@@ -41,18 +81,22 @@ def search_repositories_by_topic(language, topic, min_rating, token):
4181
return repositories
4282

4383

44-
"""
45-
method returns the links of pagination
46-
Args: header information including token
47-
Returns: url of each page
48-
"""
84+
@staticmethod
85+
def get_next_page_url(headers):
86+
"""
87+
Retrieve the URL of the next page in the paginated response.
88+
89+
Args:
90+
headers (dict): The header information of the response.
4991
92+
Returns:
93+
str: The URL of the next page, or None if there is no next page.
5094
51-
def get_next_page_url(headers):
52-
link_header = headers.get('Link')
53-
if link_header:
54-
links = link_header.split(', ')
55-
for link in links:
56-
if 'rel="next"' in link:
57-
return link[link.index('<')+1:link.index('>')]
58-
return None
95+
"""
96+
link_header = headers.get('Link')
97+
if link_header:
98+
links = link_header.split(', ')
99+
for link in links:
100+
if 'rel="next"' in link:
101+
return link[link.index('<')+1:link.index('>')]
102+
return None

‎routes/__init__.py

Copy file name to clipboardExpand all lines: routes/__init__.py
Whitespace-only changes.
203 Bytes
Binary file not shown.
333 Bytes
Binary file not shown.

‎routes/index.py

Copy file name to clipboardExpand all lines: routes/index.py
+27-15Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1-
# routes/index.py
2-
# route to templates page
3-
from flask import (Flask, url_for,
4-
render_template, Blueprint,
5-
request, TemplateNotFound,
6-
abort, current_app)
1+
"""
2+
routes/index.py
3+
4+
This module defines the routes for the Flask application.
5+
It contains routes for the index page and the search page.
6+
7+
Routes:
8+
- index: Renders the index page.
9+
- search: Handles the search form submission and renders the result page.
10+
11+
"""
12+
13+
from flask import (render_template, Blueprint,
14+
request, current_app)
715
from models.filter import Filter
816

917
# create and configure the blueprint
@@ -17,24 +25,28 @@
1725

1826
@index_bp.route('/', methods=['GET'])
1927
def index():
20-
try:
21-
# Get the search parameters from query parameters
22-
# topic = request.args.get('topic')
23-
# rating = request.args.get('rating')
28+
"""
29+
Renders the index page.
2430
25-
return render_template('index.html')
26-
except TemplateNotFound:
27-
abort(404)
31+
Returns:
32+
The rendered index page template.
33+
"""
34+
return render_template('index.html')
2835

2936

3037
# route to the search page
3138
@index_bp.route('/repos/', methods=['POST'])
3239
def search():
33-
# Get the selected values from the form
40+
"""
41+
Handles the search form submission and renders the result page.
42+
43+
Returns:
44+
The rendered result page template with the search parameters and filtered repositories.
45+
"""
3446
topic = request.form.get('topic')
3547
rating = request.form.get('rating')
3648
language = request.form.get('language')
37-
repositories = Filter.search_repositories_by_topic(
49+
repositories = Filter.search_repositories(
3850
language, topic, rating, current_app.config['TOKEN'])
3951
filtered_repos = []
4052
if repositories is not None:

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.