Guest User

Untitled

a guest
Dec 16th, 2017
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.26 KB | None | 0 0
  1. def index(request):
  2. context = {
  3. 'page': 'index',
  4. 'coverHeading': 'Search Events'
  5. }
  6. return render(request, 'html/index.html', context)
  7.  
  8.  
  9. def signin(request):
  10. context = {
  11. 'page': 'signin'
  12. }
  13. return render(request, 'html/signin.html', context)
  14.  
  15.  
  16. def createEventPage(request):
  17. context = {
  18. 'page': 'createEvent',
  19. 'coverHeading': 'Create Event'
  20. }
  21. return render(request, 'html/createEvent.html', context)
  22.  
  23.  
  24. def allEvents(request):
  25. # Get Events
  26. events = Event.objects.all()
  27.  
  28. context = {
  29. 'page': 'allEvents',
  30. 'coverHeading': 'All Events',
  31. 'events': events
  32. }
  33. return render(request, 'html/allEvents.html', context)
  34.  
  35.  
  36. def myEvents(request):
  37. # Dec Vars
  38. user = request.user
  39.  
  40. # redirect to signin page if user not found
  41. try:
  42. events = Event.objects.filter(creator=user)
  43. except TypeError:
  44. return redirect('signin')
  45.  
  46. context = {
  47. 'page': 'myEvents',
  48. 'coverHeading': 'My Events',
  49. 'events': events
  50. }
  51. return render(request, 'html/myEvents.html', context)
  52.  
  53.  
  54. def editEvent(request, event_id):
  55. # Dec Vars
  56. event = get_object_or_404(Event, pk=event_id)
  57. context = {
  58. 'page': 'editEvent',
  59. 'coverHeading': 'Edit Event',
  60. 'event': event
  61. }
  62. return render(request, 'html/editEvent.html', context)
  63.  
  64.  
  65. # AJAX
  66.  
  67.  
  68. def register(request):
  69. # dec vars
  70. username = str(request.POST['register-username']).lower()
  71. email = str(request.POST['register-email']).lower()
  72. password = str(request.POST['register-password'])
  73.  
  74. # check if username or email is used
  75. username_check = User.objects.filter(username=username)
  76. email_check = User.objects.filter(email=email)
  77.  
  78. if username_check:
  79. response = {
  80. 'status': 'fail',
  81. 'error_msg': 'username already in use'
  82. }
  83. elif email_check:
  84. response = {
  85. 'status': 'fail',
  86. 'error_msg': 'email already in use'
  87. }
  88. elif len(password) < 8:
  89. response = {
  90. 'status': 'fail',
  91. 'error_msg': 'password must be atleast 8 characters long'
  92. }
  93. else:
  94. # create user
  95. user = User.objects.create_user(username, email, password)
  96.  
  97. # login user
  98. login(request, user)
  99.  
  100. # create response
  101. response = {
  102. 'status': 'success',
  103. }
  104.  
  105. # send reponse JSON
  106. return JsonResponse(response)
  107.  
  108.  
  109. def loginUser(request):
  110. # dec vars
  111. username = request.POST['signin-username']
  112. password = request.POST['signin-password']
  113. # Auth user
  114. user = authenticate(request, username=username, password=password)
  115.  
  116. if user:
  117. login(request, user)
  118. # create response
  119. response = {
  120. 'status': 'success'
  121. }
  122. else:
  123. # create response
  124. response = {
  125. 'status': 'fail'
  126. }
  127.  
  128. # send reponse JSON
  129. return JsonResponse(response)
  130.  
  131.  
  132. def logoutUser(request):
  133. # log out user
  134. logout(request)
  135.  
  136. # send to home page
  137. return redirect('index')
  138.  
  139.  
  140. def searchEvents(request):
  141. # dec vars
  142. event_search = json.loads(request.body)['event_search']
  143.  
  144. # filter for matching events and serialize for json
  145. event_search_results = list(Event.objects.filter(
  146. name__icontains=event_search
  147. ).values(
  148. 'id',
  149. 'name',
  150. 'event_type',
  151. 'start_date',
  152. 'attendees'
  153. ))
  154.  
  155. # create response
  156. response = {
  157. 'status': 'success',
  158. 'event_search_results': event_search_results
  159. }
  160.  
  161. # send reponse JSON
  162. return JsonResponse(response)
  163.  
  164.  
  165. def eventDetails(request):
  166. # get event
  167. event_id = json.loads(request.body)['event_id']
  168. event = get_object_or_404(Event, pk=event_id)
  169.  
  170. # serialize json
  171. serialized_event = serializers.serialize('json', [event])
  172.  
  173. # create response
  174. response = {
  175. 'status': 'success',
  176. 'event': serialized_event
  177. }
  178.  
  179. # send reponse JSON
  180. return JsonResponse(response)
  181.  
  182.  
  183. def eventJoin(request):
  184. # get event
  185. user_id = int(request.POST['user-id'])
  186. event_id = int(request.POST['event-id'])
  187. user = User.objects.get(pk=user_id)
  188. event = Event.objects.get(pk=event_id)
  189.  
  190. # add user to event
  191. event.attendees.add(user)
  192.  
  193. # get updated attendance count
  194. attendance = event.attendees.all().count()
  195.  
  196. # create response
  197. response = {
  198. 'status': 'success',
  199. 'attendance': attendance
  200. }
  201.  
  202. # send reponse JSON
  203. return JsonResponse(response)
  204.  
  205.  
  206. def createEvent(request):
  207. # dec vars
  208. event_title = str(request.POST['event-title']).title()
  209. event_type = str(request.POST['event-type'])
  210. event_location = str(request.POST['event-location'])
  211. event_description = str(request.POST['event-description'])
  212. event_start_date = str(request.POST['event-start-date'])
  213. event_start_time = str(request.POST['event-start-time'])
  214. event_end_date = str(request.POST['event-end-date'])
  215. event_end_time = str(request.POST['event-end-time'])
  216. creator = request.user
  217.  
  218. # create event
  219. Event.objects.create(
  220. name=event_title,
  221. event_type=event_type,
  222. creator=creator,
  223. location=event_location,
  224. description=event_description,
  225. start_date=event_start_date,
  226. start_time=event_start_time,
  227. end_date=event_end_date,
  228. end_time=event_end_time
  229. )
  230.  
  231. # #create response
  232. response = {
  233. 'status': 'success',
  234. }
  235.  
  236. # send reponse JSON
  237. return JsonResponse(response)
  238.  
  239.  
  240. def updateEvent(request, event_id):
  241. # dec vars
  242. event_title = str(request.POST['event-title']).title()
  243. event_type = str(request.POST['event-type'])
  244. event_location = str(request.POST['event-location'])
  245. event_description = str(request.POST['event-description'])
  246. event_start_date = str(request.POST['edit-event-start-date'])
  247. event_start_time = str(request.POST['edit-event-start-time'])
  248. event_end_date = str(request.POST['edit-event-end-date'])
  249. event_end_time = str(request.POST['edit-event-end-time'])
  250. event = get_object_or_404(Event, pk=event_id)
  251.  
  252. # Update Event
  253. event.name = event_title
  254. event.event_type = event_type
  255. event.location = event_location
  256. event.description = event_description
  257.  
  258. # only update new dates/times
  259. if event_start_date:
  260. event.start_date = event_start_date
  261.  
  262. if event_end_date:
  263. event.end_date = event_end_date
  264.  
  265. if event_start_time:
  266. event.start_time = event_start_time
  267.  
  268. if event_end_time:
  269. event.end_time = event_end_time
  270.  
  271. # Save updated event
  272. event.save()
  273.  
  274. # create response
  275. response = {
  276. 'status': 'success',
  277. }
  278.  
  279. # send reponse JSON
  280. return JsonResponse(response)
  281.  
  282.  
  283. def removeEvent(request):
  284. # dec vars
  285. event_id = json.loads(request.body)['event_id']
  286. event = get_object_or_404(Event, pk=event_id)
  287.  
  288. # delete event
  289. event.delete()
  290.  
  291. # create response
  292. response = {
  293. 'status': 'success',
  294. }
  295.  
  296. # send reponse JSON
  297. return JsonResponse(response)
  298.  
  299.  
  300. def searchSystems(request):
  301. system_query = json.loads(request.body)['system_query']
  302. results = list(SolarSystem.objects.filter(name__icontains=system_query).values('name')[:5])
  303.  
  304. # create response
  305. response = {
  306. 'status': 'success',
  307. 'results': results
  308. }
  309.  
  310. # send reponse JSON
  311. return JsonResponse(response)
  312.  
  313. class EventModelTests(TestCase):
  314. c = Client()
  315.  
  316. @classmethod
  317. def setUpTestData(cls):
  318.  
  319.  
  320. # dec vars
  321. today = timezone.now()
  322. tomorrow = timezone.now() + timedelta(days=1)
  323. start_date = today.date()
  324. start_time = today.time()
  325. end_date = tomorrow.date()
  326. end_time = start_time
  327.  
  328. # create auth user
  329. User.objects.create(
  330. username='TestUser',
  331. password='password'
  332. )
  333.  
  334. # create attendees for event
  335. for i in range(5):
  336. username = 'TestUser%s' % i
  337. email = 'test%[email protected]' % i
  338. User.objects.create(
  339. username=username,
  340. email=email,
  341. password='password'
  342. )
  343.  
  344. # Create Events
  345. for i in range(5):
  346. event_name = 'Test Event %s' % i
  347. Event.objects.create(
  348. name=event_name,
  349. event_type='Combat',
  350. creator=User.objects.get(pk=1),
  351. start_date=start_date,
  352. start_time=start_time,
  353. end_date=end_date,
  354. end_time=end_time,
  355. location='Sol',
  356. date_created=timezone.now(),
  357. description=lorem.paragraph()
  358. )
  359.  
  360. def test_event_associated_to_auth_user(self):
  361. # check if event will return creator
  362. event = Event.objects.get(pk=1)
  363. user = event.creator
  364. self.assertEqual(user.id, 1)
  365.  
  366. def test_attendees_added_to_event(self):
  367. # exclude creator from attendees
  368. test_attendees = User.objects.all().exclude(pk=1)
  369. event = Event.objects.get(pk=1)
  370.  
  371. # add attendees to event
  372. for attendee in test_attendees:
  373. event.attendees.add(attendee)
  374.  
  375. self.assertEqual(event.attendees.all().count(), 5)
  376.  
  377. def test_myEvents_view(self):
  378. response = self.client.get('/allEvents/')
  379. # check reponse and template
  380. self.assertEqual(response.status_code, 200)
  381. # cehck all events are returned
  382. self.assertTrue(len(response.context['events']) == 5)
  383. self.assertTemplateUsed(response, 'html/allEvents.html')
  384.  
  385. def test_editEvent_view_(self):
  386. response = self.client.get('/event/edit/1/')
  387. # check reponse and template
  388. self.assertEqual(response.status_code, 200)
  389. self.assertTemplateUsed(response, 'html/editEvent.html')
  390. # check correct event is returned
  391. correct_event = Event.objects.get(pk=1)
  392. self.assertEqual(response.context['event'], correct_event)
  393.  
  394. def test_search_events(self):
  395. # Check event search
  396. response = self.c.post(
  397. '/event/search/',
  398. json.dumps({'event_search': 'Test Event'}),
  399. 'json',
  400. HTTP_X_REQUESTED_WITH='XMLHttpRequest',
  401. )
  402. event_search_results = json.loads(response.content)['event_search_results']
  403. # Check event objs are returned
  404. self.assertEqual(len(event_search_results), 5)
  405. # check event objs have values
  406. for i in range(len(event_search_results)):
  407. self.assertFalse(event_search_results[i]['id'] == '')
  408. self.assertFalse(event_search_results[i]['name'] == '')
  409. self.assertFalse(event_search_results[i]['event_type'] == '')
  410. self.assertEqual(event_search_results[i]['attendees'], None)
  411.  
  412. def test_event_details(self):
  413. # Check event search
  414. response = self.c.post(
  415. '/event/details/',
  416. json.dumps({'event_id': 1}),
  417. 'json',
  418. HTTP_X_REQUESTED_WITH='XMLHttpRequest',
  419. )
  420. event = json.loads(response.content)['event']
  421.  
  422. # Check event obj is returned
  423. self.assertTrue(event)
  424.  
  425.  
  426. class RenderViewsTests(TestCase):
  427.  
  428. def test_index_view(self):
  429. response = self.client.get('')
  430. # check reponse and template
  431. self.assertEqual(response.status_code, 200)
  432. self.assertTemplateUsed(response, 'html/index.html')
  433.  
  434. def test_createEvent_view(self):
  435. response = self.client.get('/createEvent/')
  436. # check reponse and template
  437. self.assertEqual(response.status_code, 200)
  438. self.assertTemplateUsed(response, 'html/createEvent.html')
  439.  
  440. def test_allEvents_view(self):
  441. response = self.client.get('/myEvents/')
  442. # check redirect for user not signed in
  443. self.assertEqual(response.status_code, 302)
  444.  
  445. def test_signin_view(self):
  446. response = self.client.get('/signin/')
  447. # check redirect for user not signed in
  448. self.assertEqual(response.status_code, 200)
  449. self.assertTemplateUsed(response, 'html/signin.html')
  450.  
  451.  
  452. class AjaxViewsTests(TestCase):
  453. c = Client()
  454.  
  455. @classmethod
  456. def setUpTestData(cls):
  457. User.objects.create(
  458. username='testuser',
  459. password='password'
  460. )
  461.  
  462. def test_ajax_register_success(self):
  463. # Check register success
  464. response = self.c.post('/register/', {
  465. 'register-username': 'testuser1',
  466. 'register-email': '[email protected]',
  467. 'register-password': 'password'
  468. })
  469. self.assertEqual(json.loads(response.content)['status'], 'success')
  470. self.assertEqual(response.status_code, 200)
  471.  
  472. def test_ajax_register_username_in_use(self):
  473. # Check register failed username taken
  474. response = self.c.post('/register/', {
  475. 'register-username': 'testuser',
  476. 'register-email': '[email protected]',
  477. 'register-password': 'password'
  478. })
  479. self.assertEqual(json.loads(response.content)['status'], 'fail')
  480. self.assertEqual(json.loads(response.content)['error_msg'], 'username already in use')
  481.  
  482. def test_ajax_register_email_in_use(self):
  483. # Check register failed email in use
  484. response = self.c.post('/register/', {
  485. 'register-username': 'testuser1',
  486. 'register-email': '[email protected]',
  487. 'register-password': 'password'
  488. })
  489. self.assertEqual(json.loads(response.content)['status'], 'fail')
  490. self.assertEqual(json.loads(response.content)['error_msg'], 'email already in use')
  491.  
  492. def test_ajax_register_password_length(self):
  493. # Check register failed password length
  494. response = self.c.post('/register/', {
  495. 'register-username': 'testuser2',
  496. 'register-email': '[email protected]',
  497. 'register-password': 'pass'
  498. })
  499. self.assertEqual(json.loads(response.content)['status'], 'fail')
  500. self.assertEqual(json.loads(response.content)['error_msg'], 'password must be atleast 8 characters long')
  501.  
  502. def test_ajax_login_fail(self):
  503. # Check login fail
  504. response = self.c.post('/login/', {
  505. 'signin-username': 'testuser5000',
  506. 'signin-password': 'password'
  507. })
  508. self.assertEqual(json.loads(response.content)['status'], 'fail')
Add Comment
Please, Sign In to add comment