The more simplest way is to set UNIQUE to the column of the database you 
want it to stay unique. That way a duplicate record will not be inserted 
and the insert query will return an error stating "record already exist". 
Check how to set your required column(s) "unique". This way is the fastest 
and easiest.  

On Friday, July 17, 2020 at 2:38:43 PM UTC+5 mostwanted wrote:

> Hey Dave, thanks for replying,
> This below is what I tried & it seems to be working, idont know if the 
> best solution but please help e where u think I could improve it:
>
> def my_validator(form):
>     details=db(db.lecture).select()
>     for d in details:
>         if form.vars.lecturer==d.lecturer.id and form.vars.lecture_time==d
> .lecture_time:
>             form.errors.lecturer=SPAN("There is a conflict with these 
> values!", _style="font-weight: bold;")
>             form.errors.lecture_time=SPAN("There is a conflict with these 
> values!", _style="font-weight: bold;")
>
> def index():
>     details=db(db.lecture).select()
>
>     form=SQLFORM(db.lecture)
>     if form.process(onvalidation=my_validator).accepted:
>         response.flash=T('Submitted')
>     return locals()
>
>
>
>
> On Friday, July 17, 2020 at 8:12:17 AM UTC+2, Dave S wrote:
>>
>>
>>
>> On Thursday, July 16, 2020 at 7:56:47 AM UTC-7, mostwanted wrote:
>>>
>>> I have created a calendar that assigns lesson_times & class_rooms 
>>> randomly. So far it has been working properly until a conflic arose, one 
>>> lecturer being assigned 2 classes at the same time, another one one 
>>> class_room being assigned different lectures at the same time! I wanna 
>>> avoid these
>>> *. *
>>>
>>> *How can I avoid entering 2 critical & determinant details that are 
>>> similar to other critical & determinant ones that already exist in the 
>>> database?*
>>>
>>> Time on its own being similar to another recorded time value is ok, a 
>>> single classroom_number value being similar to another one recorded is ok, 
>>> the problem is having both time and classroom_number being similar or time 
>>> & a lecturer being similar to ones recorded because that means a clash in 
>>> lessons!
>>>
>>> If the generated time & classroom number are similar to those that 
>>> already exists I want the form to fail to submit with a flag message that 
>>> warns the system user of a conflict thats causing failure to submit. (I 
>>> have it in my head but i'm failing to put it on code)
>>>
>>> Regards;
>>>
>>> Mostwanted
>>>
>>
>> What you want is related to the standard validator IS_NOT_IN_DB() .  See
>> <URL:
>> https://web2py.com/books/default/chapter/29/07/forms-and-validators#Database-validators
>> >
>> That only checks one field at a time and I think it is really a tuple of 
>> fields that you are concerned about.  After all, there can be several 
>> classes at 10 on Tuesday, and it is only the combination of 10 on Tuesday 
>> with Room 310 that has to be unique, or the combination of 10 on Tuesday 
>> with  Professor Fusspot .
>>
>> I would look at one of two approaches:
>>
>> 1) creating a calculated field from the fields of concern, and applying 
>> IS_NOT_IN_DB() to that.
>>
>> or
>>
>> 2) Using the onvalidation() call backs to check further.
>> <URL:
>> https://web2py.com/books/default/chapter/29/07/forms-and-validators#onvalidation
>> >
>>
>>
>> You can also write a custom validator (the discussion is just down the 
>> page from IS_NOT_IN_DB()), but I'm not sure that is helpful here.
>>
>> /dps
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/162199b1-a37e-4ecd-af69-4bb101ea715dn%40googlegroups.com.

Reply via email to