{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":579738,"defaultBranch":"master","name":"askbot-devel","ownerLogin":"ASKBOT","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2010-03-25T21:37:27.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/227078?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1704566734.0","currentOid":""},"activityList":{"items":[{"before":"11bec9340cf8356818d56f825dd30185adbe27fc","after":"65d7c5d260000f561ab76e7f511ef9bfab8aea55","ref":"refs/heads/master","pushedAt":"2024-05-28T00:58:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* adds setting ASKBOT_FEDERATED_LOGIN_EMAIL_EDITABLE, default is True\n* passes this setting to the template context\n* RegistrationForm, when ASKBOT_FEDERATED_LOGIN_EMAIL_EDITABLE is False,\n - raises an exception when email from the session is not the same as the email from the form\n* askbot/jinja2/authopenid/complete.html:\n - shows \"Email cannot be changed\" message when email is not editable","shortMessageHtmlLink":"* adds setting ASKBOT_FEDERATED_LOGIN_EMAIL_EDITABLE, default is True"}},{"before":"8627b02f52100034d2ee87b797ba035ddee03f4e","after":"11bec9340cf8356818d56f825dd30185adbe27fc","ref":"refs/heads/master","pushedAt":"2024-05-26T20:45:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"jinja2 templates: changes the block name page_class -> layout_class in 6 templates where this change was not implemented as in commit ccd906caa06daa80671787c384c067a217e2151a","shortMessageHtmlLink":"jinja2 templates: changes the block name page_class -> layout_class i…"}},{"before":"c6b15651a8c25bf0a12f355b46bdf598abd9aee8","after":"8627b02f52100034d2ee87b797ba035ddee03f4e","ref":"refs/heads/master","pushedAt":"2024-03-04T20:48:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* .g-recaptcha adds 0.5rem bottom margin\n* when editing a post via ajax, the privacy setting is not maintained","shortMessageHtmlLink":"* .g-recaptcha adds 0.5rem bottom margin"}},{"before":"3dc1838ba4901326ebf3f008e5251ea9fd165463","after":"c6b15651a8c25bf0a12f355b46bdf598abd9aee8","ref":"refs/heads/master","pushedAt":"2024-02-08T22:09:20.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Merge branch 'omaster'","shortMessageHtmlLink":"Merge branch 'omaster'"}},{"before":"8f001cdc140f0a7b9306795451aa189d08344340","after":"3dc1838ba4901326ebf3f008e5251ea9fd165463","ref":"refs/heads/master","pushedAt":"2024-01-28T22:27:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* adds askbot/media/jslib/htmx.min.js\n* bug fix in askbot/startup_procedures.py:test_custom_user_profile_tab\n* custom tab setup is working\n* adds option to specify a function that determines if a user can see the custom tab, e.g.:\n ASKBOT_CUSTOM_USER_PROFILE_TAB = {\n 'NAME': 'My Custom Tab',\n 'SLUG': 'my-custom-tab',\n 'CONTEXT_GENERATOR': 'myapp.views.my_custom_tab_context',\n 'USER_IS_AUTHORIZED_FUNC': lambda user: user.is_authenticated and user.is_staff\n }","shortMessageHtmlLink":"* adds askbot/media/jslib/htmx.min.js"}},{"before":"02b50a2268fd00c488029deadcd79595ede9248f","after":"8f001cdc140f0a7b9306795451aa189d08344340","ref":"refs/heads/master","pushedAt":"2024-01-23T23:52:33.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Merge pull request #940 from matthewbbrandt/patch-1\n\nFix class name in answers_sort_nav.html","shortMessageHtmlLink":"Merge pull request #940 from matthewbbrandt/patch-1"}},{"before":"bf43e80396fe3b3357bc151df3cac7f857b02d78","after":"02b50a2268fd00c488029deadcd79595ede9248f","ref":"refs/heads/master","pushedAt":"2024-01-22T20:10:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Merge branch 'omaster'","shortMessageHtmlLink":"Merge branch 'omaster'"}},{"before":"c0d576f4c45cea7274df60cc6cc0752bdeff40c2","after":"bf43e80396fe3b3357bc151df3cac7f857b02d78","ref":"refs/heads/master","pushedAt":"2024-01-21T16:56:55.000Z","pushType":"pr_merge","commitsCount":9,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Merge pull request #939 from boxydog/pre_commit\n\nAdd basic, mostly empty pre-commit and ruff","shortMessageHtmlLink":"Merge pull request #939 from boxydog/pre_commit"}},{"before":"111ff30443bcb5af636a442b366604e4af5ec491","after":"c0d576f4c45cea7274df60cc6cc0752bdeff40c2","ref":"refs/heads/master","pushedAt":"2024-01-15T23:26:20.000Z","pushType":"pr_merge","commitsCount":14,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Merge pull request #938 from boxydog/tests\n\nAdd continuous integration tests","shortMessageHtmlLink":"Merge pull request #938 from boxydog/tests"}},{"before":"f15bbf7d659ba5c8a4da138927c6ca655933e3b1","after":"a1fb0d4379cab17b925de0081585f8b1cfd944c7","ref":"refs/heads/analytics","pushedAt":"2024-01-06T20:29:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* users analytics view gets basic counts","shortMessageHtmlLink":"* users analytics view gets basic counts"}},{"before":null,"after":"f15bbf7d659ba5c8a4da138927c6ca655933e3b1","ref":"refs/heads/analytics","pushedAt":"2024-01-06T18:45:34.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Analytics:\n* adds settings: ANALYTICS_EMAIL_DOMAIN_ORGANIZATIONS_ENABLED, ANALYTICS_NON_ADMINS_SLICE_NAME, ANALYTICS_NON_ADMINS_SLICE_DESCRIPTION\n* askbot/jinja2/base.html: adds block forum_header with default content having the forum nav/search\n* adds basic analytics home page and the user analytics page\n* models: for now uses basic Session and Event models","shortMessageHtmlLink":"Analytics:"}},{"before":"a6bc0582bef863b8654e74a8d209c592c1a7cbb3","after":"111ff30443bcb5af636a442b366604e4af5ec491","ref":"refs/heads/master","pushedAt":"2023-12-10T23:20:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Fixes a bug where undeleting a question was not working properly.","shortMessageHtmlLink":"Fixes a bug where undeleting a question was not working properly."}},{"before":null,"after":"4accf8e4849fddf7aec7f71ea0ea3449aedaeb42","ref":"refs/heads/markdown","pushedAt":"2023-12-10T18:47:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"WIP: markdown2 -> markdown_it\n* removes markdown2 dependency\n* adds dependencies: markdown_it, mdit_py_plugins, linkify_it\n* User.assert_can_post_text:\n - if text contains a link, allows posting only for users trusted by rep or admins\n - anon users cant post links\n* PostRevision.html property:\n - uses the markdown input converter defined in teh askbot.utils.markup module\n* askbot.tests.test_utils:\n - removes test case for the md converter loader\n* askbot.utils.markup:\n - use markdown_it\n - ads seed for the get_md_converter function\n - MD_CONVERTER is a singleton object in the module used within markdown_input_converter function","shortMessageHtmlLink":"WIP: markdown2 -> markdown_it"}},{"before":"179d50bfb03477b3e9e53801e4f515129d4b8cbb","after":"a6bc0582bef863b8654e74a8d209c592c1a7cbb3","ref":"refs/heads/master","pushedAt":"2023-10-10T01:17:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"askbot/tests/test_unsubscribe_user.py:\n * adds test cases test_invalid_url, test_invalid_key #932","shortMessageHtmlLink":"askbot/tests/test_unsubscribe_user.py:"}},{"before":"c0968780e07f590b7ae2d09d84d103eae02d2223","after":"179d50bfb03477b3e9e53801e4f515129d4b8cbb","ref":"refs/heads/master","pushedAt":"2023-10-09T23:37:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"followup #932\n* askbot/forms.py UnsubscribeForm:\n - adds validation for the email and key fields\n* bug fix in the User.get_or_create_email_key\n* UnsubscribeUserTests:\n - adds a test case for the normal unsubscribe flow","shortMessageHtmlLink":"followup #932"}},{"before":"3ce001e77ca006f6cebd4fe1b6d2f61163a0b48e","after":"c0968780e07f590b7ae2d09d84d103eae02d2223","ref":"refs/heads/master","pushedAt":"2023-10-09T03:13:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"unsubscribe url is not broken if user is not found with the given email #932","shortMessageHtmlLink":"unsubscribe url is not broken if user is not found with the given email "}},{"before":"2bb5c0082ef4eea2a651b41710d7933648fe5442","after":"3ce001e77ca006f6cebd4fe1b6d2f61163a0b48e","ref":"refs/heads/master","pushedAt":"2023-10-09T01:58:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* adds HeadRequestMiddleware to handle the head requests, closes #934\n* askbot/forms.py: EditUserForm.website - max_length equals that in the #935\n* do not use is_superuser as proxy for askbot admin status\n - wherever we used is_superuser -> replace with askbot_profile__status = d lookups\n - is_superuser check is only used to give access to the /settings/ page\n* add_admin management command:\n - pep8\n - do not set is_staff\n* askbot_add_osqa_content, askbot_add_xml_content:\n - for is_superuser set user status to d - admin\n* askbot_import_jive:\n - first user gets d status\n* askbot/views/users.py:\n - pep8\n - replaces is_superuser with askbot_profile__status = d lookups\n - admins and moderators can edit user profiles","shortMessageHtmlLink":"* adds HeadRequestMiddleware to handle the head requests, closes #934"}},{"before":"9f2941bd5e7f1d6e1af018fb7cef665ed4d55724","after":"2bb5c0082ef4eea2a651b41710d7933648fe5442","ref":"refs/heads/master","pushedAt":"2023-10-02T20:36:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"admin site: allow filtering user profiles by status and email_is_confidential","shortMessageHtmlLink":"admin site: allow filtering user profiles by status and email_is_conf…"}},{"before":"4b73976828b496a148f9e8f55d404b1b664e39f2","after":"9f2941bd5e7f1d6e1af018fb7cef665ed4d55724","ref":"refs/heads/master","pushedAt":"2023-10-02T19:26:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"admin site: allows editing a subset of fields in the user profile","shortMessageHtmlLink":"admin site: allows editing a subset of fields in the user profile"}},{"before":"0b7967ce488d72340d31c77b62f3d017536c966f","after":"4b73976828b496a148f9e8f55d404b1b664e39f2","ref":"refs/heads/master","pushedAt":"2023-10-02T00:48:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* users page:\n - uses blank state if there are no users\n - confidential emails can be searched for by staff and email owners\n - fixes issue where search query is cleared in results\n - does not show paginator if there is only one page or no data\n not shown in results\n* UserProfile model:\n - adds email_is_confidential field, default is False\n* template filter can_see_private_user_data:\n - staff can see all user data\n - confidential data is only visible to the user and staff\n - moderators see emails of non-confidential users\n* fixes test for the settings page\n* askbot/utils/functions.py:\n - adds get_emails function, returns list of emails from text","shortMessageHtmlLink":"* users page:"}},{"before":"acf6cd9bc2d9255ff430f045d624247a9cbe060b","after":"0b7967ce488d72340d31c77b62f3d017536c966f","ref":"refs/heads/master","pushedAt":"2023-08-21T19:57:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* jinja2/authopenid/{complete,signin,signup_with_password}.html\n - message AUTHENTICATION_PAGE_MESSAGE in .info-box div\n* media/sass/components/info_box.scss:\n - adds styles for .info-box ul, p\n* media/sass/signin_page.scss:\n - custom styles for .info-box\n adds styles for .info-box ul, p","shortMessageHtmlLink":"* jinja2/authopenid/{complete,signin,signup_with_password}.html"}},{"before":"5f27a57069401d9eb1f7fdb57b6055d5ba2e5a5b","after":"acf6cd9bc2d9255ff430f045d624247a9cbe060b","ref":"refs/heads/master","pushedAt":"2023-08-07T20:47:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"* adds dependencies jinja2-simple-tags, premailer\n* premailer is used to inline css in the html emails\n* implements custom jinja2 tags \"premailer\" and \"textwrap using the jiinja2-simple-tags utility\n* base_mail.html template: adds word-wrop: break-word and white-space pre-wrap\n code and pre tags\n* removes some unused html template files\n* no longer wraps email text into 70 chars","shortMessageHtmlLink":"* adds dependencies jinja2-simple-tags, premailer"}},{"before":"75c1a2b539e2ceb0776014b5ff91fbb8aba38cc3","after":"5f27a57069401d9eb1f7fdb57b6055d5ba2e5a5b","ref":"refs/heads/master","pushedAt":"2023-07-30T02:00:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"adds escape to closed_question_info in the templates","shortMessageHtmlLink":"adds escape to closed_question_info in the templates"}},{"before":"fed3a36386b24c82ed5ee30e398c282d947d9744","after":"75c1a2b539e2ceb0776014b5ff91fbb8aba38cc3","ref":"refs/heads/master","pushedAt":"2023-07-30T01:37:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"bumps django-livesettings3 to 1.6.3","shortMessageHtmlLink":"bumps django-livesettings3 to 1.6.3"}},{"before":"4b28094292c4d55fc017577715627bc453a9c622","after":"fed3a36386b24c82ed5ee30e398c282d947d9744","ref":"refs/heads/master","pushedAt":"2023-07-30T01:00:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"bumps django-livesettings3 to 1.6.2","shortMessageHtmlLink":"bumps django-livesettings3 to 1.6.2"}},{"before":"8a277fdb4dbc7ba9f83e7ee10aa8235611a677b5","after":"4b28094292c4d55fc017577715627bc453a9c622","ref":"refs/heads/master","pushedAt":"2023-07-30T00:47:40.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"merges 0.11.x","shortMessageHtmlLink":"merges 0.11.x"}},{"before":"5ebd0055f7632c7c39973d911083fe1a0fdc5ca6","after":"8a277fdb4dbc7ba9f83e7ee10aa8235611a677b5","ref":"refs/heads/master","pushedAt":"2023-07-30T00:24:51.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"edits changelog","shortMessageHtmlLink":"edits changelog"}},{"before":"929632a4d59fce6543cbc323a843e5b25ea13d43","after":"5ebd0055f7632c7c39973d911083fe1a0fdc5ca6","ref":"refs/heads/master","pushedAt":"2023-07-29T17:57:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"deployment: creates /tmp","shortMessageHtmlLink":"deployment: creates <proj_dir>/tmp"}},{"before":"37e5f7f0fec370e420d53f354ce52859a263af3f","after":"929632a4d59fce6543cbc323a843e5b25ea13d43","ref":"refs/heads/master","pushedAt":"2023-07-29T17:40:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"Revert \"askbot-setup: create temp file upload dir if\"\n\nThis reverts commit 37e5f7f0fec370e420d53f354ce52859a263af3f.","shortMessageHtmlLink":"Revert \"askbot-setup: create temp file upload dir if\""}},{"before":"cac29ad6abb5237acef86c017ceea3b804ace3d0","after":"37e5f7f0fec370e420d53f354ce52859a263af3f","ref":"refs/heads/master","pushedAt":"2023-07-28T19:38:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"evgenyfadeev","name":"Evgeny Fadeev","path":"/evgenyfadeev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/102018?s=80&v=4"},"commit":{"message":"askbot-setup: create temp file upload dir if\ndjango.core.files.uploadhandler.TemporaryFileUploadHandler is used","shortMessageHtmlLink":"askbot-setup: create temp file upload dir if"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEVVQNpQA","startCursor":null,"endCursor":null}},"title":"Activity · ASKBOT/askbot-devel"}