Fix venueless token creation
Do not generate token or checkin if user does not have a ticket. Clear existing token if user no longer has a ticket.
This commit is contained in:
		
							parent
							
								
									0a6d53162f
								
							
						
					
					
						commit
						bf46c82fe4
					
				
					 4 changed files with 24 additions and 7 deletions
				
			
		|  | @ -41,8 +41,10 @@ | |||
|     </div> | ||||
|   </div> | ||||
|   {% else %} | ||||
|   {% if purchased %} | ||||
| 
 | ||||
|   {% flag "venueless_dashboard" %} | ||||
|   {% venueless_login_url as venueless_url %} | ||||
|   {% if venueless_url %} | ||||
|   <div class="row"> | ||||
|     <div class="col-12 mb-3"> | ||||
|       <h3>Join the Conference</h3> | ||||
|  | @ -52,8 +54,8 @@ | |||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|   {% endflag %} | ||||
|   {% endif %} | ||||
|   {% endflag %} | ||||
| 
 | ||||
|   <div class="row"> | ||||
|     <div class="col-md-6 mb-3 mb-md-0"> | ||||
|  |  | |||
|  | @ -163,6 +163,14 @@ def ticket_type(context): | |||
| 
 | ||||
| @register.simple_tag(takes_context=True) | ||||
| def venueless_login_url(context): | ||||
|     # Check that they have a ticket first (only item from category 1) | ||||
|     items = registrasion_tags.items_purchased(context, 1) | ||||
|     if not items: | ||||
|         return '' | ||||
| 
 | ||||
|     # Get token from checkin | ||||
|     user=context.request.user | ||||
|     checkin = CheckIn.objects.get_or_create(user=user)[0] | ||||
|     return f'{settings.VENUELESS_URL}/#token={checkin.venueless_token}' | ||||
|     if checkin.venueless_token: | ||||
|         return f'{settings.VENUELESS_URL}/#token={checkin.venueless_token}' | ||||
|     return '' | ||||
|  |  | |||
							
								
								
									
										11
									
								
								vendor/regidesk/regidesk/models.py
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/regidesk/regidesk/models.py
									
										
									
									
										vendored
									
									
								
							|  | @ -167,7 +167,7 @@ class CheckIn(models.Model): | |||
|             self.venueless_traits = ",".join(traits) | ||||
|             updated = True | ||||
| 
 | ||||
|         if not self._venueless_token: | ||||
|         if not self.venueless_traits or not self._venueless_token: | ||||
|             self._venueless_token = self._generate_venueless_token() | ||||
|             updated = True | ||||
| 
 | ||||
|  | @ -177,9 +177,12 @@ class CheckIn(models.Model): | |||
|         return self._venueless_token | ||||
| 
 | ||||
|     def _get_venueless_traits(self): | ||||
|         traits = ["attendee"] | ||||
| 
 | ||||
|         """ Returns a list of traits based on the user's ticket """ | ||||
|         ticket_type = self.user.attendee.ticket_type | ||||
|         if not ticket_type: | ||||
|             return [] | ||||
| 
 | ||||
|         traits = ["attendee"] | ||||
| 
 | ||||
|         if ticket_type == "Conference Volunteer": | ||||
|             traits.append("volunteer") | ||||
|  | @ -207,6 +210,8 @@ class CheckIn(models.Model): | |||
| 
 | ||||
|     def _generate_venueless_token(self): | ||||
|         """ Generate token for Venueless login """ | ||||
|         if not self.venueless_traits: | ||||
|             return "" | ||||
| 
 | ||||
|         issued_at = datetime.datetime.utcnow() | ||||
|         expiry = settings.LCA_END + datetime.timedelta(days=1) | ||||
|  |  | |||
|  | @ -60,8 +60,10 @@ class Attendee(models.Model): | |||
|             cart__invoice__status=Invoice.STATUS_PAID, | ||||
|             cart__invoice__user=self.user | ||||
|         ) | ||||
|         if len(tickets) >1: | ||||
|         if len(tickets) > 1: | ||||
|             raise ValueError("Too many tickets for attendee %s", self) | ||||
|         if len(tickets) == 0: | ||||
|             return "" | ||||
|         return tickets[0].product.name | ||||
| 
 | ||||
| class AttendeeProfileBase(models.Model): | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Joel Addison
						Joel Addison