* Allow REALPEER to overwrite GHOSTPEER netixlan entry, if asn and IPv6/v4 addresses matches the IX-F Members Export information #983
* Lightweight user notification mechanism #758
* do not allow affiliation with a deleted organisation #953
* Improve readability when users have special permissions #659
* fix advanced search export when api-cache exist and no filters were supplied #1153
* Ops: Throttle strings with "Response size" should be renamed "Repeated request" #1168
* allow ixlan prefix to be changed / deleted regardless of existence of netixlans in the address space #924
* linting
* poetry relock
* remove debug code
* linting
* fixed Reset IX-F suggestions link non-functional #1253
* solved UI shows own email when viewing affiliation requests for an organization #1250
* Adjust "Add Facility" menu to include newly defined fields #1091
* Footer "Global System Statistics" should be cached within django instance, not updated with every page load #1283
* linting
* django-handleref to 1.1.0 and relock poetry
* GLOBAL_STATS_CACHE_DURATION default to 900 seconds
* remove vscode and idea
* remove Ctl/dev/docker-compose.debug.yml
* remove unsused variable
* rename STATS to __STATS
* linting
* regen docs
* Make it possible to display the TOTP secret in text form instead of QR code only #947
* Show username *and* email address when user is logged in #484
* fix asn auto tool #959
* Trigger IX-F import when network sets allow_ixp_update to "yes" #499
* Ops: Log Melissa payload in django.log #1150
* Error-handling of failed creation of DeskPRO ticket #981
* email management changes #267#736#737#738#907
* block api write operations when using basic-auth to authenticate an MFA enabled account
* add robots txt #1213
* DB clean-up of elderly ophaned user accounts #380
* linting
* fix migrations
* fix tests
* dont flag new users for deletion
* linting
* docs
Co-authored-by: dpoarch <dpoarch@20c.com>
* Add "Last login" to https://peeringdb.com/cp/peeringdb_server/user/#879
* Bug in renumbering tool #660
* Add the IX name and id to IX-F Import Emails #963
* Use username to create deskpro person when no first-name / last-name data exists #1057
* Organization merge tool usergroup issues #930
* Exempt superusers (PeeringDB Admin Committee & Operations Committee admins) from throttling #1172
* add missing migration for #1172
* linting
* poetry relock
* adapt to django-two-factor-auth template-tag renaming changes
* increase default for DATA_QUALITY_MAX_SPEED to 5Tb
* regenerate docs
* fix api test for netixlan max speed validation
* pdb_api_cache command needs to disable CSRF_USE_SESSIONS before it runs
Co-authored-by: David Poarch <dpoarch@20c.com>
* fix internal error when adjusting rate limits downwards were the new limit would result in negative available requests for already tracked clients (#1126)
* remove debug output and unused variable
* expose CACHE_MAX_ENTRIES to be set via env, also implement lower limit sanity check for it (#1151)
* auth-id changes
* fix test data failure
Co-authored-by: Stefan Pratter <stefan@20c.com>
* remove survey notifications
* fixing old reference of IXF_IMPORTER_DAYS_UNTIL_TICKET through EnvironmentSettings, this setting is no longer controlled through that and should come straight from settings
* fix session auth not setting x-auth-id header (#1120)
fix basic auth not setting x-auth-id header on success (#1120)
fix api key auth only setting prefix in x-auth-id header (#1120)
fix x-auth-id header not being cleared between requests (#1120)
* fix issue with rest throttling breaking api-cache generation (#1146)
* add caching for get_permission_holder_from_request - fixes perfomance issues in #1147
* fix intermediate issue with api_cache rest throttle tests
* sanitize cache key names for state normalization (#1079)
each state normalization lookup moved into its own transaction so errors dont cause us to lose already obtained data (#1079)
write cache regardess of --commit on or off (#1079)
add a sanity check for running non-committal mode without --limit (#1079)
* fix issue with ip block rate limiting if x-forwarded-for is set (#1126)
* better handling of melissa timeouts through retrying (#1079)
fix state normalization cache timeout to have no expiry (#1079)
normalization command will display validation errors at the end and exit with a return code if there are any (#1079)
* automatically apply address field normalization for `state` (#1079)
* additional tests
* only do a sanity check for --limit if no specific object is targeted
* linting
Co-authored-by: Stefan Pratter <stefan@20c.com>
* Do not show objects in status "pending" on the UI #784
* Fix peeringdb.js bug introduced in #784
* 500 Error during login for 2FA enabled accounts with unverified email address #996
* Django-Admin: adding a network with existing asn fails with internal error #1035
* Some command-line-tool executions are not logged #1119
* Ops: API throttling of repeated requests #1126
* Ops: response header X-Auth-ID to augment logging #1120
* Allow rate-limiting of melissa enabled api functionality. #1124
* State / Province normalization #1079
* Log melissa requests #1122
* remove debug messages
* bump django-handleref to 1.0.2
* Need consolidated app logs #845
* pin django peeringdb to 2.13 and relock poetry
* pin django-restframework-apikey to 2.1.0
* linting
* migrations
* docs regenerate
* docs
* linting
Co-authored-by: David Poarch <dpoarch@20c.com>
Co-authored-by: Stefan Pratter <stefan@20c.com>
* remove survey notifications
* substantially rate limit unauthenticated /api/ queries to encourage authenticated queries #853
* move api throttle class configuration to settings (#853)
* #722 with a more generic validation approach
* Add organisations and registered users to "Global System Statistics" in footer #620
* poetry relock
* linting
* regen docs
* fix test data
Co-authored-by: Stefan Pratter <stefan@20c.com>
Co-authored-by: David Poarch <dpoarch@20c.com>