th1a | I have http://69.164.203.135/d3/flourish/comp_report.json | 00:00 |
---|---|---|
th1a | Which I've made pretty terse since these are big files. | 00:00 |
th1a | http://69.164.203.135/d3/flourish/comp_report.js | 00:00 |
th1a | Is the script. | 00:00 |
th1a | So I read the json and then have this callback. | 00:01 |
th1a | And I go down through and loop through the metadata, but then essentially I'm stuck. | 00:01 |
th1a | I don't know how to "back up" | 00:02 |
th1a | And add the cell for my graph. | 00:02 |
* replaceafill goes see | 00:02 | |
replaceafill | datum lol | 00:04 |
th1a | Well... they just call it "d" mostly in the examples, which was so terse it confused me. | 00:05 |
replaceafill | :D | 00:05 |
th1a | I kept thinking "function d, what is function d?!?" | 00:06 |
th1a | So that reminds me that it is a parameter. | 00:06 |
th1a | I'm not sure how much of that makes any sense compared to jquery. | 00:08 |
replaceafill | it does | 00:08 |
th1a | Does it have something like "enter?" | 00:09 |
replaceafill | no | 00:09 |
th1a | enter() basically loops through the data. | 00:10 |
replaceafill | i think in jquery you get that automatically | 00:10 |
th1a | So the problem is that once I get down to the point of looping through the metadata, I don't know how to get "back" up a level in my data structure. | 00:11 |
th1a | And all this is so context dependent. | 00:11 |
replaceafill | if i understand your script correctly: | 00:13 |
th1a | I just don't know how I need to break this up sanely. | 00:13 |
replaceafill | i'd think so | 00:13 |
replaceafill | at least from the beginning | 00:13 |
replaceafill | once you have have it working you could chain things together | 00:13 |
replaceafill | th1a, do you have this in your branch? | 00:14 |
th1a | Yes. | 00:14 |
replaceafill | so i can modify the code and see | 00:14 |
replaceafill | ok | 00:14 |
th1a | I just need to add the last cell in the row and start adding svg based on the remaining numbers in the json record. | 00:15 |
replaceafill | th1a, it seems like you haven't pushed these changes yet | 00:15 |
replaceafill | your last revision is 2 | 00:15 |
replaceafill | https://code.launchpad.net/~tom-hoffman/+junk/d3 | 00:15 |
th1a | OK... make upload doesn't do that? | 00:16 |
th1a | OK, pushed. | 00:16 |
replaceafill | kk | 00:16 |
th1a | It might be easier to add the svg first and insert the other stuff in front of it. | 00:17 |
replaceafill | did you add comp_report.js to the branch? | 00:17 |
replaceafill | can't see it | 00:17 |
th1a | OK, try now. | 00:18 |
th1a | I knew the HTML part would screw me up... | 00:19 |
replaceafill | :D | 00:19 |
th1a | This part could be done with jquery. | 00:20 |
th1a | Maybe you should just do that. | 00:20 |
th1a | Or... just javascript for that matter. | 00:20 |
th1a | That's probably the solution to this problem. | 00:20 |
replaceafill | yes we could do that | 00:20 |
th1a | Why don't you do that. | 00:21 |
th1a | I don't need you looking up d3 stuff to make a table. | 00:21 |
th1a | Just give me a another cell in each row with the class "chart" and with an id matching the section. | 00:22 |
th1a | Make sense? | 00:22 |
replaceafill | the section? | 00:22 |
th1a | The section id. | 00:22 |
replaceafill | tcs | 00:23 |
replaceafill | etc | 00:23 |
replaceafill | ? | 00:23 |
th1a | The third thing in meta | 00:23 |
replaceafill | hhmm | 00:23 |
replaceafill | you'd have two ids with that value ,right? | 00:23 |
replaceafill | one for the tr | 00:23 |
th1a | meta is [Program Area, Course, Section, Instructor] | 00:23 |
replaceafill | and one for that cell | 00:23 |
replaceafill | id should be unique | 00:23 |
th1a | Pick one. | 00:24 |
th1a | I should be able to get the right cell either way. | 00:24 |
replaceafill | right | 00:24 |
th1a | select row than cell by class should work. | 00:24 |
replaceafill | ok | 00:24 |
* replaceafill adds jquery to the branch | 00:25 | |
replaceafill | ah! we already have it :D | 00:25 |
th1a | That's the nice thing about jquery in 2012. | 00:26 |
th1a | OK, I have to go start supper. | 00:27 |
replaceafill | ok, i'll send you an email when i'm done | 00:27 |
th1a | Hopefully this will be pretty easy for you... I think you can just pass me the parsed json as a variable. | 00:27 |
th1a | Which is the nice thing about json in 2012. | 00:28 |
th1a | Thanks replaceafill. | 00:28 |
replaceafill | last question | 00:28 |
replaceafill | so you want me to change the table generation from d3 to jquery completely? | 00:29 |
replaceafill | i was going to use part of what you've done already | 00:29 |
replaceafill | but that would mix things up | 00:29 |
replaceafill | th1a, never mind | 00:31 |
*** alga has quit IRC | 01:00 | |
*** ignas has quit IRC | 01:18 | |
*** th1a has quit IRC | 01:33 | |
*** replaceafill has quit IRC | 03:02 | |
*** ignas has joined #schooltool | 03:15 | |
*** ignas has quit IRC | 04:01 | |
*** th1a has joined #schooltool | 04:18 | |
*** aks has joined #schooltool | 05:19 | |
*** aks has quit IRC | 05:23 | |
*** aks has joined #schooltool | 05:23 | |
*** th1a has quit IRC | 07:07 | |
*** yvl has joined #schooltool | 09:17 | |
*** yvl has quit IRC | 10:32 | |
*** yvl has joined #schooltool | 10:45 | |
*** ignas has joined #schooltool | 11:29 | |
*** menesis has quit IRC | 11:31 | |
*** ignas has quit IRC | 12:01 | |
*** alga has joined #schooltool | 12:23 | |
*** menesis has joined #schooltool | 13:20 | |
*** alga has quit IRC | 13:54 | |
*** alga has joined #schooltool | 14:06 | |
*** aks has quit IRC | 14:16 | |
*** th1a has joined #schooltool | 15:09 | |
*** alga has quit IRC | 15:59 | |
*** replaceafill has joined #schooltool | 16:19 | |
th1a | hi replaceafill, aelkner_, yvl, menesis. | 16:30 |
yvl | morning! | 16:30 |
menesis | hi | 16:31 |
replaceafill | good morning/afternoon | 16:31 |
aelkner_ | morning | 16:32 |
th1a | replaceafill: Do you see what I was doing wrong with HTML ID's? | 16:32 |
replaceafill | th1a, ah yes | 16:32 |
th1a | (I was using numbers) | 16:32 |
replaceafill | th1a, d3 seems very picky about it :) | 16:32 |
th1a | That only cost me half a day. | 16:32 |
th1a | Yes, I guess everything else might not be that pedantic about it. | 16:33 |
th1a | The good news is that my understanding of d3 in general is probably not as broken as I thought! | 16:34 |
replaceafill | :D | 16:34 |
th1a | OK, yvl, would you like to start us off? | 16:34 |
yvl | ok | 16:34 |
yvl | I finished AJAXy work yesterday | 16:35 |
yvl | and pushed to trunk | 16:35 |
yvl | and started looking at Selenium today | 16:35 |
yvl | and yes, replaceafill, they do break on my machine! \o/ | 16:35 |
replaceafill | yay!! | 16:35 |
replaceafill | :0 | 16:35 |
replaceafill | :) | 16:35 |
yvl | that's it from me, th1a | 16:36 |
th1a | So... do you want to work on this until next Wednesday? | 16:36 |
th1a | I don't want you to go beyond that point. | 16:36 |
th1a | And perhaps it would be better to just start the CanDo stuff now, which hopefully has a fair amount of slack time for you. | 16:37 |
* yvl would like to work on tests Thu | 16:37 | |
yvl | and maybe Fri | 16:37 |
yvl | just to move the most annoying things out of the way | 16:38 |
yvl | or I can start on CanDo tomorrow | 16:38 |
yvl | your call :) | 16:38 |
th1a | Gathering low hanging fruit this week sounds perfect. Start on CanDo monday. | 16:38 |
yvl | deal :) | 16:39 |
th1a | OK. aelkner_? | 16:39 |
aelkner_ | ok, i finished the changes to the server tabs view | 16:40 |
aelkner_ | and then i reacted to the intervention email bug report | 16:41 |
aelkner_ | it lead me to learn more about our existing email utility | 16:41 |
aelkner_ | and i decided that with our queue explaining any mail delivery problems | 16:41 |
aelkner_ | i didn't need to block email from being sent to the utility myself due to email addresses issing | 16:42 |
aelkner_ | so i got rid of the whole EmailMessage class from sendmail | 16:42 |
aelkner_ | i realized something was missing in doing this that i need to attend to | 16:43 |
aelkner_ | i still need to get rid of the message and goal added subscribers | 16:43 |
aelkner_ | and use the form elements that we created for flourish, Email, Yes/No | 16:44 |
aelkner_ | instead to determine whether to send the email | 16:44 |
aelkner_ | i'll change that today | 16:44 |
th1a | Uh... ok. | 16:45 |
aelkner_ | oh, and i added a mail icon to flourish resources for use in displaying which intervention person has emial | 16:45 |
th1a | I definitely want to make sure that it is clearer to the users who actually has email in the system. | 16:45 |
th1a | OK. | 16:45 |
aelkner_ | it's light gray so it doesn't show up very well against the darker gray backround | 16:45 |
aelkner_ | but you can decide after you've seen it | 16:46 |
th1a | Maybe we could have a confirmation message listing who was sent the email. | 16:46 |
aelkner_ | the form disappears when you add a message or goal | 16:46 |
aelkner_ | so i don't know where we would put a conform message in that case | 16:46 |
th1a | Dialog? | 16:46 |
aelkner_ | dialog? | 16:47 |
th1a | Confirmation dialog? | 16:47 |
th1a | "Emails sent to: Alan Elkner, Jeff Elkner." | 16:47 |
aelkner_ | a popup modal that has just an Ok button | 16:48 |
th1a | Yes. | 16:48 |
aelkner_ | hitting ok makes the modal and the view behind it disappear | 16:48 |
th1a | It is just that having people think that emails have been sent when they haven't is bad. | 16:48 |
th1a | Especially in this kind of situation. | 16:49 |
th1a | So a little more intrusive notification might be justified. | 16:50 |
aelkner_ | replaceafill, send() returns True if all went well and False if there was an error | 16:50 |
aelkner_ | whenever it returns false, the email is queued | 16:50 |
replaceafill | yes | 16:50 |
aelkner_ | th1a, should i just say in that case that there was an error sending the email? | 16:51 |
aelkner_ | i mean, i can't say which error it is, but i can instruct them to consult the queue | 16:51 |
th1a | We should notify the user, yes. | 16:52 |
replaceafill | "there was an error, please check the email queue" | 16:52 |
replaceafill | (or something like that) :) | 16:52 |
th1a | That's a pretty shitty error message. | 16:52 |
aelkner_ | can users other than manager check the email queue | 16:52 |
th1a | Does the queue automatically try to resend later? | 16:52 |
replaceafill | th1a, no | 16:52 |
th1a | So... it isn't much of a queue then. | 16:53 |
replaceafill | that needs background processing | 16:53 |
replaceafill | iirc | 16:53 |
th1a | I think we just tell the user it failed and ideally why. | 16:53 |
aelkner_ | if the failure is related to missing email addresses then resending is fruitless | 16:53 |
aelkner_ | replaceafill, if we wanted to be able to tell the user what failed, the utility would need to change | 16:54 |
replaceafill | go ahead | 16:54 |
aelkner_ | send() would need to return a pointer to the queued message, not just True/False | 16:54 |
th1a | If we're thinking of not having an email address as representing a failed attempt to send an email, we're doing it wrong. | 16:55 |
aelkner_ | one ting that's weird is that not having a sender email address is ok in the case of using google as smtp server | 16:57 |
aelkner_ | because the google email account ends up as the sender address in the email | 16:57 |
th1a | The sender address is entirely irrelevant. | 16:57 |
aelkner_ | not the email setting of the user | 16:57 |
aelkner_ | ok, so i'll not worry about the sender address as we agreed yesterday, but i can not bother trying to send an email with no recipient addresses | 16:58 |
th1a | OK, so what about if the form had a [ ] send email copies of the message to: field | 16:58 |
th1a | which updated whenever you checked a person with an email address. | 16:58 |
aelkner_ | do you mean add that to the Email Yes/No field? | 17:00 |
th1a | Yes. | 17:00 |
aelkner_ | also, that field can be inactive until at least one email address is filled in | 17:01 |
th1a | Yes. | 17:01 |
aelkner_ | sounds helpful, interactive | 17:01 |
aelkner_ | what about if there is an error sending the email, do we need to change the utility? | 17:01 |
th1a | We don't need to report not having an email as an "error" here. We should reserve that for actual email processing errors. | 17:02 |
aelkner_ | not having anything more at the moment, we could only say 'there was an error sending...' | 17:03 |
aelkner_ | all i can think of for that is to change send() to return the __name__ of the queued error | 17:04 |
aelkner_ | and return 0 as success | 17:04 |
aelkner_ | doing so would require us to change anyone who calls send() in schooltool to change the logic | 17:04 |
aelkner_ | for interpreting the return value | 17:05 |
th1a | We don't use it anywhere else at this point, right? | 17:05 |
aelkner_ | i suppose it is only used by the send test emial view | 17:05 |
aelkner_ | but replaceafill may know otherwise | 17:05 |
replaceafill | nope | 17:06 |
replaceafill | that's the only part where it's used | 17:06 |
aelkner_ | ok, so noone has an objection to changing send() in this way | 17:06 |
th1a | No. It seems like something that is necessary anyhow. | 17:07 |
yvl | yes aelkner_ | 17:07 |
yvl | doesn't email have a status_code ? | 17:07 |
aelkner_ | queued email does | 17:08 |
yvl | and it has a __name__ | 17:09 |
yvl | once you do utility.send(email) | 17:09 |
yvl | email has a __name__ | 17:09 |
aelkner_ | actually, perhaps it would be better to return None for success and the email itself for failure | 17:10 |
yvl | and status_code not None, if .send returned False | 17:10 |
yvl | you can use status_messages to get the message for error code | 17:10 |
aelkner_ | yvl, actually, if the email send succeeds, there is no queued emial, so no __name__ of status | 17:11 |
aelkner_ | but if it fails, then the queued email will have a status code | 17:11 |
yvl | right | 17:11 |
yvl | no such thing as __name__ of queued error | 17:11 |
yvl | there's __name__ of email for reference | 17:11 |
aelkner_ | so i suggest returning the email itself on failure | 17:11 |
yvl | but I don't think you need that | 17:11 |
yvl | why return? | 17:12 |
aelkner_ | it's the email itself that matters | 17:12 |
yvl | you create it, right? | 17:12 |
aelkner_ | if i don't return it, then how does the caller of send() get it? | 17:12 |
yvl | the caller passes the email to send() ? | 17:12 |
yvl | or am I missing something | 17:12 |
replaceafill | yvl is right | 17:12 |
aelkner_ | ah, yes | 17:13 |
aelkner_ | so the caller of send can just check the email for the status | 17:13 |
aelkner_ | i see, it is updated in place | 17:13 |
yvl | if send returned false | 17:13 |
aelkner_ | so nothing needs to change in the utility, got it | 17:13 |
yvl | great :) | 17:14 |
aelkner_ | th1a, what should the error message say? | 17:14 |
yvl | and you can check email/browser/email.py | 17:14 |
aelkner_ | the email message failed to send with status code: n? | 17:14 |
yvl | for how to handle status_code | 17:14 |
th1a | aelkner_: Perhaps something meaningful to the user. | 17:14 |
yvl | see flourishemailview | 17:14 |
yvl | update | 17:14 |
yvl | if self.context.status_code is not None | 17:15 |
yvl | that part | 17:15 |
yvl | self.context is email there | 17:15 |
yvl | there it shows how to use email.message_parameters | 17:16 |
yvl | to obtain messages like: | 17:16 |
yvl | "The server XXXXXXX.org rejected the From: address "bob@fake.org"" | 17:16 |
aelkner_ | if self.context.status_code is not None: | 17:17 |
aelkner_ | that part, right? | 17:17 |
yvl | yes | 17:17 |
yvl | value=translate(...) | 17:17 |
yvl | replaceafill did a good job with emails :) | 17:17 |
replaceafill | it's obviously yvl's design :P | 17:18 |
yvl | :P | 17:18 |
aelkner_ | nice work guys! | 17:18 |
aelkner_ | ok, i can use that logic for the status error message | 17:18 |
yvl | cool | 17:18 |
th1a | OK, so I guess that will probably keep you busy. | 17:19 |
aelkner_ | yeah, and i can return to the section locations when i'm dne with that | 17:20 |
aelkner_ | yvl, your last changes are pretty final, right? | 17:20 |
yvl | yes | 17:20 |
aelkner_ | cool | 17:20 |
aelkner_ | that's it for me | 17:20 |
th1a | OK. | 17:21 |
th1a | I'd note that my time estimates later in the project chart were increasingly generous, so I'm not super worried about getting a bit behind right now. | 17:22 |
th1a | menesis? What would you think about a release in a week? | 17:23 |
menesis | ... | 17:24 |
menesis | can make one | 17:24 |
menesis | if tests pass | 17:24 |
th1a | I guess I'm mainly saying I don't think we should start one in less than a week. | 17:24 |
th1a | We've got several fixes in progress. | 17:25 |
th1a | Well, perhaps not "several." | 17:25 |
* th1a has thrown menesis off track... | 17:29 | |
menesis | I haven't yet finished reviewing/testing all the new code/features you all committed in last week | 17:31 |
th1a | OK, that's fine. | 17:31 |
menesis | I am working on the scripts to support ubuntu instances | 17:33 |
menesis | commands to reset password, pack db | 17:33 |
th1a | OK. I want those too... | 17:34 |
th1a | I think menesis is experiencing time dilation. | 17:36 |
menesis | did I miss a question? | 17:37 |
th1a | Are you done menesis? | 17:37 |
menesis | yes | 17:37 |
* th1a was just waiting for the next comment. | 17:37 | |
th1a | OK, thanks menesis! | 17:37 |
th1a | replaceafill? | 17:37 |
replaceafill | ok | 17:38 |
replaceafill | i finished and merged the id card changes | 17:38 |
replaceafill | and yesterday i started reviewing yvl's new stuff on ajax tables | 17:38 |
replaceafill | my next task is to make the gradebooks "ajaxy" | 17:38 |
replaceafill | i think understanding the new table.js resource has been the most difficult part | 17:39 |
replaceafill | several new jquery concepts for me :) | 17:39 |
replaceafill | deferred, promisses, success on jqxhr | 17:39 |
replaceafill | but i think i'm getting it | 17:40 |
replaceafill | my question for yvl | 17:40 |
yvl | listening | 17:40 |
replaceafill | how do you think your ajax table work can be used for ajaxing the gradebooks? | 17:41 |
replaceafill | i mean | 17:41 |
replaceafill | can you recommend to focus on a specific part of your work that i can reuse? | 17:41 |
yvl | skin/flourish/ajax.py I think | 17:41 |
replaceafill | i (kind of) understand the new contents for creating the tables, filters, etc | 17:41 |
replaceafill | but i can't see how to use them in this new task | 17:42 |
yvl | well, they're a bit... whats the opposite of underkill? ;) | 17:42 |
replaceafill | :D | 17:42 |
yvl | I don't think you can reuse anything from schooltool.table | 17:42 |
yvl | at least I wouldn't bother | 17:43 |
replaceafill | ah ok | 17:43 |
yvl | but you can look at how that's done | 17:43 |
yvl | and you can use the AJAXPart things | 17:43 |
yvl | if you find them useful | 17:44 |
yvl | basically, if you need a viewlet that you can POST into | 17:44 |
yvl | as opposed to posting to the page itself | 17:44 |
yvl | than you can do an AJAXPart | 17:44 |
replaceafill | that's what i still don't see in the "ajaxify the gradebook" task yet | 17:44 |
replaceafill | the submit part | 17:44 |
replaceafill | well, i see it for the "Save" button and all | 17:45 |
replaceafill | but not for building the actual gradebook | 17:45 |
* yvl waves hands :D | 17:46 | |
replaceafill | although you create the table tables (persons, sections, etc) in a similar fashion i guess | 17:46 |
yvl | in my case, I needed two or more tables per page | 17:46 |
yvl | that had to be independent | 17:46 |
yvl | adding submit on-grade-changed and doing the gradebook view update sounds a bit... heavy | 17:47 |
* yvl would probably add something like gradebook.html/ajax/grades | 17:47 | |
yvl | that handles the grade saving part | 17:48 |
replaceafill | right | 17:48 |
replaceafill | but all the js will need to be coded, right? | 17:49 |
yvl | yes | 17:49 |
replaceafill | i mean, we cannot reuse yours | 17:49 |
replaceafill | got it | 17:49 |
yvl | copy-paste! :) | 17:49 |
replaceafill | that's what i thought :P | 17:49 |
yvl | if it's useful in any way | 17:49 |
yvl | you'll likely end up with quite different js anyway | 17:49 |
replaceafill | yes | 17:49 |
replaceafill | cool, now it's clearer for me | 17:50 |
replaceafill | i was trying hard to fit my idea on using the same resources | 17:50 |
yvl | ah | 17:50 |
replaceafill | i'd probably end up with ST.gradebook or something | 17:50 |
yvl | copy-remake, then unify if there is common ground | 17:50 |
replaceafill | i mean, for the js | 17:50 |
yvl | (which I doubt) | 17:50 |
yvl | sure! | 17:51 |
yvl | gradebook is something that deserves that | 17:51 |
replaceafill | one last question | 17:51 |
replaceafill | the request.success(...) calls assume the .ajax(...) call is asyncronous, right? | 17:51 |
replaceafill | is that what they do? | 17:52 |
replaceafill | request.success(function(){ update_all_table_spinners(container_id); } | 17:53 |
replaceafill | for example | 17:53 |
yvl | I'm gonna go with... yes | 17:53 |
replaceafill | :) | 17:53 |
replaceafill | ok, thanks yvl | 17:54 |
replaceafill | th1a, i'm done, i hope to have something to show for monday | 17:54 |
th1a | OK. Sounds good. I agree that trying too hard to share code here is probably a waste of time. | 17:54 |
th1a | OK gentlemen, thanks. | 17:55 |
th1a | Have a great week and weekend! | 17:55 |
* th1a drops the bag of gravel. | 17:55 | |
yvl | see you soon guys! | 17:57 |
replaceafill | yvl, "The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks will be deprecated in jQuery 1.8" | 18:25 |
replaceafill | :O | 18:25 |
*** ignas has joined #schooltool | 18:29 | |
*** alga has joined #schooltool | 19:01 | |
*** paulproteus has quit IRC | 19:08 | |
*** paulproteus has joined #schooltool | 19:09 | |
*** th1a has quit IRC | 19:19 | |
*** alga has quit IRC | 19:19 | |
aelkner_ | replaceafill, ayt? | 19:27 |
replaceafill | yes | 19:28 |
aelkner_ | a question about email sender | 19:28 |
aelkner_ | if it can just as well be blank, why should we have it? | 19:28 |
aelkner_ | i mean, i sent an email with a sender address set, but the gmail smtp server | 19:29 |
aelkner_ | put it's info in the sent part of the email | 19:29 |
replaceafill | that's because you're using gmail as smtp server | 19:29 |
replaceafill | you could be using a local smtp server | 19:29 |
replaceafill | in which case the from address does matter | 19:30 |
replaceafill | or could matter | 19:30 |
aelkner_ | that's a bit of a sticky matter because tom had said that the sender was not important | 19:30 |
replaceafill | i think it's ok to say that in the gmail smtp server example, the from email address is not needed | 19:30 |
replaceafill | but i dont think that's the general case | 19:31 |
aelkner_ | so in my intervention view, i need to check the email utility for the type of server? | 19:31 |
replaceafill | no, that's what smtplib does | 19:31 |
aelkner_ | and not allow the email send to be attempted if the user has no email? | 19:31 |
aelkner_ | ah, yes | 19:32 |
aelkner_ | i could just relay the email queue error | 19:32 |
aelkner_ | so basically catch the user email empty situation after trying to send the email | 19:32 |
replaceafill | again, in the gmail particular example, you end up using the username + gmail smtp domain as the sender | 19:33 |
replaceafill | but again, it's not a general case | 19:33 |
replaceafill | a school could have its own smtp server | 19:33 |
replaceafill | which doesn't use username + smtp domain as a sender | 19:34 |
aelkner_ | the email filled in for the user in that case would have the domain in it | 19:34 |
replaceafill | right | 19:34 |
aelkner_ | i don't think we intend to add username + domain name to get email addresses | 19:34 |
replaceafill | no, i'm saying that's what you get with the gmail example | 19:35 |
aelkner_ | i tried sending an email through gmail with a particular sender address | 19:35 |
aelkner_ | it was ignored, and only the gmail account for the smtp setup was in the sender part | 19:35 |
replaceafill | right | 19:36 |
aelkner_ | so i'm not sure what you mean by 'you end up using the username + gmail smtp domain as the sender' | 19:36 |
aelkner_ | because as was saying, it didn't matter what i put in for the sender | 19:37 |
replaceafill | i mean, for gmail what it matters is the username you set for the utility | 19:37 |
replaceafill | replaceafill@gmail.com | 19:37 |
aelkner_ | ah, yes, in the utility config | 19:37 |
aelkner_ | i thought you were talking about the email | 19:37 |
replaceafill | ah | 19:38 |
replaceafill | no, i meant the email settings | 19:38 |
replaceafill | but suppose you set up your own postfix or sendmail server | 19:38 |
replaceafill | it's possible to not set up a user or password for it | 19:39 |
replaceafill | and just let the server pass the email based on ip addresses and such | 19:39 |
replaceafill | i remember i tried that once in my former job | 19:39 |
replaceafill | my point is, gmail is not the general case | 19:40 |
aelkner_ | understood | 19:40 |
aelkner_ | seeing that there are various cases that i can't predict from the intervention views | 19:40 |
aelkner_ | when i call send(), i will pass whatever is in the user's email setting | 19:40 |
aelkner_ | if it's blank and that's not a problem (the gmail case) | 19:40 |
aelkner_ | then it will get through | 19:41 |
*** menesis has quit IRC | 19:41 | |
aelkner_ | if it is a problem, then i'll give the error message to the user in the intervention view | 19:41 |
replaceafill | right, and it will use what's configured in the utility settings | 19:41 |
aelkner_ | based on what the email utility returns | 19:41 |
replaceafill | correct | 19:41 |
aelkner_ | cool, i got a plan, thanks | 19:41 |
replaceafill | np | 19:41 |
*** th1a has joined #schooltool | 20:08 | |
*** menesis has joined #schooltool | 20:38 | |
th1a | replaceafill: I can cut out your jquery now. ;-) | 21:21 |
replaceafill | :) | 21:21 |
replaceafill | did you upload it? | 21:21 |
replaceafill | so i can see | 21:21 |
replaceafill | i mean, your new d3 script | 21:21 |
th1a | I just started again, so not yet. | 21:22 |
replaceafill | ah ok | 21:22 |
replaceafill | just curious :) | 21:22 |
th1a | Oh, this might be what I need to know: http://bl.ocks.org/1183998 | 21:52 |
th1a | Not really. ;-) | 21:54 |
th1a | I think I need to try to write this without using method chaining. | 22:16 |
replaceafill | it is easier | 22:16 |
replaceafill | you later chain what you think it's appropriate | 22:16 |
replaceafill | to chain | 22:16 |
th1a | I think that's what's bending my mind. | 22:16 |
*** replaceafill has quit IRC | 23:14 | |
*** replaceafill has joined #schooltool | 23:15 | |
*** alga has joined #schooltool | 23:18 | |
th1a | replaceafill: I think I'm unstuck. Thanks to less method chaining magic. | 23:28 |
replaceafill | :) | 23:28 |
th1a | That was starting to remind me too much of my early days with Zope 2... | 23:28 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!