Skip to content

Commit 54c48ff

Browse files
authored
Merge pull request #418 from uw-it-aca/qa
Qa
2 parents 7dcf733 + 1366ae1 commit 54c48ff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1774
-2046
lines changed

myuw/dao/__init__.py

+46-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,60 @@
1+
import os
2+
from django.conf import settings
13
from restclients.dao import SWS_DAO
2-
from myuw.dao.pws import get_netid_of_current_user
4+
from userservice.user import UserService
35
from myuw.models import User
46

57

8+
def get_netid_of_current_user():
9+
return UserService().get_user()
10+
11+
612
def get_user_model():
713
user_netid = get_netid_of_current_user()
8-
914
user, created = User.objects.get_or_create(uwnetid=user_netid)
10-
1115
return user
1216

1317

1418
def is_using_file_dao():
1519
dao = SWS_DAO()._getDAO()
1620
class_name = dao.__class__.__name__
1721
return class_name == "File" or class_name == "ByWeek"
22+
23+
24+
THRIVE = "thrive"
25+
OPTIN = "optin"
26+
27+
28+
def _is_optin_user(uwnetid):
29+
return _is_netid_in_list(uwnetid, OPTIN)
30+
31+
32+
def is_fyp_thrive_viewer(uwnetid):
33+
return _is_netid_in_list(uwnetid, THRIVE)
34+
35+
36+
def _is_netid_in_list(username, user_type):
37+
if THRIVE == user_type:
38+
file_path = getattr(settings, "MYUW_MANDATORY_SWITCH_PATH", None)
39+
if not file_path:
40+
current_dir = os.path.dirname(os.path.realpath(__file__))
41+
42+
file_path = os.path.abspath(os.path.join(current_dir,
43+
"..", "data",
44+
"thrive-viewer-list.txt"))
45+
46+
else:
47+
file_path = getattr(settings, "MYUW_OPTIN_SWITCH_PATH", None)
48+
if not file_path:
49+
current_dir = os.path.dirname(os.path.realpath(__file__))
50+
51+
file_path = os.path.abspath(os.path.join(current_dir,
52+
"..", "data",
53+
"optin-list.txt"))
54+
55+
with open(file_path) as data_source:
56+
for line in data_source:
57+
if line.rstrip() == username:
58+
return True
59+
60+
return False

myuw/dao/affiliation.py

+5-71
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,20 @@
22
This module provides affiliations of the current user
33
"""
44

5-
import os
6-
import json
75
import logging
86
import traceback
97
from django.conf import settings
108
from myuw.logger.logback import log_info, log_exception
9+
from myuw.dao import is_fyp_thrive_viewer, get_netid_of_current_user
1110
from myuw.dao.schedule import get_current_quarter_schedule
12-
from myuw.dao.pws import get_netid_of_current_user
1311
from myuw.dao.gws import is_grad_student, is_student,\
1412
is_current_graduate_student, is_undergrad_student,\
1513
is_pce_student, is_student_employee, is_employee, is_faculty,\
1614
is_seattle_student, is_bothell_student, is_tacoma_student,\
1715
is_staff_employee
1816
from myuw.dao.enrollment import get_main_campus
19-
from myuw.models import UserMigrationPreference
2017

2118

22-
THRIVE = "thrive"
23-
OPTIN = "optin"
2419
logger = logging.getLogger(__name__)
2520

2621

@@ -83,6 +78,10 @@ def get_all_affiliations(request):
8378
return data
8479

8580

81+
def is_thrive_viewer():
82+
return is_fyp_thrive_viewer(get_netid_of_current_user())
83+
84+
8685
def _get_campuses_by_schedule(schedule):
8786
"""
8887
Returns a dictionary indicating the campuses that the student
@@ -164,68 +163,3 @@ def get_base_campus(request):
164163
campus = ""
165164
pass
166165
return campus
167-
168-
169-
def is_oldmyuw_user():
170-
if has_legacy_preference():
171-
return True
172-
if is_optin_user():
173-
return False
174-
if is_staff_employee():
175-
return True
176-
if is_faculty():
177-
return True
178-
if is_current_graduate_student():
179-
return True
180-
if is_undergrad_student():
181-
return False
182-
return True
183-
184-
185-
def has_legacy_preference():
186-
username = get_netid_of_current_user()
187-
188-
try:
189-
saved = UserMigrationPreference.objects.get(username=username)
190-
if saved.use_legacy_site:
191-
return True
192-
except UserMigrationPreference.DoesNotExist:
193-
return False
194-
return False
195-
196-
197-
def is_optin_user():
198-
return _is_user_in_list(
199-
get_netid_of_current_user(), OPTIN)
200-
201-
202-
def is_thrive_viewer():
203-
return _is_user_in_list(
204-
get_netid_of_current_user(), THRIVE)
205-
206-
207-
def _is_user_in_list(username, user_type):
208-
if THRIVE == user_type:
209-
file_path = getattr(settings, "MYUW_MANDATORY_SWITCH_PATH", None)
210-
if not file_path:
211-
current_dir = os.path.dirname(os.path.realpath(__file__))
212-
213-
file_path = os.path.abspath(os.path.join(current_dir,
214-
"..", "data",
215-
"thrive-viewer-list.txt"))
216-
217-
else:
218-
file_path = getattr(settings, "MYUW_OPTIN_SWITCH_PATH", None)
219-
if not file_path:
220-
current_dir = os.path.dirname(os.path.realpath(__file__))
221-
222-
file_path = os.path.abspath(os.path.join(current_dir,
223-
"..", "data",
224-
"optin-list.txt"))
225-
226-
with open(file_path) as data_source:
227-
for line in data_source:
228-
if line.rstrip() == username:
229-
return True
230-
231-
return False

