Code Monkey home page Code Monkey logo

alumni-directory's Introduction

N57 Community project

Import data

wget http://sch57.ru/people/alumni/data.json
./manage.py convert_json data.json --db db.tsv --teachers teachers.tsv
./manage.py import_teachers teachers.tsv
./manage.py import_db db.tsv

alumni-directory's People

Contributors

aamalev avatar mxposed avatar 4eckbox avatar alexshpilkin avatar

Watchers

 avatar  avatar  avatar Fedor Romanenko avatar

Forkers

alexshpilkin

alumni-directory's Issues

Новые поля в директории

  • поле "профессия / должность" (выводить текстом)
  • поле "ученая степень" (выводить текстом)
  • поле "LinkedIn" (выводить надписью linkedin)
  • год смерти (выводить значком U+2020 пробел год смерти)

Откат собственных изменений

Сабж. Хорошо бы иметь возможность без шума и подтверждений откатывать собственные изменения — хотя бы недавние, поверх которых никто больше ничего не сделал. Включая создание фантомных выпускников по ошибке (удалить из интерфейса нельзя; мы же не хотим это всё решать через суппорт?). Можно было бы даже изменять, а не откатывать, но откатывать легче для интерфейса и реализации.

via: Посицельский, Равинская

Доработки голосования

Сейчас есть три кнопки голосования: за, против и удалить. И каждый человек может нажать на каждую.

Я переделываю это в следующую систему:

  1. Если ты добавила факт, ты автоматически голосуешь «за» него.
  2. Если ты добавила факт, для него тебе доступен только голос за удаление.
  3. Если ты не добавила факт, то тебе доступны только голоса «за» или «против».
  4. Если ты голосуешь «за», но уже есть твой голос «против», то голос «против» удаляется.
  5. Если ты голосуешь «против», но уже есть твой голос «за», то голос «за» удаляется.
  6. Если ты голосуешь «удалить» и у факта нет других голосов, то факт помечается удалённым.
  7. Если ты голосуешь «удалить», но у факта есть ещё голоса, факту добавляется отрицательных голосов.

При этом в базе есть уже голоса, которые не ложатся в эту схему. Для них предлагаю трансформации:

  1. Если от человека есть голос «удалить» за факт, который добавил кто-то ещё, то этот голос считается как «против».
  2. Если от одного человека есть голос и «за» и «против» — то брать последний.
  3. Если от человека есть голос «против» факта, который она и добавила, то он считается как «удалить».

Кажется, после таких преобразований не должно остаться голосов, которые противоречат системе.

Пожалуйста, пишите идеи и предложения, или пишите, что согласны с этой схемой

Ссылка на список класса или год из Правок

Добавить в bread crumps ссылку на страницу года или класса [ выпускники ] по аналогии со ссылкой [ правки ] в обратную сторону. На страницах с фильтрами по автору правок ссылки быть не должно.

Нормализация ссылок

Важное: — ссылки вида vk.com/blah и facebook.com/blah браузером воспринимаются как относительные и не работают, но набирать http[s]:// в начале явно будут не все; — сейчас вместо ссылки на контакт/фейсбук можно ввести любую ссылку и даже любой мусор.

Красивости: ссылки надо бы нормализовать: http/https везде; фейсбук любит добавлять в конце всякий трекинговый мусор (никакие параметры в profile.php, кроме id, не нужны; остальным страницам вообще никакие параметры не нужны).

Сложное: хорошо бы удостовериться, что ссылка на профиль действительно ведёт на профиль, а не на что-нибудь другое внутри домена социалочки (действия по GET выполнять нельзя, так что уязвимости быть не должно, но мы же все знаем, как хорошо это все соблюдают?..)

Бессмысленное и уязвимое автодополнение

Автодополнение при добавлении факта о выпускнике совершенно не нужно. Кроме того, оно пытается дополнять email-адреса, так что их «защищённость» ломается перебором.

H/T: Серёжа Вальковский

Отсутствуют профили классов

Профили классов (поле profile) в базе не заполнены, потому что я давным-давно налажал и забыл их экспортировать из базы sch57.ru. Я поправил экспорт, и по старой ссылке сейчас у всех классов классов указан профиль (в поле speciality, потому что profile по словарю значит не это, но я и в speciality не уверен).

Доработки статусов

В текущем виде статусы выставляются как-то так, поэтому тут тоже нужен порядок и правила:

Удалённый статус

  1. Если ты за логином, добавила факт, и голосуешь за его удаление: он переход в статус «удалённый»
  2. Если факт добавлен анонимом, а за него есть два не-анонимных голоса «против» и 0 голосов «за», то он переходит в статус «удалённый»
  3. Если ты за логином и голосуешь «против» факта на своей странице, он переходит в статус «удалённый» — без всяких, просто.

Факты с удалённым статусом не видны нигде.

Выход из удалённого статуса возможен, если факт был помечен удалённым по причине 1 или 2, и кто-то добавил точно такой же факт. В этом случае, факт переходит из статуса «удалённый» в какой-то другой, и вернуть его в «удалённый» может только хозяин страницы.

Скрытый статус

  1. Виден за кликом

Неуверенный статус

  1. Отображается серым

Уверенный статус

  1. Отображается обычным шрифтом

Рассчёт статуса
Статусы «скрытый», «неуверенный», «уверенный» рассчитывают так: добавление факта и голос «за» него считаются положительными голосами, голос «против» и голос «за удаление» считаются отрицательными. Если голосует хозяйка страницы, к которой прицеплен факт, то голос умножается на 10. Если голосует аноним, то голос делится на 10.
После подсчёта голосов для каждого типа значения (город, ВУЗ и т. п.) выбирается факт с максимальным весом. Этот факт получает статус «уверенный», остальные факты с положительным весом — статус «неуверенный», остальные с отрицательным весом — статус «скрытый».

Защита от ботов

Защита от добрых ботов: robots.txt (подумать, что мы хотим там видеть), ясная политика использования данных.
Защита от злых ботов: throttling.
Примеры для подражания: Stack Overflow, arXiv.

Информирование новых выпускников

Покрытие старых выпусков у нас неиделаьное, ничего не попишешь. А вот для новых можно что-нибудь сделать. Можно, например, раздавать на выпускном коды и коротенькие листовки с описанием сайта. Всё равно надо будет собирать списки новых выпусков, и люди заходят на выпускные.

("Комплект выпускнику от выпускников" - а что, можно даже красиво сделать :) )

Умершие выпускники

Предлагаю помечать покинувших нас и блокировать действия с ними. В общем списке отображение нет смысла менять, ибо мемориал иначе получится. И, наверное, надо сделать кнопку репорта - "выпускник покинул нас", где-нибудь не на виду.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.