dhasegan / connect.academy

Educational platform
www.connect.academy
MIT License
2 stars 0 forks source link

Course groups #167

Open dhasegan opened 10 years ago

dhasegan commented 10 years ago

No idea how we can do this, we have to talk about it. Writing it here to draw the attention. It touches the core of our website so we have to be careful about everything.

tpllaha commented 10 years ago

Not just Course groups, I would say groups in general. It needs to have a ManyToMany with users and each group should have it's own page where people who are part of it should at least be able to post and upload files. Then we can also create group appointments for the schedule.

On Tue, Sep 9, 2014 at 3:18 PM, Daniel Hasegan notifications@github.com wrote:

No idea how we can do this, we have to talk about it. Writing it here to draw the attention. It touches the core of our website so we have to be careful about everything.

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167.

tpllaha commented 10 years ago

But you're right, this needs a lot of attention. For example groups should have admins, people should be able to "request to join", etc.

On Tue, Sep 9, 2014 at 3:45 PM, Tomas Pllaha tomaspllaha@gmail.com wrote:

Not just Course groups, I would say groups in general. It needs to have a ManyToMany with users and each group should have it's own page where people who are part of it should at least be able to post and upload files. Then we can also create group appointments for the schedule.

On Tue, Sep 9, 2014 at 3:18 PM, Daniel Hasegan notifications@github.com wrote:

No idea how we can do this, we have to talk about it. Writing it here to draw the attention. It touches the core of our website so we have to be careful about everything.

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167.

dhasegan commented 10 years ago

I've been thinking about how to properly create the groups. I think the easiest and least intrusive would be to create the group as the subclass of Course with only one extra field : parent course. Students can be easily assigned to courses groups since those are already courses. And it's 100% backwards compatible and no need of migrations, only syncdb. What do you think? I can work on this later, but I think I can finish this today.

tpllaha commented 10 years ago

oh wait, you're talking about course groups, as in courses that have several groups or modules?

tpllaha commented 10 years ago

I think this works.

dhasegan commented 10 years ago

Shit, this doesnt work. Because you have to duplicate a lot of data. Thought it would work. Though the best solution would be to split the Course class into separate classes: Course (this would be the header of the course with id, abbreviation and the most basic items) CourseDetails (description, additional info, wiki, forum, docs) CourseGroup (instructors, registrations, schedule, homework)

This would be ideal but we have no chance of migrating so much shit, we would have to delete and rebuild the database. Also there would be a major refactor in the code. We dont have to do this now, but im throwing this out there. thoughts?

tpllaha commented 10 years ago

nah fuck that... Well, if you have a derived class you wouldn't have to duplicate a lot, because you could get the description etc from the parent course. Additional info could be the only one that is specific to the group

Since we need this kind of quickly, I would suggest 2 options:

  1. Either make a derived class as you suggested, and let professors create groups.
  2. Or just delete all duplicates and create new courses. This would result in lots of duplicated data, but well, we need something kind of fast.

On Mon, Sep 15, 2014 at 11:44 AM, Daniel Hasegan notifications@github.com wrote:

Shit, this doesnt work. Because you have to duplicate a lot of data. Thought it would work. Though the best solution would be to split the Course class into separate classes: Course (this would be the header of the course with id, abbreviation and the most basic items) CourseDetails (description, additional info, wiki, forum, docs) CourseGroup (instructors, registrations, schedule, homework)

This would be ideal but we have no chance of migrating so much shit, we would have to delete and rebuild the database. Also there would be a major refactor in the code. thoughts?

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55570000 .

dhasegan commented 10 years ago

If we copy the data from the super class to each group of the derived class we will have duplicates. Description + additional description (which can be 5000 chars each) can be copied for each subgroup. If you have 4 subgroups you are using a very ineficient db. Anyway, I will do this some way, and fast.

tpllaha commented 10 years ago

I meant that we don't have to copy the data from the superclass. The subclass will have a foreign key to the superclass, so when you want the description of coursegroup you will instead get the description of coursegroup.parent_course

you can have a method get_description() that returns self.description if it's a Course, and self.parent.description if it's a coursegroup. or sth like that..

The problem with this is that it might need changes in several places.

On Mon, Sep 15, 2014 at 12:00 PM, Daniel Hasegan notifications@github.com wrote:

If we copy the data from the super class to each group of the derived class we will have duplicates. Description + additional description (which can be 5000 chars each) can be copied for each subgroup. If you have 4 subgroups you are using a very ineficient db. Anyway, I will do this some way, and fast.

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55571377 .

dhasegan commented 10 years ago

What is the specific functionality that we want to have for groups? besides diving the students. Separate hw, schedule

tpllaha commented 10 years ago

I am not entirely sure. Definitely schedule. Not sure about hw, but I think Aldo said so... I would also say "Additional info". Also name ofc :p

The rest should be the same I think.

On Mon, Sep 15, 2014 at 12:36 PM, Daniel Hasegan notifications@github.com wrote:

What is the specific functionality that we want to have for groups? besides diving the students. Separate hw, schedule

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55574257 .

dhasegan commented 10 years ago

name? you mean to specify which group is the student part of. that is not functionally important.

tpllaha commented 10 years ago

Well the professor and TAs will need to somehow distinguish between the groups, right?

On Mon, Sep 15, 2014 at 1:13 PM, Daniel Hasegan notifications@github.com wrote:

name? you mean to specify which group is the student part of. that is not functionally important.

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55577161 .

dhasegan commented 10 years ago

ofc, but the students dont care much in terms of what they have to do

tpllaha commented 10 years ago

Yeah, the students don't, but the model will need a name that the prof will see to go to each course group.

On Mon, Sep 15, 2014 at 1:16 PM, Daniel Hasegan notifications@github.com wrote:

ofc, but the students dont care much in terms of what they have to do

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55577393 .

tpllaha commented 10 years ago

unless you've thought of another way. I haven't given this a lot of thought.

On Mon, Sep 15, 2014 at 1:18 PM, Tomas Pllaha tomaspllaha@gmail.com wrote:

Yeah, the students don't, but the model will need a name that the prof will see to go to each course group.

On Mon, Sep 15, 2014 at 1:16 PM, Daniel Hasegan notifications@github.com wrote:

ofc, but the students dont care much in terms of what they have to do

— Reply to this email directly or view it on GitHub https://github.com/dhasegan/connect.academy/issues/167#issuecomment-55577393 .

dhasegan commented 10 years ago

daniel [4:28 PM] man, to be honest, I think we should not do groups this semester its overcomplicating the code in many ways we can do it, of course but it will fuck up the simplicity of the existing code

tpllaha [4:29 PM] I agree... We can think of some more elegant way later.

daniel [4:29 PM] think about appointments and homework

tpllaha [4:30 PM] The thing is that even if some prof needs them, it's not gonna be more than 1 or 2, so for them we can just create a new course

yep

daniel [4:30 PM] break everything into a dynamic number of groups (2-6 lets say) we have only 1 professor that needs this guido mollering

dhasegan commented 10 years ago

moving this to V-next-semester