myuw/dao/gws.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import logging
77
from django.conf import settings
88
from restclients.gws import GWS
9-
from myuw.dao.pws import get_netid_of_current_user
109
from myuw.logger.timer import Timer
1110
from myuw.logger.logback import log_resp_time, log_exception
11+
from myuw.dao import get_netid_of_current_user
1212

1313

1414
logger = logging.getLogger(__name__)

myuw/dao/hfs.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from restclients.hfs.idcard import get_hfs_accounts
88
from restclients.exceptions import DataFailureException
99
from myuw.logger.logback import log_exception
10-
from myuw.dao.pws import get_netid_of_current_user
10+
from myuw.dao import get_netid_of_current_user
1111

1212

1313
logger = logging.getLogger(__name__)

myuw/dao/pws.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@
66
import logging
77
from django.conf import settings
88
from restclients.pws import PWS
9-
from userservice.user import UserService
109
from myuw.logger.timer import Timer
1110
from myuw.logger.logback import log_resp_time, log_exception, log_info
12-
13-
logger = logging.getLogger(__name__)
11+
from myuw.dao import get_netid_of_current_user
1412

1513

16-
def get_netid_of_current_user():
17-
return UserService().get_user()
14+
logger = logging.getLogger(__name__)
1815

1916

2017
def _get_person_of_current_user():

myuw/dao/user.py

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import logging
2+
from myuw.models import UserMigrationPreference
3+
from myuw.dao import _is_optin_user as is_optin_user
4+
from myuw.dao import get_netid_of_current_user
5+
from myuw.dao.gws import is_staff_employee, is_student_employee,\
6+
is_undergrad_student, is_current_graduate_student, is_employee, is_faculty
7+
8+
9+
logger = logging.getLogger(__name__)
10+
11+
12+
def set_preference_to_new_myuw(uwnetid):
13+
obj, is_new = UserMigrationPreference.objects.get_or_create(
14+
username=uwnetid)
15+
obj.use_legacy_site = False
16+
obj.save()
17+
18+
19+
def set_preference_to_old_myuw(uwnetid):
20+
obj, is_new = UserMigrationPreference.objects.get_or_create(
21+
username=uwnetid)
22+
obj.use_legacy_site = True
23+
obj.save()
24+
25+
26+
def has_legacy_preference(uwnetid):
27+
try:
28+
saved = UserMigrationPreference.objects.get(username=uwnetid)
29+
if saved.use_legacy_site:
30+
return True
31+
except UserMigrationPreference.DoesNotExist:
32+
pass
33+
return False
34+
35+
36+
def has_newmyuw_preference(uwnetid):
37+
try:
38+
saved = UserMigrationPreference.objects.get(username=uwnetid)
39+
if saved and not saved.use_legacy_site:
40+
return True
41+
except UserMigrationPreference.DoesNotExist:
42+
pass
43+
return False
44+
45+
46+
def is_oldmyuw_user():
47+
uwnetid = get_netid_of_current_user()
48+
if has_legacy_preference(uwnetid):
49+
return True
50+
if is_optin_user(uwnetid) or has_newmyuw_preference(uwnetid):
51+
return False
52+
if is_staff_employee():
53+
return True
54+
if is_faculty():
55+
return True
56+
if is_current_graduate_student():
57+
return True
58+
if is_undergrad_student():
59+
return False
60+
return True

