8000 Reviving Lee's Refresh now (#250) · sbttc/server-client-python@ec00d79 · GitHub
[go: up one dir, main page]

Skip to content

Commit ec00d79

Browse files
author
Russell Hay
authored
Reviving Lee's Refresh now (tableau#250)
* Update Change Log * Add refresh and jobs endpoints * Fixing pycodestyle failures * Run pycodestyle on samples also * Add sample for refresh and a useful tool to get the id for datasources and workbooks * Actually checking in list.py this time * more pep8 fixes * Addressing Tyler's feedback
1 parent 87acd20 commit ec00d79

19 files changed

+226
-6
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ script:
1515
# Tests
1616
- python setup.py test
1717
# pep8 - disabled for now until we can scrub the files to make sure we pass before turning it on
18-
- pycodestyle tableauserverclient test
18+
- pycodestyle tableauserverclient test samples

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
## 0.5 (11 Sept 2017)
1+
## 0.5.1 (21 Sept 2017
2+
3+
* Fix a critical issue caused by #224 that was the result of lack of test coverage (#226)
4+
5+
## 0.5 (20 Sept 2017)
26

37
* Added revision settings to update site (#187)
48
* Added support for certified data sources (#189)

samples/create_project.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def create_project(server, project_item):
2424
print('We have already created this project: %s' % project_item.name)
2525
sys.exit(1)
2626

27+
2728
def main():
2829
parser = argparse.ArgumentParser(description='Get all of the refresh tasks available on a server')
2930
parser.add_argument('--server', '-s', required=True, help='server address')
@@ -64,5 +65,6 @@ def main():
6465
grand_child_project = TSC.ProjectItem(name='Grand Child Project', parent_id=child_project.id)
6566
grand_child_project = create_project(server, grand_child_project)
6667

68+
6769
if __name__ == '__main__':
6870
main()

samples/download_view_image.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,6 @@ def main():
6464

6565
print("View image saved to {0}".format(args.filepath))
6666

67+
6768
if __name__ == '__main__':
6869
main()

samples/explore_datasource.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,6 @@ def main():
7979
sample_datasource.tags = original_tag_set
8080
server.datasources.update(sample_datasource)
8181

82+
8283
if __name__ == '__main__':
8384
main()

samples/filter_sort_groups.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,6 @@ def main():
8787
for group in matching_groups:
8888
print(group.name)
8989

90+
9091
if __name__ == '__main__':
9192
main()

samples/list.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
####
2+
# This script demonstrates how to list all of the workbooks or datasources
3+
#
4+
# To run the script, you must have installed Python 2.7.X or 3.3 and later.
5+
####
6+
7+
import argparse
8+
import getpass
9+
import logging
10+
11+
import tableauserverclient as TSC
12+
13+
14+
def main():
15+
parser = argparse.ArgumentParser(description='Get all of the refresh tasks available on a server')
16+
parser.add_argument('--server', '-s', required=True, help='server address')
17+
parser.add_argument('--username', '-u', required=True, help='username to sign into server')
18+
parser.add_argument('--site', '-S', default=None)
19+
parser.add_argument('-p', default=None)
20+
21+
parser.add_argument('--logging-level', '-l', choices=['debug', 'info', 'error'], default='error',
22+
help='desired logging level (set to error by default)')
23+
24+
parser.add_argument('resource_type', choices=['workbook', 'datasource'])
25+
26+
args = parser.parse_args()
27+
28+
if args.p is None:
29+
password = getpass.getpass("Password: ")
30+
else:
31+
password = args.p
32+
33+
# Set logging level based on user input, or error by default
34+
logging_level = getattr(logging, args.logging_level.upper())
35+
logging.basicConfig(level=logging_level)
36+
37+
# SIGN IN
38+
tableau_auth = TSC.TableauAuth(args.username, password, args.site)
39+
server = TSC.Server(args.server, use_server_version=True)
40+
with server.auth.sign_in(tableau_auth):
41+
endpoint = {
42+
'workbook': server.workbooks,
43+
'datasource': server.datasources
44+
}.get(args.resource_type)
45+
46+
for resource in TSC.Pager(endpoint.get):
47+
print(resource.id, resource.name)
48+
49+
50+
if __name__ == '__main__':
51+
main()

samples/refresh.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
####
2+
# This script demonstrates how to use trigger a refresh on a datasource or workbook
3+
#
4+
# To run the script, you must have installed Python 2.7.X or 3.3 and later.
5+
####
6+
7+
import argparse
8+
import getpass
9+
import logging
10+
11+
import tableauserverclient as TSC
12+
13+
14+
def main():
15+
parser = argparse.ArgumentParser(description='Get all of the refresh tasks available on a server')
16+
parser.add_argument('--server', '-s', required=True, help='server address')
17+
parser.add_argument('--username', '-u', required=True, help='username to sign into server')
18+
parser.add_argument('--site', '-S', default=None)
19+
parser.add_argument('-p', default=None)
20+
21+
parser.add_argument('--logging-level', '-l', choices=['debug', 'info', 'error'], default='error',
22+
help='desired logging level (set to error by default)')
23+
24+
parser.add_argument('resource_type', choices=['workbook', 'datasource'])
25+
parser.add_argument('resource_id')
26+
27+
args = parser.parse_args()
28+
29+
if args.p is None:
30+
password = getpass.getpass("Password: ")
31+
else:
32+
password = args.p
33+
34+
# Set logging level based on user input, or error by default
35+
logging_level = getattr(logging, args.logging_level.upper())
36+
logging.basicConfig(level=logging_level)
37+
38+
# SIGN IN
39+
tableau_auth = TSC.TableauAuth(args.username, password, args.site)
40+
server = TSC.Server(args.server, use_server_version=True)
41+
with server.auth.sign_in(tableau_auth):
42+
endpoint = {
43+
'workbook': server.workbooks,
44+
'datasource': server.datasources
45+
}.get(args.resource_type)
46+
47+
refresh_func = endpoint.refresh
48+
resource = endpoint.get_by_id(args.resource_id)
49+
50+
print(refresh_func(resource))
51+
52+
53+
if __name__ == '__main__':
54+
main()

tableauserverclient/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from .namespace import NEW_NAMESPACE as DEFAULT_NAMESPACE
22
from .models import ConnectionCredentials, ConnectionItem, DatasourceItem,\
3-
GroupItem, PaginationItem, ProjectItem, ScheduleItem, \
3+
GroupItem, JobItem, PaginationItem, ProjectItem, ScheduleItem, \
44
SiteItem, TableauAuth, UserItem, ViewItem, WorkbookItem, UnpopulatedPropertyError, \
55
HourlyInterval, DailyInterval, WeeklyInterval, MonthlyInterval, IntervalItem, TaskItem, \
66
SubscriptionItem

tableauserverclient/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .exceptions import UnpopulatedPropertyError
55
from .group_item import GroupItem
66
from .interval_item import IntervalItem, DailyInterval, WeeklyInterval, MonthlyInterval, HourlyInterval
7+
from .job_item import JobItem
78
from .pagination_item import PaginationItem
89
from .project_item import ProjectItem
910
from .schedule_item import ScheduleItem

0 commit comments

Comments
 (0)
0