From 902a96b3bf7ef18886881200c9c1ae6ef90ce165 Mon Sep 17 00:00:00 2001 From: Artur Czepiel Date: Wed, 24 Apr 2019 15:10:20 +0200 Subject: [PATCH] first draft of add co-speaker feature --- assopy/models.py | 8 +++---- conference/accounts.py | 1 + conference/cfp.py | 22 +++++++++++++++++++ .../commands/create_initial_data_for_dev.py | 5 ++++- templates/ep19/bs/cfp/preview.html | 9 ++++++++ tests/test_new_cfp.py | 4 ++++ 6 files changed, 44 insertions(+), 5 deletions(-) diff --git a/assopy/models.py b/assopy/models.py index ad02248de..329891be0 100644 --- a/assopy/models.py +++ b/assopy/models.py @@ -145,10 +145,10 @@ def _create_user( user.assopy_id = assopy_id user.save() - user_created.send( - sender=user, - profile_complete=(password is not None) or (token is not None), - ) + # user_created.send( + # sender=user, + # profile_complete=(password is not None) or (token is not None), + # ) return user diff --git a/conference/accounts.py b/conference/accounts.py index feedd91d5..17ebf5933 100644 --- a/conference/accounts.py +++ b/conference/accounts.py @@ -154,6 +154,7 @@ def get_or_create_attendee_profile_for_new_user(user): attendee.uuid = shortuuid.ShortUUID().random(length=7) attendee.save() attendee.setBio('bio') + attendee.save() return attendee diff --git a/conference/cfp.py b/conference/cfp.py index 3ed4a4725..7d82970df 100644 --- a/conference/cfp.py +++ b/conference/cfp.py @@ -27,6 +27,10 @@ ) +# TODO: this should have a better location +ADD_CO_SPEAKER = 'add_co_speaker' + + @login_required def submit_proposal_step1_talk_info(request): """ @@ -144,10 +148,28 @@ def preview_proposal(request, talk_slug): talk = get_object_or_404(Talk, slug=talk_slug) talk_as_dict = dump_relevant_talk_information_to_dict(talk) conf = Conference.objects.current() + + # This might not be best place to do it... + if request.method == 'POST': + if ADD_CO_SPEAKER in request.POST: + speaker, _ = Speaker.objects.get_or_create(user=request.user) + add_speaker_to_talk(speaker, talk) + messages.success(request, "Succesfully added as co-speaker") + + print("Nope", request.POST) + return redirect('.') + + current_user_is_speaker = ( + request.user.id + in talk.speakers.all().values_list('user_id', flat=True) + ) + return TemplateResponse(request, "ep19/bs/cfp/preview.html", { "talk": talk, "talk_as_dict": talk_as_dict, "cfp_is_open": conf.cfp(), + "ADD_CO_SPEAKER": ADD_CO_SPEAKER, + "current_user_is_speaker": current_user_is_speaker, }) diff --git a/conference/management/commands/create_initial_data_for_dev.py b/conference/management/commands/create_initial_data_for_dev.py index d29bf1aa6..6d8e69a1e 100644 --- a/conference/management/commands/create_initial_data_for_dev.py +++ b/conference/management/commands/create_initial_data_for_dev.py @@ -67,6 +67,10 @@ def handle(self, *args, **options): active=True, ) + print("setting user_profiles") + for user in alice, bob, cesar: + get_or_create_attendee_profile_for_new_user(user.user) + print("Making some talk proposals") for user in alice, bob, cesar: speaker, _ = Speaker.objects.get_or_create(user=user.user) @@ -75,7 +79,6 @@ def handle(self, *args, **options): talk.created_by = user.user talk.save() add_speaker_to_talk(speaker, talk) - get_or_create_attendee_profile_for_new_user(user.user) def new_page(rev_id, title, **kwargs): try: diff --git a/templates/ep19/bs/cfp/preview.html b/templates/ep19/bs/cfp/preview.html index 701d4026b..d3a6d9721 100644 --- a/templates/ep19/bs/cfp/preview.html +++ b/templates/ep19/bs/cfp/preview.html @@ -42,7 +42,16 @@

{{ talk_as_dict.subtitle }}

{% if user.is_staff %} See in Admin {% endif %} + + + {% if not current_user_is_speaker %} +
+ {% csrf_token %} + + +
+ {% endif %}{# current_user_is_speaker #}
diff --git a/tests/test_new_cfp.py b/tests/test_new_cfp.py index eeb521eb7..8b4879187 100644 --- a/tests/test_new_cfp.py +++ b/tests/test_new_cfp.py @@ -302,6 +302,10 @@ def test_preview_page_doesnt_contain_edit_link_if_cfp_is_closed_and_user_is_auth assert edit_link not in response.content.decode() +def test_preview_can_add_co_speaker(db, client): + ... + + @mark.django_db def test_regular_user_cant_access_program_wg_download(user_client): LOGIN_REQUIRED_302 = 302