myuw/dao/uwemail.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import logging
77
from restclients.uwnetid.subscription import get_email_forwarding
88
from restclients.exceptions import DataFailureException
9-
from myuw.dao.pws import get_netid_of_current_user
9+
from myuw.dao import get_netid_of_current_user
1010

1111

1212
logger = logging.getLogger(__name__)

myuw/management/commands/check_preference.py

-29
This file was deleted.

myuw/management/commands/notice_mapping.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ class Command(BaseCommand):
2020
'4. Move the mapping file into myuw/dao/;\n' +\
2121
'5. Add and commit the notice_categorization.py'
2222

23-
args = "<spreadsheet csv path>, <outfile>"
23+
def add_arguments(self, parser):
24+
parser.add_argument('spreadsheet-csv-path')
25+
parser.add_argument('outfile')
2426

2527
def handle(self, *args, **options):
2628
try:
27-
csv_path = args[0]
28-
outfile = args[1]
29+
csv_path = options['spreadsheet-csv-path']
30+
outfile = options['outfile']
2931
output_string = "NOTICE_CATEGORIES = {\n"
3032
with open(csv_path, "rb") as f_obj:
3133
reader = csv.reader(f_obj)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
2+
<head>
3+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
4+
</head>
5+
<body>
6+
<div class="group">
7+
<span class="member" type="eff_member">currgrad</span>
8+
<div class="parent_group">
9+
<a rel="parent_group" class="group" href='/restclients/view/gws/group_sws/v2/group/uw_affiliation_graduate-grad/'>uw_affiliation_graduate-grad</a>
10+
</div>
11+
</div>
12+
<div class="status">{status}</div>
13+
</body>
14+
</html>

myuw/test/__init__.py

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from django.test.utils import override_settings
2+
from django.test.client import RequestFactory
3+
from django.contrib.auth.models import User
4+
from userservice.user import UserServiceMiddleware
5+
6+
FDAO_SWS = 'restclients.dao_implementation.sws.File'
7+
fdao_sws_override = override_settings(
8+
RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS)
9+
10+
FDAO_PWS = 'restclients.dao_implementation.pws.File'
11+
fdao_pws_override = override_settings(
12+
RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS
13+
)
14+
15+
16+
def get_request():
17+
"""
18+
mock request with UserServiceMiddleware initialization
19+
"""
20+
now_request = RequestFactory().get("/")
21+
now_request.session = {}
22+
UserServiceMiddleware().process_request(now_request)
23+
return now_request
24+
25+
26+
def get_request_with_date(date_str):
27+
now_request = get_request()
28+
if date_str:
29+
now_request.session["myuw_override_date"] = date_str
30+
return now_request
31+
32+
33+
def get_request_with_user(username, now_request=None):
34+
if now_request is None:
35+
now_request = get_request()
36+
now_request.user = get_user(username)
37+
return now_request
38+
39+
40+
def get_user(username):
41+
try:
42+
user = User.objects.get(username=username)
43+
return user
44+
except Exception as ex:
45+
user = User.objects.create_user(username, password='pass')
46+
return user
47+
48+
49+
def get_user_pass(username):
50+
return 'pass'

0 commit comments

Comments
 (0)