Guest User

Untitled

a guest
Dec 16th, 2017
339
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. email='test@user.com',
  332. password='password'
  333. )
  334.  
  335. # create attendees for event
  336. for i in range(5):
  337. username = 'TestUser%s' % i
  338. email = 'test%s@user.com' % i
  339. User.objects.create(
  340. username=username,
  341. email=email,
  342. password='password'
  343. )
  344.  
  345. # Create Events
  346. for i in range(5):
  347. event_name = 'Test Event %s' % i
  348. Event.objects.create(
  349. name=event_name,
  350. event_type='Combat',
  351. creator=User.objects.get(pk=1),
  352. start_date=start_date,
  353. start_time=start_time,
  354. end_date=end_date,
  355. end_time=end_time,
  356. location='Sol',
  357. date_created=timezone.now(),
  358. description=lorem.paragraph()
  359. )
  360.  
  361. def test_event_associated_to_auth_user(self):
  362. # check if event will return creator
  363. event = Event.objects.get(pk=1)
  364. user = event.creator
  365. self.assertEqual(user.id, 1)
  366.  
  367. def test_attendees_added_to_event(self):
  368. # exclude creator from attendees
  369. test_attendees = User.objects.all().exclude(pk=1)
  370. event = Event.objects.get(pk=1)
  371.  
  372. # add attendees to event
  373. for attendee in test_attendees:
  374. event.attendees.add(attendee)
  375.  
  376. self.assertEqual(event.attendees.all().count(), 5)
  377.  
  378. def test_myEvents_view(self):
  379. response = self.client.get('/allEvents/')
  380. # check reponse and template
  381. self.assertEqual(response.status_code, 200)
  382. # cehck all events are returned
  383. self.assertTrue(len(response.context['events']) == 5)
  384. self.assertTemplateUsed(response, 'html/allEvents.html')
  385.  
  386. def test_editEvent_view_(self):
  387. response = self.client.get('/event/edit/1/')
  388. # check reponse and template
  389. self.assertEqual(response.status_code, 200)
  390. self.assertTemplateUsed(response, 'html/editEvent.html')
  391. # check correct event is returned
  392. correct_event = Event.objects.get(pk=1)
  393. self.assertEqual(response.context['event'], correct_event)
  394.  
  395. def test_search_events(self):
  396. # Check event search
  397. response = self.c.post(
  398. '/event/search/',
  399. json.dumps({'event_search': 'Test Event'}),
  400. 'json',
  401. HTTP_X_REQUESTED_WITH='XMLHttpRequest',
  402. )
  403. event_search_results = json.loads(response.content)['event_search_results']
  404. # Check event objs are returned
  405. self.assertEqual(len(event_search_results), 5)
  406. # check event objs have values
  407. for i in range(len(event_search_results)):
  408. self.assertFalse(event_search_results[i]['id'] == '')
  409. self.assertFalse(event_search_results[i]['name'] == '')
  410. self.assertFalse(event_search_results[i]['event_type'] == '')
  411. self.assertEqual(event_search_results[i]['attendees'], None)
  412.  
  413. def test_event_details(self):
  414. # Check event search
  415. response = self.c.post(
  416. '/event/details/',
  417. json.dumps({'event_id': 1}),
  418. 'json',
  419. HTTP_X_REQUESTED_WITH='XMLHttpRequest',
  420. )
  421. event = json.loads(response.content)['event']
  422.  
  423. # Check event obj is returned
  424. self.assertTrue(event)
  425.  
  426.  
  427. class RenderViewsTests(TestCase):
  428.  
  429. def test_index_view(self):
  430. response = self.client.get('')
  431. # check reponse and template
  432. self.assertEqual(response.status_code, 200)
  433. self.assertTemplateUsed(response, 'html/index.html')
  434.  
  435. def test_createEvent_view(self):
  436. response = self.client.get('/createEvent/')
  437. # check reponse and template
  438. self.assertEqual(response.status_code, 200)
  439. self.assertTemplateUsed(response, 'html/createEvent.html')
  440.  
  441. def test_allEvents_view(self):
  442. response = self.client.get('/myEvents/')
  443. # check redirect for user not signed in
  444. self.assertEqual(response.status_code, 302)
  445.  
  446. def test_signin_view(self):
  447. response = self.client.get('/signin/')
  448. # check redirect for user not signed in
  449. self.assertEqual(response.status_code, 200)
  450. self.assertTemplateUsed(response, 'html/signin.html')
  451.  
  452.  
  453. class AjaxViewsTests(TestCase):
  454. c = Client()
  455.  
  456. @classmethod
  457. def setUpTestData(cls):
  458. User.objects.create(
  459. username='testuser',
  460. email='testuser@email.com',
  461. password='password'
  462. )
  463.  
  464. def test_ajax_register_success(self):
  465. # Check register success
  466. response = self.c.post('/register/', {
  467. 'register-username': 'testuser1',
  468. 'register-email': 'testuser1@email.com',
  469. 'register-password': 'password'
  470. })
  471. self.assertEqual(json.loads(response.content)['status'], 'success')
  472. self.assertEqual(response.status_code, 200)
  473.  
  474. def test_ajax_register_username_in_use(self):
  475. # Check register failed username taken
  476. response = self.c.post('/register/', {
  477. 'register-username': 'testuser',
  478. 'register-email': 'testuser@email.com',
  479. 'register-password': 'password'
  480. })
  481. self.assertEqual(json.loads(response.content)['status'], 'fail')
  482. self.assertEqual(json.loads(response.content)['error_msg'], 'username already in use')
  483.  
  484. def test_ajax_register_email_in_use(self):
  485. # Check register failed email in use
  486. response = self.c.post('/register/', {
  487. 'register-username': 'testuser1',
  488. 'register-email': 'testuser@email.com',
  489. 'register-password': 'password'
  490. })
  491. self.assertEqual(json.loads(response.content)['status'], 'fail')
  492. self.assertEqual(json.loads(response.content)['error_msg'], 'email already in use')
  493.  
  494. def test_ajax_register_password_length(self):
  495. # Check register failed password length
  496. response = self.c.post('/register/', {
  497. 'register-username': 'testuser2',
  498. 'register-email': 'testuser2@email.com',
  499. 'register-password': 'pass'
  500. })
  501. self.assertEqual(json.loads(response.content)['status'], 'fail')
  502. self.assertEqual(json.loads(response.content)['error_msg'], 'password must be atleast 8 characters long')
  503.  
  504. def test_ajax_login_fail(self):
  505. # Check login fail
  506. response = self.c.post('/login/', {
  507. 'signin-username': 'testuser5000',
  508. 'signin-password': 'password'
  509. })
  510. self.assertEqual(json.loads(response.content)['status'], 'fail')
Add Comment
Please, Sign In to add comment