Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1. from django.db import models
  2. from django.contrib.auth.models import User
  3. from django.db.models.signals import post_save
  4. from django.dispatch import receiver
  5.  
  6. class WorkerProfile(models.Model):
  7. user = models.OneToOneField(User, on_delete=models.CASCADE)
  8. university = models.CharField(max_length=30, blank=True)
  9. birth_date = models.DateField(null=True, blank=True)
  10.  
  11. role = models.CharField(max_length = 10, default = 'USER')
  12.  
  13.  
  14. def __str__(self):
  15. return self.user.username
  16.  
  17. @receiver(post_save, sender=User)
  18. def create_worker_profile(sender, instance, created, **kwargs):
  19. if created:
  20. WorkerProfile.objects.create(user=instance)
  21.  
  22. @receiver(post_save, sender=User)
  23. def save_worker_profile(sender, instance, **kwargs):
  24. instance.workerprofile.save()
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. class CustomerProfile(models.Model):
  33. user = models.OneToOneField(User, on_delete=models.CASCADE)
  34. university = models.CharField(max_length=30, blank=True)
  35. birth_date = models.DateField(null=True, blank=True)
  36.  
  37. role = models.CharField(max_length = 10, default = 'CUSTOMER')
  38. needLaundryDone = models.BooleanField(default = False)
  39.  
  40. def __str__(self):
  41. return self.user.username
  42.  
  43. @receiver(post_save, sender=User)
  44. def create_customer_profile(sender, instance, created, **kwargs):
  45. if created:
  46. CustomerProfile.objects.create(user=instance)
  47.  
  48. @receiver(post_save, sender=User)
  49. def save_customer_profile(sender, instance, **kwargs):
  50. instance.customerprofile.save()
  51.  
  52. from django import forms
  53. from django.contrib.auth.forms import UserCreationForm
  54. from django.contrib.auth.models import User
  55.  
  56. class WorkerSignUpForm(UserCreationForm):
  57. #birth_date and university fields need to be declared seperately because they are not apart of User:
  58. birth_date = forms.DateField(help_text='Required. Format: YYYY-MM-DD')
  59. university = forms.CharField()
  60.  
  61.  
  62. class Meta:
  63. model = User
  64. fields = ('username',
  65. 'email',
  66. 'first_name',
  67. 'last_name',
  68. 'birth_date',
  69. 'university',
  70. 'password1',
  71. 'password2', )
  72.  
  73.  
  74. class CustomerSignUpForm(UserCreationForm):
  75. #birth_date and university fields need to be declared seperately because they are not apart of User:
  76. birth_date = forms.DateField(help_text='Required. Format: YYYY-MM-DD')
  77. university = forms.CharField()
  78.  
  79.  
  80. class Meta:
  81. model = User
  82. fields = ('username',
  83. 'email',
  84. 'first_name',
  85. 'last_name',
  86. 'birth_date',
  87. 'university',
  88. 'password1',
  89. 'password2', )
  90.  
  91. def signup(request):
  92. if request.method == 'POST':
  93. form_worker = WorkerSignUpForm(request.POST)
  94. form_customer = CustomerSignUpForm(request.POST)
  95. if form_worker.is_valid():
  96. user = form_worker.save()
  97. user.refresh_from_db() # load the profile instance created by the signal
  98. user.workerprofile.birth_date = form_worker.cleaned_data.get('birth_date')
  99. user.workerprofile.university = form_worker.cleaned_data.get('university')
  100. user.save() # explicitly save custom fields not in User model
  101. raw_password = form_worker.cleaned_data.get('password1')
  102. user = authenticate(username=user.username, password=raw_password)
  103. login(request, user) # login user after signup
  104. return redirect('home')
  105. elif form_customer.is_valid():
  106. user = form_customer.save()
  107. user.refresh_from_db() # load the profile instance created by the signal
  108. user.customerprofile.birth_date = form_customer.cleaned_data.get('birth_date')
  109. user.customerprofile.university = form_customer.cleaned_data.get('university')
  110. user.save() # explicitly save custom fields not in User model
  111. raw_password = form_customer.cleaned_data.get('password1')
  112. user = authenticate(username=user.username, password=raw_password)
  113. login(request, user) # login user after signup
  114. return redirect('home')
  115. else:
  116. form_worker = WorkerSignUpForm(request.POST)
  117. form_customer = CustomerSignUpForm(request.POST)
  118. return render(request, 'core/signup.html', {'form_worker': form_worker,'form_customer': form_customer })
  119.  
  120. {% extends 'core/base.html' %}
  121.  
  122. {% block head %}
  123. <title> Sign Up</title>
  124. {% endblock %}
  125. {% block body %}
  126.  
  127.  
  128. <h3>Sign Up As Worker</h3>
  129. <form method="post">
  130. {% csrf_token %}
  131. {{ form_worker.as_p }}
  132. <button type="submit">Sign up</button>
  133. </form>
  134.  
  135. <h3>Sign Up As Customer</h3>
  136. <form method="post" action = "home.html">
  137. {% csrf_token %}
  138. {{ form_customer.as_p }}
  139. <button type="submit">Sign up</button>
  140. </form>
  141. {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement