from postgresqleu.util.db import exec_to_list, exec_to_dict, exec_no_result
from postgresqleu.util.lists import flatten_list
from postgresqleu.util.decorators import superuser_required
-from postgresqleu.util.messaging.twitter import TwitterSetup
+from postgresqleu.util.messaging.twitter import Twitter, TwitterSetup
from models import Conference, ConferenceSeries
from models import AccessToken
from backendforms import BackendConferenceSeriesForm
from backendforms import BackendTshirtSizeForm
from backendforms import BackendNewsForm
-from backendforms import TwitterForm
+from backendforms import TwitterForm, TwitterTestForm
def get_authenticated_conference(request, urlname):
if not request.user.is_authenticated:
conference.save()
messages.info(request, 'Twitter integration disabled')
return HttpResponseRedirect('.')
+ elif request.POST.get('test_twitter', '') == '1':
+ testform = TwitterTestForm(data=request.POST)
+ if testform.is_valid():
+ tw = Twitter(conference)
+ recipient = testform.cleaned_data['recipient']
+ message = testform.cleaned_data['message']
+
+ ok, msg = tw.send_message(recipient, message)
+ if ok:
+ messages.info(request, 'Message successfully sent to {0}'.format(recipient))
+ else:
+ messages.error(request, 'Failed to send to {0}: {1}'.format(recipient, msg))
+ return HttpResponseRedirect('.')
+ form = TwitterForm(instance=conference)
else:
form = TwitterForm(instance=conference, data=request.POST)
if form.is_valid():
return HttpResponseRedirect('.')
else:
form = TwitterForm(instance=conference)
+ testform = TwitterTestForm()
return render(request, 'confreg/admin_integ_twitter.html', {
'conference': conference,
'form': form,
+ 'testform': testform,
'helplink': 'integrations#twitter',
})
<form class="form-horizontal" method="POST" action="." enctype="multipart/form-data">{%csrf_token%}
{%include "confreg/admin_backend_form_content.html" %}
</form>
+
+<h3>Test twitter integration</h3>
+<p>
+The twitter integration can be tested by sending a direct message to a user,
+for example yourself.
+</p>
+<form method="post" action="." class="form-horizontal">{%csrf_token%}
+<input type="hidden" name="test_twitter" value="1">
+{%include "confreg/admin_backend_form_content.html" with form=testform%}
+</form>
+
<h3>Disable twitter integration</h3>
<p>
Disabling twitter integration will remove all OAuth keys.