Open rscullin opened 6 years ago
Are public reg stations different from the normal self-registration kiosks? If they are the same, that's already a separate URL we can track.
This is totally doable, would be pretty easy. I won't have time to get to it until late December, if at all. Pull requests welcome though!
Not sure anything needs coding if web-based reg is a different URL from self-reg kiosks
-- Bob Earl r.a.earl@gmail.com FAX: +1 440 919 5086
On Fri, Nov 24, 2017 at 1:16 PM, Rob Ruana notifications@github.com wrote:
This is totally doable, would be pretty easy. I won't have time to get to it until late December, if at all. Pull requests welcome though!
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/magfest/ubersystem/issues/2979#issuecomment-346879071, or mute the thread https://github.com/notifications/unsubscribe-auth/AIXSFTH8H1TJwauVkFSm9mu171x971hrks5s5wgWgaJpZM4QqAGV .
@thaeli Same thing, different name.
@earl7399 Do we have any way of viewing stats from previous years of self-reg vs pre-reg/online reg?
I'd assume the Eli would know the answer, but also assume that without weblogs, nope. Hmmm. Is there an existing field in the Attendee db that could hold the info? I don't recall seeing any useful diagrams, can't find models.py in the main repo, and everything I look at is full of stuff I cannot parse.
-- Bob Earl r.a.earl@gmail.com FAX: +1 440 919 5086
On Fri, Nov 24, 2017 at 3:42 PM, Robert Scullin notifications@github.com wrote:
@thaeli https://github.com/thaeli Same thing, different name.
@earl7399 https://github.com/earl7399 Do we have any way of viewing stats from previous years of self-reg vs pre-reg/online reg?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/magfest/ubersystem/issues/2979#issuecomment-346893823, or mute the thread https://github.com/notifications/unsubscribe-auth/AIXSFc3BbcIJoEf-2dqzgLE0b-zJzlluks5s5yoYgaJpZM4QqAGV .
@earl7399 models.py
was refactored under the models
directory! You can find the Attendee
class under models/attendee.py
😄
Hence my comment about being unable to parse. So we don't actually have anything like a simple diagram / list of fields and their uses?
-- Bob Earl r.a.earl@gmail.com FAX: +1 440 919 5086
On Fri, Nov 24, 2017 at 5:35 PM, Rob Ruana notifications@github.com wrote:
@earl7399 https://github.com/earl7399 models.py was refactored under the models directory! You can find the Attendee class under models/attendee.py 😄
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/magfest/ubersystem/issues/2979#issuecomment-346902912, or mute the thread https://github.com/notifications/unsubscribe-auth/AIXSFSrZL03R8cmaa6iuxqhBwY_ewlmWks5s50S-gaJpZM4QqAGV .
😬
I don't know why I didn't think of looking at the DB table directly:
Table "public.attendee"
Column | Type | Modifiers
----------------------+-----------------------------+-----------------------------------------------
address1 | character varying | not null default ''::character varying
address2 | character varying | not null default ''::character varying
admin_notes | character varying | not null default ''::character varying
affiliate | character varying | not null default ''::character varying
age_group | integer | default 178244408
amount_extra | integer | not null default 0
amount_paid | integer | not null default 0
amount_refunded | integer | not null default 0
badge_num | integer |
badge_printed_name | character varying | not null default ''::character varying
badge_status | integer | not null default 163076611
badge_type | integer | not null default 51352218
base_badge_price | integer | not null default 0
birthdate | date |
can_spam | boolean | not null default false
can_work_setup | boolean | not null default false
can_work_teardown | boolean | not null default false
cellphone | character varying | not null default ''::character varying
checked_in | timestamp without time zone |
city | character varying | not null default ''::character varying
comments | character varying | not null default ''::character varying
confirmed | timestamp without time zone |
country | character varying | not null default ''::character varying
ec_name | character varying | not null default ''::character varying
ec_phone | character varying | not null default ''::character varying
email | character varying | not null default ''::character varying
extra_donation | integer | not null default 0
extra_merch | character varying | not null default ''::character varying
first_name | character varying | not null default ''::character varying
for_review | character varying | not null default ''::character varying
found_how | character varying | not null default ''::character varying
got_merch | boolean | not null default false
group_id | uuid |
hotel_eligible | boolean | not null default false
hotel_pin | character varying |
id | uuid | not null
interests | character varying | not null default ''::character varying
international | boolean | not null default false
last_name | character varying | not null default ''::character varying
legal_name | character varying | not null default ''::character varying
no_cellphone | boolean | not null default false
nonshift_hours | integer | not null default 0
overridden_price | integer |
paid | integer | not null default 121378471
past_years | character varying | not null default ''::character varying
payment_method | integer |
placeholder | boolean | not null default false
promo_code_id | uuid |
public_id | uuid | not null
reg_station | integer |
regdesk_info | character varying | not null default ''::character varying
region | character varying | not null default ''::character varying
registered | timestamp without time zone | not null default timezone('utc'::text, now())
requested_hotel_info | boolean | not null default false
ribbon | character varying | not null default ''::character varying
second_shirt | integer | not null default 194196342
shirt | integer | not null default 0
staffing | boolean | not null default false
watchlist_id | uuid |
zip_code | character varying | not null default ''::character varying
This looks like an alpha-sorted list comparable to the non-sorted list I pulled from the attendees.py and posted in #devops.
It looks like there are no extra fields (as I expected).
Since adding a field is pretty trivial at this point (thanks, Rob!), that's not a show-stopper.
What may be one is that I had a brief discussion with @kitsuta and it seems that while at Fest, the normal pre-reg URL gets redirected to the at-Fest URL. So we won't be able to differentiate based on URL. She suggested that anyone who uses an At-Door station to pre-reg would then be able to share whatever URL they saw there, so a parameter intended to indicate that might end up out in the real world.
If we're trying to track At-Door-station regs vs Internet-based regs, can we use the IP to determine which is which? We'll control the IP for the stations, so we could use a lookup table to determine what to put in "pre-reg_from" field ... "Internet" vs "At Door". Maybe even have some other options to flesh that out ... "Imported", "MIVS", "Guest", "Dealer", etc.
How does something like this sound?
-- Bob Earl r.a.earl@gmail.com FAX: +1 440 919 5086
On Fri, Nov 24, 2017 at 7:39 PM, Rob Ruana notifications@github.com wrote:
I don't know why I didn't think of looking at the DB table directly:
Table "public.attendee" Column | Type | Modifiers
----------------------+-----------------------------+----------------------------------------------- address1 | character varying | not null default ''::character varying address2 | character varying | not null default ''::character varying admin_notes | character varying | not null default ''::character varying affiliate | character varying | not null default ''::character varying age_group | integer | default 178244408 amount_extra | integer | not null default 0 amount_paid | integer | not null default 0 amount_refunded | integer | not null default 0 badge_num | integer | badge_printed_name | character varying | not null default ''::character varying badge_status | integer | not null default 163076611 badge_type | integer | not null default 51352218 base_badge_price | integer | not null default 0 birthdate | date | can_spam | boolean | not null default false can_work_setup | boolean | not null default false can_work_teardown | boolean | not null default false cellphone | character varying | not null default ''::character varying checked_in | timestamp without time zone | city | character varying | not null default ''::character varying comments | character varying | not null default ''::character varying confirmed | timestamp without time zone | country | character varying | not null default ''::character varying ec_name | character varying | not null default ''::character varying ec_phone | character varying | not null default ''::character varying email | character varying | not null default ''::character varying extra_donation | integer | not null default 0 extra_merch | character varying | not null default ''::character varying first_name | character varying | not null default ''::character varying for_review | character varying | not null default ''::character varying found_how | character varying | not null default ''::character varying got_merch | boolean | not null default false group_id | uuid | hotel_eligible | boolean | not null default false hotel_pin | character varying | id | uuid | not null interests | character varying | not null default ''::character varying international | boolean | not null default false last_name | character varying | not null default ''::character varying legal_name | character varying | not null default ''::character varying no_cellphone | boolean | not null default false nonshift_hours | integer | not null default 0 overridden_price | integer | paid | integer | not null default 121378471 past_years | character varying | not null default ''::character varying payment_method | integer | placeholder | boolean | not null default false promo_code_id | uuid | public_id | uuid | not null reg_station | integer | regdesk_info | character varying | not null default ''::character varying region | character varying | not null default ''::character varying registered | timestamp without time zone | not null default timezone('utc'::text, now()) requested_hotel_info | boolean | not null default false ribbon | character varying | not null default ''::character varying second_shirt | integer | not null default 194196342 shirt | integer | not null default 0 staffing | boolean | not null default false watchlist_id | uuid | zip_code | character varying | not null default ''::character varying
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/magfest/ubersystem/issues/2979#issuecomment-346909521, or mute the thread https://github.com/notifications/unsubscribe-auth/AIXSFd12d6DiplRqmX7y8xwvjD2CluGWks5s52HPgaJpZM4QqAGV .
Oh, capturing the IP address is a great idea! And it could be used for a lot of other things in addition to determining at-door vs internet registrations!
Okay, I'll see if I can poke at this a bit over the next week.
From what little I know, I'll need to modify the pages that update the attendee DB and the attendee.py.
My default thought would be a DB table to hold "known internal IPs" and maybe a webpage to interface with that. Or would you rather I just go with a hardcoded string somewhere? If we go that way can we update it w/out restarting RAMS to re-read it?
-- Bob Earl r.a.earl@gmail.com FAX: +1 440 919 5086
On Sat, Nov 25, 2017 at 4:52 PM, Rob Ruana notifications@github.com wrote:
Oh, capturing the IP address is a great idea! And it could be used for a lot of other things in addition to determining at-door vs internet registrations!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/magfest/ubersystem/issues/2979#issuecomment-346968588, or mute the thread https://github.com/notifications/unsubscribe-auth/AIXSFamboc0PHShONnNj02EspLjxw6AOks5s6IwpgaJpZM4QqAGV .
We can probably start just by capturing the ip in a column like registered_from_ip
or something (I'm not too particular about the name). As long as we're capturing the data, we can always go back and analyze it later against known ips (we'll just be sure to record the ips of our kiosk machines).
Also, I think you can get the ip address like so:
cherrypy.request.headers.get('X-Real-IP')
I believe that will get the originating ip address of the request. Someone correct me if I'm wrong 😅
My mistake, I originally said to use 'Remote-Addr'
but I think the correct header is 'X-Real-IP'
Both TechOps and Reg would like to keep track of how many attendees register for MAGFest at event using the Public Registration Kiosks, so that we can better plan how many stations are needed in the future. Additionally, we would like to be able to view this number though Uber. Daily breakdowns would be a nice-to-have.
TechOps can configure the Kiosks to point to a special reg page, the reg page with a query string (like
?publicreg=true
), or anything else.