예제 #1
0
    def create(cls,
               doctor_uuid,
               visitor,
               date,
               time,
               site=AppointmentSite.IN_PLACE):
        doctor = DoctorProfileSelector.get_by_uuid(doctor_uuid)
        status = AppointmentStatus.ACCEPTED if doctor.auto_confirmation else AppointmentStatus.REQUESTED

        try:
            return Appointment.objects.create(
                consultation_duration=doctor.consultation_duration,
                doctor=doctor,
                visitor=visitor,
                site=site,
                status=status,
                date=date,
                time=time,
            )
        except IntegrityError:
            raise SimpleValidationError(**UNAVAILABLE_DATETIME)
예제 #2
0
    def get_by_token(cls, token: str, category: str) -> Any:
        try:
            return PendingAction.objects.get(token=token, category=category)

        except PendingAction.DoesNotExist:
            raise SimpleValidationError(**INVALID_TOKEN)
예제 #3
0
 def perform_confirm_subscribe(cls, payload):
     subscribe_url = payload.get('SubscribeURL')
     if subscribe_url:
         subscribe_response = requests.get(subscribe_url)
         if not subscribe_response.ok:
             raise SimpleValidationError(**SNS_ENDPOINT_SUBSCRIBE_FAILED)
예제 #4
0
 def validate_signature(cls, payload):
     if not cls.has_valid_signature(payload):
         raise SimpleValidationError(**INVALID_SNS_SIGNATURE)
예제 #5
0
 def validate_sns_headers(cls, request_headers):
     if not any(elem in SNSValidator.SNS_HEADERS for elem in request_headers):
         raise SimpleValidationError(**NOT_SNS_REQUEST)
예제 #6
0
 def validate_sns_method(cls, method):
     if method != 'POST':
         raise SimpleValidationError(**METHOD_NOT_ALLOWED)
예제 #7
0
    def create_link(cls, url, alias=None, owner=None):
        if Link.objects.filter(alias=alias).exists():
            raise SimpleValidationError(**LINK_ALIAS_IS_ALREADY_USED)

        _alias = alias or cls.generate_alias()
        return Link.objects.create(url=url, alias=_alias, owner=owner)