mirror of https://github.com/stijndcl/didier
				
				
				
			Fix duplicate schedule slots
							parent
							
								
									ca38d06d98
								
							
						
					
					
						commit
						3a44a1b679
					
				| 
						 | 
					@ -52,7 +52,7 @@ class Schedule(EmbedBaseModel):
 | 
				
			||||||
        if not self.slots:
 | 
					        if not self.slots:
 | 
				
			||||||
            return Schedule()
 | 
					            return Schedule()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        personal_slots = set()
 | 
					        personal_slots = []
 | 
				
			||||||
        for slot in self.slots:
 | 
					        for slot in self.slots:
 | 
				
			||||||
            alt_id = slot.alternative_overarching_role_id
 | 
					            alt_id = slot.alternative_overarching_role_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,24 +65,9 @@ class Schedule(EmbedBaseModel):
 | 
				
			||||||
                alt_id is not None and alt_id in roles
 | 
					                alt_id is not None and alt_id in roles
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            if role_found or overarching_role_found:
 | 
					            if role_found or overarching_role_found:
 | 
				
			||||||
                personal_slots.add(slot)
 | 
					                personal_slots.append(slot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return Schedule(personal_slots)
 | 
					        return Schedule(set(personal_slots))
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def simplify(self):
 | 
					 | 
				
			||||||
        """Merge sequential slots in the same location into one
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Note: this is done in-place instead of returning a new schedule!
 | 
					 | 
				
			||||||
        (The operation is O(n^2))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Example:
 | 
					 | 
				
			||||||
            13:00 - 14:30: AD3 in S9
 | 
					 | 
				
			||||||
            14:30 - 1600: AD3 in S9
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        for first in self.slots:
 | 
					 | 
				
			||||||
            for second in self.slots:
 | 
					 | 
				
			||||||
                if first == second:
 | 
					 | 
				
			||||||
                    continue
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @overrides
 | 
					    @overrides
 | 
				
			||||||
    def to_embed(self, **kwargs) -> discord.Embed:
 | 
					    def to_embed(self, **kwargs) -> discord.Embed:
 | 
				
			||||||
| 
						 | 
					@ -179,7 +164,8 @@ class ScheduleSlot:
 | 
				
			||||||
            return False
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.start_time == other.end_time:
 | 
					        if self.start_time == other.end_time:
 | 
				
			||||||
            other.end_time = self.end_time
 | 
					            self.start_time = other.start_time
 | 
				
			||||||
 | 
					            self._hash = hash(f"{self.course.course_id} {str(self.start_time)}")
 | 
				
			||||||
            return True
 | 
					            return True
 | 
				
			||||||
        elif self.end_time == other.start_time:
 | 
					        elif self.end_time == other.start_time:
 | 
				
			||||||
            self.end_time = other.end_time
 | 
					            self.end_time = other.end_time
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue