diff --git a/requirements.txt b/requirements.txt index 7fa77a0..e17f0f4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ # For server. # ------------------------------- -uwsgi==2.0.* -dj-database-url==0.3.* +uwsgi==2.0.14 +dj-database-url==0.4.1 # this file in this path is required for python buildpack. diff --git a/requirements/base.txt b/requirements/base.txt index 4220fec..24daf7a 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,6 +1,6 @@ # python==3.5.0 -Django==1.8.11 -django-braces==1.8.1 +Django==1.10.4 +django-braces==1.10.0 # Utilities # -------------------------------------- @@ -8,37 +8,37 @@ unicode-slugify==0.1.3 # Persistent Store # -------------------------------------- -psycopg2==2.6.1 +psycopg2==2.6.2 # Rest FrameWork #--------------------------------------- -djangorestframework==3.2.4 -django-filter==0.13.0 -django-allauth==0.25.2 +djangorestframework==3.5.3 +django-filter==1.0.1 +django-allauth==0.29.0 # MarkDown Support # --------------------------------------- -Markdown==2.6.5 +Markdown==2.6.7 # Sample Data # ----------------------------------------- -fake-factory==0.5.7 +fake-factory==9999.9.9 # Twitter Connect # --------------------------------------- -twython==3.3.0 +twython==3.4.0 #AutoComplete #------------------------------------------ -django-autocomplete-light==3.1.3 +django-autocomplete-light==3.2.1 # Image # ---------------------------------------- -Pillow==3.1.1 +Pillow==3.4.2 # Dateutils #----------------------------------------- -python-dateutil==2.5.0 +python-dateutil==2.6.0 # Captcha #----------------------------------------- @@ -46,6 +46,6 @@ django-simple-math-captcha==1.0.7 # Celery # -------------------------------------------------- -celery==3.1.23 +celery>=3.1.15,<4.0 django-celery==3.1.17 redis==2.10.5 diff --git a/requirements/dev.txt b/requirements/dev.txt index df54c33..b8f5dd9 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -3,18 +3,18 @@ # Debugging # ------------------------------------------------- -django-extensions==1.5.2 -ipython==4.0.0 +django-extensions==1.7.5 +ipython==5.1.0 # Testing # ------------------------------------------------- -pytest-django==2.9.* -pytest-cov==2.2.* -pytest-splinter==1.7.* -factory_boy==2.5.* -pdbpp==0.8.* -fancycompleter==0.4 +pytest-django==3.1.2 +pytest-cov==2.4.0 +pytest-splinter==1.8.1 +factory-boy==2.8.1 +pdbpp==0.8.3 +fancycompleter==0.7 -coverage==4.* -flake8==2.4.* +coverage==4.3.1 +flake8==3.2.1 diff --git a/settings/common.py b/settings/common.py index 95ff05a..c6bd4d6 100644 --- a/settings/common.py +++ b/settings/common.py @@ -137,7 +137,7 @@ 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.media', - 'django.core.context_processors.request', + # 'django.core.context_processors.request', 'wye.base.context_processors.site_info', ], }, diff --git a/tests/functional/test_edit_profile.py b/tests/functional/test_edit_profile.py index 8f78f6b..7e8d29b 100644 --- a/tests/functional/test_edit_profile.py +++ b/tests/functional/test_edit_profile.py @@ -12,7 +12,7 @@ def test_signup_college_poc_flow(base_url, browser, outbox): user = f.create_user() user.set_password('123123') user.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') @@ -94,7 +94,7 @@ def test_signup_tutor_flow(base_url, browser, outbox): user = f.create_user() user.set_password('123123') user.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') diff --git a/tests/functional/test_workshops_flow.py b/tests/functional/test_workshops_flow.py index 3daedd3..1f2516c 100644 --- a/tests/functional/test_workshops_flow.py +++ b/tests/functional/test_workshops_flow.py @@ -13,7 +13,7 @@ def test_workshop_wrong_action(base_url, browser, outbox): user = f.create_user() user.set_password('123123') user.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') @@ -42,7 +42,7 @@ def test_workshop_wrong_action(base_url, browser, outbox): workshop.status = WorkshopStatus.REQUESTED workshop.location = org.location workshop.save() - url = base_url + '/workshop/update/{}/'.format(workshop.id) + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') @@ -84,7 +84,7 @@ def test_workshop_flow(base_url, browser, outbox): user = f.create_user() user.set_password('123123') user.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') @@ -116,7 +116,7 @@ def test_workshop_flow(base_url, browser, outbox): workshop.expected_date = datetime.now() + timedelta(days=20) workshop.presenter.add(user) workshop.save() - url = base_url + '/workshop/update/{}/'.format(workshop.id) + url = base_url + '/accounts/login/' browser.visit(url) browser.fill('login', user.email) browser.fill('password', '123123') diff --git a/tests/functional/workshop/test_create_workshop.py b/tests/functional/workshop/test_create_workshop.py index e3efd74..3848490 100644 --- a/tests/functional/workshop/test_create_workshop.py +++ b/tests/functional/workshop/test_create_workshop.py @@ -12,7 +12,7 @@ def test_workshop_create(base_url, browser, outbox): poc_type = f.create_usertype(slug='poc', display_name='poc') state = f.create_state() user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login_and_confirm(browser, url, outbox, user, password) user.save() location = f.create_locaiton(name='location1') @@ -23,7 +23,7 @@ def test_workshop_create(base_url, browser, outbox): user.profile.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login(browser, url, user, password) # validate if user belongs to organisation diff --git a/tests/functional/workshop/test_workshop_celery_tasks.py b/tests/functional/workshop/test_workshop_celery_tasks.py index 20a1f66..f5140ca 100644 --- a/tests/functional/workshop/test_workshop_celery_tasks.py +++ b/tests/functional/workshop/test_workshop_celery_tasks.py @@ -21,7 +21,7 @@ def test_workshop_celery_task(base_url, browser, outbox): state = f.create_state() # Testcase with usertyep poc user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/login/' base.login_and_confirm(browser, url, outbox, user, password) user.profile.usertype.clear() user.profile.usertype.add(poc_type) @@ -57,75 +57,3 @@ def test_workshop_celery_task(base_url, browser, outbox): workshop.save() rst = workshop_feedback.apply(args=(1,)).get() assert rst - # url = base_url + '/workshop/' - # base.login(browser, url, user, password) - # data_check = browser.find_by_text(org.name) - # assert data_check - - # browser.visit(url + "?location={}".format(org.location.id)) - # data_check = browser.find_by_text(org.name) - # assert data_check - - # browser.visit(url + "?location={}".format(org.location.id + 1)) - # data_check = browser.find_by_text(org.name) - # assert not data_check - - # browser.visit(url + "?presenter={}".format(user.id)) - # data_check = browser.find_by_text(org.name) - # assert not data_check - - # browser.visit(url + "?status={}".format(WorkshopStatus.REQUESTED)) - # data_check = browser.find_by_text(org.name) - # assert data_check - - # browser.visit(url + "?level={}".format(WorkshopStatus.ACCEPTED)) - # data_check = browser.find_by_text(org.name) - # assert not data_check - - # # Testcase for usertype tutor - # browser.visit(base_url + "/accounts/logout") - # user = base.create_user(password) - # url = base_url + '/workshop/' - # base.login_and_confirm(browser, url, outbox, user, password) - # # user.profile.usertype.add(tutor_type) - # # user.save() - - # # url = base_url + '/workshop/' - # # base.login(browser, url, user, password) - # # # User not associate with workshop - # # data_check = browser.find_by_text(org.name) - # # assert [] == data_check - - # # User associated with workshop - # workshop.presenter.add(user) - # browser.visit(url) - # # data_check = browser.find_by_text(org.name) - # # assert data_check - - # # Testcase for lead - # browser.visit(base_url + "/accounts/logout") - # user = base.create_user(password) - # url = base_url + '/workshop/' - # base.login_and_confirm(browser, url, outbox, user, password) - - # user.profile.usertype.add(regional_lead_type) - # user.save() - # lead = RegionalLead.objects.create(location=org.location) - # lead.leads.add(user) - - # url = base_url + '/workshop/' - # base.login(browser, url, user, password) - # # data_check = browser.find_by_text(org.name) - # # assert data_check - - # # Testcase for user with no usertype - # browser.visit(base_url + "/accounts/logout") - # user = base.create_user(password) - # url = base_url + '/workshop/' - # base.login_and_confirm(browser, url, outbox, user, password) - - # url = base_url + '/workshop/' - # base.login(browser, url, user, password) - # # data_check = browser.find_by_text(org.name) - # # assert [] == data_check - # browser.visit(base_url + "/accounts/logout") diff --git a/tests/functional/workshop/test_workshop_list.py b/tests/functional/workshop/test_workshop_list.py index ea50a7b..a04359c 100644 --- a/tests/functional/workshop/test_workshop_list.py +++ b/tests/functional/workshop/test_workshop_list.py @@ -27,7 +27,7 @@ def test_workshop_list(base_url, browser, outbox): state = f.create_state() # Testcase with usertyep poc user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login_and_confirm(browser, url, outbox, user, password) user.profile.usertype.clear() user.profile.usertype.add(poc_type) @@ -52,11 +52,11 @@ def test_workshop_list(base_url, browser, outbox): workshop.location = org.location workshop.save() - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login(browser, url, user, password) data_check = browser.find_by_text(org.name) assert data_check - + url = base_url + '/workshop/' browser.visit(url + "?location={}".format(org.location.id)) data_check = browser.find_by_text(org.name) assert data_check @@ -80,7 +80,7 @@ def test_workshop_list(base_url, browser, outbox): # Testcase for usertype tutor browser.visit(base_url + "/accounts/logout") user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login_and_confirm(browser, url, outbox, user, password) # user.profile.usertype.add(tutor_type) # user.save() @@ -100,7 +100,7 @@ def test_workshop_list(base_url, browser, outbox): # Testcase for lead browser.visit(base_url + "/accounts/logout") user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login_and_confirm(browser, url, outbox, user, password) user.profile.usertype.add(regional_lead_type) @@ -108,7 +108,7 @@ def test_workshop_list(base_url, browser, outbox): lead = RegionalLead.objects.create(location=org.location) lead.leads.add(user) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login(browser, url, user, password) # data_check = browser.find_by_text(org.name) # assert data_check @@ -116,11 +116,11 @@ def test_workshop_list(base_url, browser, outbox): # Testcase for user with no usertype browser.visit(base_url + "/accounts/logout") user = base.create_user(password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login_and_confirm(browser, url, outbox, user, password) - url = base_url + '/workshop/' + url = base_url + '/accounts/login/' base.login(browser, url, user, password) # data_check = browser.find_by_text(org.name) - # assert [] == data_check + url = base_url + '/accounts/login/' browser.visit(base_url + "/accounts/logout") diff --git a/tests/utils.py b/tests/utils.py index 629ca4f..e93ce61 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -18,4 +18,5 @@ def reconnect(): return disconnect, reconnect + disconnect_signals, reconnect_signals = signals_switch() diff --git a/wye/organisations/views.py b/wye/organisations/views.py index c8c57ab..00f6ed0 100644 --- a/wye/organisations/views.py +++ b/wye/organisations/views.py @@ -1,7 +1,7 @@ import uuid from django.conf import settings -from django.conf.urls import patterns, url +from django.conf.urls import url from django.contrib.auth.tokens import PasswordResetTokenGenerator from django.core.urlresolvers import reverse_lazy from django.http import Http404 diff --git a/wye/workshops/admin.py b/wye/workshops/admin.py index cfd268a..3a53b00 100644 --- a/wye/workshops/admin.py +++ b/wye/workshops/admin.py @@ -15,8 +15,6 @@ class WorkshopAdmin(admin.ModelAdmin): 'status') list_filter = ('is_active', 'status', 'workshop_level', 'location') -admin.site.register(models.Workshop, WorkshopAdmin) - class WorkshopFeedBackAdmin(admin.ModelAdmin): list_per_page = 50 @@ -30,8 +28,9 @@ class WorkshopFeedBackAdmin(admin.ModelAdmin): 'status') list_filter = ('feedback_type',) -admin.site.register(models.WorkshopFeedBack, WorkshopFeedBackAdmin) +admin.site.register(models.Workshop, WorkshopAdmin) +admin.site.register(models.WorkshopFeedBack, WorkshopFeedBackAdmin) admin.site.register(models.WorkshopSections) admin.site.register(models.WorkshopRatingValues) admin.site.register(models.WorkshopVoting) diff --git a/wye/workshops/forms.py b/wye/workshops/forms.py index 24a5975..b6b547e 100644 --- a/wye/workshops/forms.py +++ b/wye/workshops/forms.py @@ -35,12 +35,12 @@ def __init__(self, *args, **kwargs): self.fields['location'].required = False self.fields['location'].widget = forms.HiddenInput() - def clean_location(self): - if "requester" not in self.cleaned_data: - return "" + # def clean_location(self): + # if "requester" not in self.cleaned_data: + # return "" - organisation = self.cleaned_data['requester'] - return organisation.location + # organisation = self.cleaned_data['requester'] + # return organisation.location def get_organisations(self, user): if Profile.is_admin(user): @@ -59,6 +59,13 @@ def clean_expected_date(self): else: return date + def clean_location(self): + # data = self.cleaned_data['requester'] + if ('requester' not in self.data) or (not self.data['requester']): + return None + o = Organisation.objects.get(id=self.data['requester']) + return o.location + class Meta: model = Workshop exclude = ( diff --git a/wye/workshops/templatetags/workshop_action_button.py b/wye/workshops/templatetags/workshop_action_button.py index 03f8f5d..d222172 100644 --- a/wye/workshops/templatetags/workshop_action_button.py +++ b/wye/workshops/templatetags/workshop_action_button.py @@ -14,8 +14,6 @@ def show_draft_button(workshop, user): return True return False -register.filter(show_draft_button) - def show_requested_button(workshop, user): if (workshop.status == WorkshopStatus.HOLD and @@ -24,16 +22,12 @@ def show_requested_button(workshop, user): return True return False -register.filter(show_requested_button) - def show_accepted_button(workshop, user): if (workshop.status == WorkshopStatus.REQUESTED): return True return False -register.filter(show_accepted_button) - def show_feedback_button(workshop, user): if (workshop.status == WorkshopStatus.COMPLETED or @@ -49,8 +43,6 @@ def show_feedback_button(workshop, user): return False return False -register.filter(show_feedback_button) - def show_reject_button(workshop, user): if (workshop.status == WorkshopStatus.ACCEPTED and @@ -59,8 +51,6 @@ def show_reject_button(workshop, user): return True return False -register.filter(show_reject_button) - def show_decline_button(workshop, user): neglected_workshops = [WorkshopStatus.COMPLETED, @@ -70,4 +60,11 @@ def show_decline_button(workshop, user): user in workshop.requester.user.all()): return True return False + + +register.filter(show_draft_button) +register.filter(show_requested_button) +register.filter(show_accepted_button) +register.filter(show_feedback_button) +register.filter(show_reject_button) register.filter(show_decline_button)