himanshu208

Untitled

Sep 17th, 2018
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. # how to run file > python3 manage.py generatedata -un 2 -an 4 -sn 6
  2. # 2- number of units
  3. # 4 - number of assignments in each unit
  4. # 6 - number of submission in each assignment
  5.  
  6. import random
  7. import sys
  8. from django.core.management.base import BaseCommand, CommandError, CommandParser
  9. from decentmark.models import Unit,Assignment,Submission,UnitUsers
  10. from datetime import date,timedelta
  11. from django.contrib.auth.models import User
  12. from django.utils import timezone
  13. import sys
  14. import warnings
  15.  
  16. if not sys.warnoptions:
  17. warnings.simplefilter("ignore")
  18.  
  19.  
  20. users = User.objects.all()
  21.  
  22. class Command(BaseCommand):
  23. help = 'Generate/regenerate unit with random content'
  24.  
  25. def add_arguments(self, parser: CommandParser):
  26. parser.add_argument('-un', '--unit-number', type=str, required=True,
  27. help="Number of units generated",dest="un")
  28. parser.add_argument('-an', '--assignment-number', type=str, required=True,
  29. help="Number of assignment generated",dest="an")
  30. parser.add_argument('-sn', '--submission-number', type=str, required=True,
  31. help="Number of submission generated",dest="sn")
  32.  
  33. def handle(self, *args, **options):
  34. # print(date.today())
  35. # Generate a random seed (Source: https://stackoverflow.com/a/5012617)
  36. un = int(options['un'])
  37. an = int(options['an'])
  38. sn = int(options['sn'])
  39. #create units
  40. assignment_end = date.today()
  41. unit_end = date.today()
  42. random.seed(4)
  43. for x in range(0,un):
  44. unit_start = unit_end + timedelta(days=int(10*(random.random())));
  45. unit_end = unit_start + timedelta(days=30);
  46. random.seed()
  47. unit = Unit.objects.create(
  48. name = "Unit "+ str(x+1),
  49. description="Description about the Unit",
  50. start = unit_start,
  51. end = unit_end + timedelta(days=30),
  52. deleted = 0
  53. )
  54. unit.save()
  55. print("Unit with name "+str(unit.name)+ " created.")
  56. usernumber = 0
  57. #make a user teacher
  58. unituser = UnitUsers.objects.create(
  59. unit = unit,
  60. user = users[usernumber],
  61. create = True,
  62. mark = False,
  63. submit = False
  64. )
  65. unituser.save()
  66. random.seed(3)
  67. #create assignments with user teacher
  68. for y in range(0,an):
  69. assignment_start = assignment_end +timedelta(days=int(10*(random.random())))
  70. assignment_end = assignment_start +timedelta(days=int(10*(random.random())+5))
  71. assignment = Assignment.objects.create(
  72. unit = unit,
  73. name = "Assignment" + str(y+1),
  74. start = assignment_start,
  75. end = assignment_end,
  76. description="Description about the Assignment",
  77. attempts = random.randint(1,21),
  78. total = 100,
  79. test = "random test here! ",
  80. solution = "random solution here! ",
  81. template = "random template here! ",
  82. deleted = False
  83. )
  84. assignment.save()
  85. print("Assignment with name "+str(assignment.name)+ " created.")
  86. usernumber = usernumber+1
  87. #assign 2 marker users for the unit
  88. for x in range(0,2):
  89. unituser = UnitUsers.objects.create(
  90. unit = unit,
  91. user = users[usernumber],
  92. create = False,
  93. mark = True,
  94. submit = False
  95. )
  96. unituser.save()
  97. usernumber = usernumber+1
  98. random.seed(3)
  99. assignment_start = date.today() +timedelta(days=int(10*(random.random())))
  100. #assign 10 student users for the unit
  101. for x in range(0,sn):
  102. submission_date = assignment_start +timedelta(days=int(10*(random.random())))
  103. unituser = UnitUsers.objects.create(
  104. unit = unit,
  105. user = users[usernumber],
  106. create = False,
  107. mark = False,
  108. submit = True
  109. )
  110. unituser.save()
  111. submission = Submission.objects.create(
  112. user = users[usernumber],
  113. assignment = assignment,
  114. date = submission_date,
  115. marked = True,
  116. mark = random.randrange(0, 100),
  117. feedback = "some feedback here"
  118. )
  119. submission.save()
  120. print("Submission with name "+str(submission)+ " created.")
  121. usernumber = usernumber+1
Add Comment
Please, Sign In to add comment