django-restit 4.2.103__tar.gz → 4.2.105__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {django_restit-4.2.103 → django_restit-4.2.105}/PKG-INFO +1 -1
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/device.py +4 -2
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/member.py +26 -1
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/periodic.py +10 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/providers/aws.py +37 -6
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/rpc.py +26 -13
- {django_restit-4.2.103 → django_restit-4.2.105}/pyproject.toml +1 -1
- django_restit-4.2.103/rest/rpc.py → django_restit-4.2.105/rest/extra/hostinfo.py +24 -62
- django_restit-4.2.105/rest/rpc.py +62 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/models.py +1 -1
- {django_restit-4.2.103 → django_restit-4.2.105}/LICENSE.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/fcm/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/fcm/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/fcm/v1.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0003_member_phone_number.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0004_group_modified_alter_group_created.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0005_member_auth_code_expires.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0006_member_security_token.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0007_authtoken_signature_authsession.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0008_memberdevice_memberdevicemetadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0009_alter_member_phone_number.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0010_delete_authtoken.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0011_authtoken.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0012_settings_settingsmetadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0013_memberdevice_ip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0014_alter_notificationmemberrecord_member.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0015_memberdevice_buid.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0016_authsession_buid.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0017_rename_requires_topt_member_requires_totp.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0018_userpasskey.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0019_group_location.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0020_cloudcredentials_cloudcredentialsmetadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0021_alter_cloudcredentials_group.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0022_alter_memberdevice_modified.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/feeds.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/group.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/membership.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/notify.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/passkeys.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/session.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/models/settings.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/oauth/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/oauth/google.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/passkeys/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/passkeys/core.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/periodic.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/auth.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/device.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/group.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/member.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/notify.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/oauth.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/passkeys.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/rpc/settings.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/settings.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/base.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/invite.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/plain/base.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/plain/invite.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/plain/reset_code.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/reset_code.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/simple/invite.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/simple/reset_code.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/account/templates/unsubscribed.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/README +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/cloudwatch.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/decorators.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/middleware.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/migrations/0002_alter_persistentlog_session.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/periodic.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/auditlog/urls.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/handlers.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/0002_alter_message_cc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/0003_attachment_content_type.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/0004_mailtemplate.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/0005_alter_mailbox_state.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/models/bounce.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/models/complaint.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/models/message.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/models/template.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/utils/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/utils/parsing.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/utils/render.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/inbox/utils/sending.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0002_event_component_event_component_id.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0003_rule_action.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0004_serverossecalert_ssh_sig_alter_rulecheck_parent.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0005_incident_component_alter_incident_state.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0006_delete_eventmetadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0007_event_metadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0008_incident_action_sent_incident_hostname_and_more.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0009_incident_reporter_ip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0010_incident_category_incident_component_id.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0011_ticket.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0012_rule_match_by.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0013_rulecheck_is_required.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0014_event_group_alter_rulecheck_index.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/0015_rule_title_template_alter_incident_state.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/event.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/incident.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/ossec.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/rules.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/models/ticket.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/parsers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/parsers/ossec.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/periodic.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/templates/email/incident_change.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/templates/email/incident_msg.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/templates/email/incident_new.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/templates/email/incident_plain.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/incident/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/geolocate.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/migrations/0002_geoip_subnet_alter_geoip_ip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/migrations/0003_address_postalcode_suffix.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/migrations/0004_remove_address_modified_by_address_group_and_more.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/address.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/ip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/location.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/models/track.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/abstractapi.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/extremeip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/geoplugin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/ipapi.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/ipinfo.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/iplookup/restit.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/location/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/location/google.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/timezones/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/timezones/google.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/providers/zillow.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/rpc/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/rpc/address.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/rpc/ip.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/rpc/location.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/location/rpc/track.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/cvutil/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/cvutil/contours.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/cvutil/images.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/cvutil/misc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/cvutil/text.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/fixtures/initial_data.json +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/fixtures/medialib.json +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/fixtures/medialib_test_fixture.json +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/forms.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/ocr.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/pdf.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/qrcode.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/anigif.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/ffmpeg.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/gifsicle.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/hls.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/mp4box.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/rtmp/Makefile +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/rtmp/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/rtmp/rtmp.i +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/rtmpdump.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/rtmpsink.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/video_getinfo.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/engines/websnap.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/exceptions.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/akamai.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/animated_thumbnail.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/ffmpeg.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/flv.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/hls.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/image_transcode.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/image_validate.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/mp4.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/video_still.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/video_validate.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/websnap.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/presets/youtube.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/render_utils.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/render/schedule.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/rpc/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/rpc/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/rpc/media.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/rpc/tools.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/scripts/init_config +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/css/base_medialibui.css +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/css/base_widgets.css +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/css/jquery.jcrop.css +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/arrow-down-white.png +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/bg-body.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/cancel.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/icon-generic.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/icon-image.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/icon-media.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/icon-zip.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/loading.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/noimage.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/render_err.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/rendering.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/star_off.png +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/star_on.png +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/img/unknown.gif +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/caman.full.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/hammer.min.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/jquery.Jcrop.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/jquery.hammer.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/load-image.min.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/swiper.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/tinymce/plugins/medialib/editor_plugin.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/tinymce/plugins/medialib/editor_plugin_src.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/tinymce/plugins/medialib/js/dialog.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/static/lib/tinymce/plugins/medialib/medialib.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/channel.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/discovery.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/errors.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/http.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/mimeparse.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/model.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/sample_tools.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/apiclient/schema.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/filestore.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/httplib2/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/httplib2/cacerts.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/httplib2/iri2uri.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/httplib2/socks.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/httpstore.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/nullstore.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/anyjson.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/appengine.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/client.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/clientsecrets.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/crypt.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/django_orm.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/gce.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/keyring_storage.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/locked_file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/multistore_file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/old_run.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/tools.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/util.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/oauth2client/xsrfutil.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/rtmpstore.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/s3store.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/uritemplate/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/stores/youtubestore.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/base.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/instances.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/items.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/library.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_error.subject +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_error.to +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_error.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_ready.subject +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_ready.to +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_ready.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_render_error.subject +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_render_error.to +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_render_error.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_validate_error.subject +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_validate_error.to +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/notify_validate_error.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/smil +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/test.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/templates/medialib/testpicker.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/tests.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/urls.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/utils.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/views.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/channel.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/discovery.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/errors.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/http.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/mimeparse.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/model.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/sample_tools.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/apiclient/schema.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/httplib2/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/httplib2/cacerts.txt +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/httplib2/iri2uri.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/httplib2/socks.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/anyjson.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/appengine.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/client.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/clientsecrets.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/crypt.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/django_orm.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/gce.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/keyring_storage.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/locked_file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/multistore_file.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/old_run.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/tools.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/util.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/oauth2client/xsrfutil.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/upload.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/medialib/youtube/uritemplate/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/client.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/eod.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/examples/eod_example.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/delete_gauge.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/delete_metric.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/fix_redis_metrics_keys.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/generate_test_metrics.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/redis_metrics_send_mail.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/reset_weekly_metrics.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/management/commands/system_metric.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/0002_metrics_k11_metrics_k12_metrics_k13_metrics_k14_and_more.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/0003_metrics_expires.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/0004_eodmetrics.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/0005_alter_metrics_v1_alter_metrics_v10_alter_metrics_v11_and_more.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/providers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/settings.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/metrics/utils.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/rpc/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/rpc/githooks.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/rpc/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/rpc/products.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/static/js/models_pushit.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/pushit/utils.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/.gitignore +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/RemoteEvents.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/arc4.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/cache.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/crypto/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/crypto/aes.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/crypto/privpub.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/crypto/util.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/datem.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/decorators.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/encryption.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/errors.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/extra/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/extra/json_metadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/fields.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/forms.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/helpers.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/joke.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/jwtoken.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/log.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/mail.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/mailman.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/management/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/management/commands/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/management/commands/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/cors.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/db_router.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/jwt.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/request.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/session.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/middleware/session_store.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/models/base.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/models/cacher.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/models/metadata.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/net.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/regexes.yaml +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/requestex.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/search.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/collection.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/csv.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/excel.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/json.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/legacy.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/localizers.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/model.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/profiler.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/response.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/serializers/util.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/settings_helper.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/ssl_check.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/static/lib/jquery.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/static/rest/app.css +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/static/rest/app.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/static/rest/rest.js +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/static/rest/rest.scss +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/templates/email/error.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/templates/email/error.subject +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/templates/rest_docs.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/templates/rest_html.html +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/ua.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/uberdict.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/url_docs.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/urls.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/rest/views.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/.gitignore +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/tests.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/sessionlog/views.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/periodic.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/email.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/http.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/s3.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/sftp.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/transports/sms.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/taskqueue/worker.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/admin.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/decorators.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/migrations/0002_alter_sms_sid.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/models.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/phone_util.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/telephony/rpc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/migrations/0001_initial.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/migrations/0002_alter_pagemedia_entry.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/migrations/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/models/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/models/faq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/models/page.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/models/revision.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/periodic.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/highlight.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/math.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/media.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/meta.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/task_list.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/renderers/mistune/toc.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/rpc/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/rpc/wiki.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/wiki/tq.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/README.md +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/client.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/connection.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/exceptions.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/redis.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/servers/__init__.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/servers/base.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/servers/django.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/servers/uwsgi.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/settings.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/utf8validator.py +0 -0
- {django_restit-4.2.103 → django_restit-4.2.105}/ws4redis/websocket.py +0 -0
@@ -41,13 +41,15 @@ class MemberDevice(models.Model, rm.RestModel, rm.MetaDataModel):
|
|
41
41
|
def sendData(self, message, **kwargs):
|
42
42
|
messenger = getCloudMessenger(self.cm_provider)
|
43
43
|
if messenger:
|
44
|
-
|
44
|
+
resp = messenger.sendToDevice(self, message)
|
45
|
+
return resp
|
45
46
|
return objict(status_code=404, reason=self.cm_provider)
|
46
47
|
|
47
48
|
def sendNotification(self, title, body):
|
48
49
|
messenger = getCloudMessenger(self.cm_provider)
|
49
50
|
if messenger:
|
50
|
-
|
51
|
+
resp = messenger.sendNotification(self.cm_token, title, body)
|
52
|
+
return resp
|
51
53
|
return objict(status_code=404, reason=self.cm_provider)
|
52
54
|
|
53
55
|
def notify(self, title, body):
|
@@ -627,7 +627,22 @@ class Member(User, RestModel, MetaDataModel):
|
|
627
627
|
# for slog in qset:
|
628
628
|
# slog.logout()
|
629
629
|
|
630
|
-
def notifyMobile(self, data=None, title=None, body=None):
|
630
|
+
def notifyMobile(self, data=None, title=None, body=None, delay=None):
|
631
|
+
if delay:
|
632
|
+
Task = RestModel.getModel("taskqueue", "Task")
|
633
|
+
if delay < 60:
|
634
|
+
Task.Publish(
|
635
|
+
"account.Member", "on_task_cm",
|
636
|
+
data=dict(pk=self.pk, delay=delay, data=data, title=title, body=body),
|
637
|
+
stale_after_seconds=300,
|
638
|
+
channel="tq_app_handler")
|
639
|
+
else:
|
640
|
+
Task.Publish(
|
641
|
+
"account.Member", "on_task_cm",
|
642
|
+
data=dict(pk=self.pk, data=data, title=title, body=body),
|
643
|
+
scheduled_for=datetime.now() + timedelta(seconds=delay),
|
644
|
+
channel="tq_app_handler")
|
645
|
+
return
|
631
646
|
stale = datetime.now() - timedelta(days=60)
|
632
647
|
for device in self.devices.filter(state=1, modified__gt=stale).exclude(cm_provider="ws", cm_token__isnull=True):
|
633
648
|
if data is not None:
|
@@ -1226,6 +1241,16 @@ class Member(User, RestModel, MetaDataModel):
|
|
1226
1241
|
return None
|
1227
1242
|
return cls.objects.filter(pk=uid).last()
|
1228
1243
|
|
1244
|
+
@classmethod
|
1245
|
+
def on_task_cm(cls, task):
|
1246
|
+
member = cls.objects.filter(pk=task.data.pk).last()
|
1247
|
+
if not member:
|
1248
|
+
task.failed("could not find member")
|
1249
|
+
return False
|
1250
|
+
if task.data.delay:
|
1251
|
+
time.sleep(task.data.delay) # delay
|
1252
|
+
member.notifyMobile(data=task.data.data, title=task.data.title, body=task.data.body)
|
1253
|
+
|
1229
1254
|
|
1230
1255
|
class MemberMetaData(MetaDataBase):
|
1231
1256
|
parent = models.ForeignKey(Member, related_name="properties", on_delete=models.CASCADE)
|
@@ -3,6 +3,9 @@ from taskqueue.models import Task
|
|
3
3
|
from .models import Metrics
|
4
4
|
from rest import log
|
5
5
|
from rest import decorators as rd
|
6
|
+
from rest import settings
|
7
|
+
|
8
|
+
PUSH_METRICS_TO_CLOUDWATCH = settings.get("PUSH_METRICS_TO_CLOUDWATCH", False)
|
6
9
|
|
7
10
|
|
8
11
|
@rd.periodic(minute=15, hour=10)
|
@@ -16,3 +19,10 @@ def run_cleanup(force=False, verbose=False, now=None):
|
|
16
19
|
@rd.periodic(minute=15, hour=11, weekday=1)
|
17
20
|
def run_checks(force=False, verbose=False, now=None):
|
18
21
|
Task.Publish("metrics", "run_monitoring", channel="tq_app_handler")
|
22
|
+
|
23
|
+
|
24
|
+
@rd.periodic(minute=rd.PERIODIC_EVERY_5_MINUTES)
|
25
|
+
def run_aws_metrics(force=False, verbose=False, now=None):
|
26
|
+
if PUSH_METRICS_TO_CLOUDWATCH:
|
27
|
+
from metrics.providers import aws
|
28
|
+
aws.publishLocalMetrics()
|
@@ -2,7 +2,7 @@ import boto3
|
|
2
2
|
from datetime import datetime, timedelta
|
3
3
|
from rest import settings
|
4
4
|
from objict import objict
|
5
|
-
import
|
5
|
+
from rest.extra import hostinfo
|
6
6
|
|
7
7
|
|
8
8
|
METRIC_MAP = {
|
@@ -19,10 +19,20 @@ METRIC_MAP = {
|
|
19
19
|
"cache_cons": "CurrConnections",
|
20
20
|
"max": "Maximum",
|
21
21
|
"min": "Minimum",
|
22
|
-
"avg": "Average"
|
22
|
+
"avg": "Average",
|
23
|
+
"ec2_cons": "EstablishedConnections"
|
23
24
|
}
|
24
25
|
|
25
26
|
|
27
|
+
def publishLocalMetrics():
|
28
|
+
# this will publish any local metrics to cloudwatch
|
29
|
+
instance = getLocalEC2()
|
30
|
+
pushMetric(
|
31
|
+
METRIC_MAP["ec2_cons"],
|
32
|
+
hostinfo.getTcpEstablishedCount(),
|
33
|
+
"Count", instance)
|
34
|
+
|
35
|
+
|
26
36
|
def getLocalEC2():
|
27
37
|
"""
|
28
38
|
{
|
@@ -43,9 +53,7 @@ def getLocalEC2():
|
|
43
53
|
"zone": "us-west-2d"
|
44
54
|
}
|
45
55
|
"""
|
46
|
-
|
47
|
-
priv_ip = socket.gethostbyname(hostname)
|
48
|
-
return getEC2ByIP(priv_ip)
|
56
|
+
return getEC2ByIP(hostinfo.getHostIP())
|
49
57
|
|
50
58
|
|
51
59
|
def getClient(region=settings.AWS_REGION, service="cloudwatch"):
|
@@ -54,6 +62,29 @@ def getClient(region=settings.AWS_REGION, service="cloudwatch"):
|
|
54
62
|
return boto3.client(service, aws_access_key_id=key, aws_secret_access_key=secret, region_name=region)
|
55
63
|
|
56
64
|
|
65
|
+
def pushMetric(name, value, unit="Count", instance=None):
|
66
|
+
"""Push the custom metric to CloudWatch."""
|
67
|
+
cloudwatch = getClient(service="cloudwatch")
|
68
|
+
if instance is None:
|
69
|
+
instance = getLocalEC2()
|
70
|
+
return cloudwatch.put_metric_data(
|
71
|
+
Namespace = 'CustomMetrics',
|
72
|
+
MetricData = [
|
73
|
+
{
|
74
|
+
'MetricName': name,
|
75
|
+
'Dimensions': [
|
76
|
+
{
|
77
|
+
'Name': 'InstanceId',
|
78
|
+
'Value': instance.id
|
79
|
+
},
|
80
|
+
],
|
81
|
+
'Value': value,
|
82
|
+
'Unit': unit
|
83
|
+
},
|
84
|
+
]
|
85
|
+
)
|
86
|
+
|
87
|
+
|
57
88
|
def buildQuery(id, instance, period=300, metric="cpu", namespace="rds", stat="max"):
|
58
89
|
dname = "DBInstanceIdentifier"
|
59
90
|
if namespace == "ec2":
|
@@ -135,7 +166,7 @@ def getAllEC2(just_ids=False, region=settings.AWS_REGION):
|
|
135
166
|
|
136
167
|
def getEC2ByIP(ip):
|
137
168
|
# retreives the local ec2 instance details by private ip
|
138
|
-
client = getClient("ec2")
|
169
|
+
client = getClient(service="ec2")
|
139
170
|
filters = [dict(Name="private-ip-address", Values=[ip])]
|
140
171
|
resp = client.describe_instances(Filters=filters)["Reservations"]
|
141
172
|
try:
|
@@ -287,7 +287,7 @@ def getPeriods(period, duration):
|
|
287
287
|
|
288
288
|
@rd.urlGET('restit/domains')
|
289
289
|
@rd.login_required
|
290
|
-
def rest_on_ec2_domains(request
|
290
|
+
def rest_on_ec2_domains(request):
|
291
291
|
if not settings.DOMAIN_WATCH:
|
292
292
|
return rv.restPermissionDenied(request)
|
293
293
|
|
@@ -300,7 +300,7 @@ def rest_on_ec2_domains(request, pk=None):
|
|
300
300
|
|
301
301
|
@rd.urlGET('restit/servers')
|
302
302
|
@rd.login_required
|
303
|
-
def rest_on_ec2_restit_stats(request
|
303
|
+
def rest_on_ec2_restit_stats(request):
|
304
304
|
hostname = settings.SERVER_ROOT
|
305
305
|
if hostname is None:
|
306
306
|
hostname = settings.SERVER_NAME
|
@@ -332,19 +332,19 @@ def rest_on_ec2_restit_stats(request, pk=None):
|
|
332
332
|
|
333
333
|
@rd.urlGET('aws/ec2/list/details')
|
334
334
|
@rd.login_required
|
335
|
-
def rest_on_ec2_list(request
|
335
|
+
def rest_on_ec2_list(request):
|
336
336
|
return rv.restReturn(request, dict(data=aws.getAllEC2()))
|
337
337
|
|
338
338
|
|
339
339
|
@rd.urlGET('aws/ec2/list/ids')
|
340
340
|
@rd.login_required
|
341
|
-
def rest_on_ec2_list_ids(request
|
341
|
+
def rest_on_ec2_list_ids(request):
|
342
342
|
return rv.restReturn(request, dict(data=aws.getAllEC2(True)))
|
343
343
|
|
344
344
|
|
345
345
|
@rd.urlGET('aws/ec2/cpu')
|
346
346
|
@rd.requires_params(["ids"])
|
347
|
-
def rest_on_ec2_metrics_cpu(request
|
347
|
+
def rest_on_ec2_metrics_cpu(request):
|
348
348
|
ids = request.DATA.getlist("ids")
|
349
349
|
period = request.DATA.get("period", 300, field_type=int)
|
350
350
|
duration = request.DATA.get("duration", period*8, field_type=int)
|
@@ -383,9 +383,22 @@ def rest_on_ec2_metrics_cpu(request, pk=None):
|
|
383
383
|
return rv.restReturn(request, dict(data=data))
|
384
384
|
|
385
385
|
|
386
|
+
@rd.urlGET('aws/ec2/network/established')
|
387
|
+
@rd.requires_params(["ids"])
|
388
|
+
def rest_on_ec2_metrics_net_established(request):
|
389
|
+
data = aws.getMetrics(
|
390
|
+
request.DATA.getlist("ids"),
|
391
|
+
period=request.DATA.get("period", 300, field_type=int),
|
392
|
+
duration_seconds=request.DATA.get("duration", 900, field_type=int),
|
393
|
+
metric="EstablishedConnections",
|
394
|
+
namespace="CustomMetrics",
|
395
|
+
stat="max")
|
396
|
+
return rv.restReturn(request, dict(data=data))
|
397
|
+
|
398
|
+
|
386
399
|
@rd.urlGET('aws/ec2/network/in')
|
387
400
|
@rd.requires_params(["ids"])
|
388
|
-
def rest_on_ec2_metrics_netin(request
|
401
|
+
def rest_on_ec2_metrics_netin(request):
|
389
402
|
data = aws.getMetrics(
|
390
403
|
request.DATA.getlist("ids"),
|
391
404
|
period=request.DATA.get("period", 300, field_type=int),
|
@@ -398,7 +411,7 @@ def rest_on_ec2_metrics_netin(request, pk=None):
|
|
398
411
|
|
399
412
|
@rd.urlGET('aws/ec2/network/out')
|
400
413
|
@rd.requires_params(["ids"])
|
401
|
-
def rest_on_ec2_metrics_netout(request
|
414
|
+
def rest_on_ec2_metrics_netout(request):
|
402
415
|
ids = request.DATA.getlist("ids")
|
403
416
|
period = request.DATA.get("period", 300, field_type=int)
|
404
417
|
duration = request.DATA.get("duration", period*8, field_type=int)
|
@@ -426,7 +439,7 @@ def rest_on_ec2_metrics_netout(request, pk=None):
|
|
426
439
|
|
427
440
|
@rd.urlGET('aws/rds/cpu')
|
428
441
|
@rd.requires_params(["ids"])
|
429
|
-
def rest_on_ec2_metrics_cpu(request
|
442
|
+
def rest_on_ec2_metrics_cpu(request):
|
430
443
|
ids = request.DATA.getlist("ids")
|
431
444
|
period = request.DATA.get("period", 300, field_type=int)
|
432
445
|
duration = request.DATA.get("duration", period*8, field_type=int)
|
@@ -446,7 +459,7 @@ def rest_on_ec2_metrics_cpu(request, pk=None):
|
|
446
459
|
|
447
460
|
@rd.urlGET('aws/rds/memory')
|
448
461
|
@rd.requires_params(["ids"])
|
449
|
-
def rest_on_rds_metrics_memory(request
|
462
|
+
def rest_on_rds_metrics_memory(request):
|
450
463
|
ids = request.DATA.getlist("ids")
|
451
464
|
period = request.DATA.get("period", 300, field_type=int)
|
452
465
|
duration = request.DATA.get("duration", period*8, field_type=int)
|
@@ -466,7 +479,7 @@ def rest_on_rds_metrics_memory(request, pk=None):
|
|
466
479
|
|
467
480
|
@rd.urlGET('aws/rds/cons')
|
468
481
|
@rd.requires_params(["ids"])
|
469
|
-
def rest_on_rds_metrics_cons(request
|
482
|
+
def rest_on_rds_metrics_cons(request):
|
470
483
|
ids = request.DATA.getlist("ids")
|
471
484
|
period = request.DATA.get("period", 300, field_type=int)
|
472
485
|
duration = request.DATA.get("duration", period*8, field_type=int)
|
@@ -486,19 +499,19 @@ def rest_on_rds_metrics_cons(request, pk=None):
|
|
486
499
|
|
487
500
|
@rd.urlGET('aws/redis/cpu')
|
488
501
|
@rd.requires_params(["ids"])
|
489
|
-
def rest_on_redis_metrics_cpu(request
|
502
|
+
def rest_on_redis_metrics_cpu(request):
|
490
503
|
return get_redis_metrics(request, "cpu")
|
491
504
|
|
492
505
|
|
493
506
|
@rd.urlGET('aws/redis/cons')
|
494
507
|
@rd.requires_params(["ids"])
|
495
|
-
def rest_on_redis_metrics_cons(request
|
508
|
+
def rest_on_redis_metrics_cons(request):
|
496
509
|
return get_redis_metrics(request, "cache_cons")
|
497
510
|
|
498
511
|
|
499
512
|
@rd.urlGET('aws/redis/memory')
|
500
513
|
@rd.requires_params(["ids"])
|
501
|
-
def rest_on_redis_metrics_mem(request
|
514
|
+
def rest_on_redis_metrics_mem(request):
|
502
515
|
return get_redis_metrics(request, "cache_usage")
|
503
516
|
|
504
517
|
|
@@ -1,59 +1,24 @@
|
|
1
|
-
from . import views
|
2
|
-
|
3
|
-
import version
|
4
|
-
import time
|
5
1
|
from datetime import datetime
|
6
|
-
import
|
7
|
-
import
|
8
|
-
from . import joke
|
9
|
-
from . import helpers
|
10
|
-
|
11
|
-
import django
|
2
|
+
import time
|
3
|
+
from rest import helpers
|
12
4
|
from django.conf import settings
|
5
|
+
import django
|
6
|
+
import version
|
7
|
+
import platform
|
8
|
+
import socket
|
13
9
|
|
14
10
|
|
15
|
-
from .decorators import url
|
16
|
-
|
17
11
|
try:
|
18
12
|
import psutil
|
19
13
|
except Exception:
|
20
14
|
print("no psutil")
|
21
15
|
|
22
|
-
|
23
|
-
URL_PREFIX = ""
|
24
|
-
|
25
16
|
SOFTWARE_VERSIONS = getattr(settings, 'SOFTWARE_VERSIONS', None)
|
26
|
-
ALLOW_PUBLIC_SYS_INFO = getattr(settings, 'ALLOW_PUBLIC_SYS_INFO', False)
|
27
|
-
# SOFTWARE_VERSIONS_ACTUAL = {}
|
28
|
-
|
29
|
-
|
30
|
-
@url(r'^version$')
|
31
|
-
def on_get_version(request):
|
32
|
-
return views.restStatus(request, True, {"data": version.VERSION, "ip": request.ip})
|
33
|
-
|
34
17
|
|
35
|
-
@url(r'^versions$')
|
36
|
-
def on_get_version(request):
|
37
|
-
from rest import __version__ as restit_version
|
38
|
-
versions = dict(
|
39
|
-
project=version.VERSION,
|
40
|
-
restit=restit_version)
|
41
|
-
if request.DATA.get("detailed") and SOFTWARE_VERSIONS:
|
42
|
-
getVersions(versions)
|
43
|
-
return views.restStatus(request, True, {"data": versions})
|
44
18
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
echo = request.DATA.get("echo", None)
|
49
|
-
if echo:
|
50
|
-
request.session["echo"] = echo
|
51
|
-
return views.restReturn(request, dict(echo=request.session.get("echo", "not set")))
|
52
|
-
|
53
|
-
|
54
|
-
@url(r'^joke$')
|
55
|
-
def on_get_joke(request):
|
56
|
-
return views.restGet(request, {"joke": joke.getRandomJoke()})
|
19
|
+
def getHostIP():
|
20
|
+
hostname = socket.gethostname()
|
21
|
+
return socket.gethostbyname(hostname)
|
57
22
|
|
58
23
|
|
59
24
|
def getTcpEstablishedCount():
|
@@ -69,10 +34,18 @@ def getTcpEstablished():
|
|
69
34
|
return established
|
70
35
|
|
71
36
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
37
|
+
def getVersions(out=None):
|
38
|
+
if out is None:
|
39
|
+
out = {}
|
40
|
+
for key in SOFTWARE_VERSIONS:
|
41
|
+
if key == "django":
|
42
|
+
out[key] = django.__version__
|
43
|
+
else:
|
44
|
+
out[key] = safe_cmd(SOFTWARE_VERSIONS[key])
|
45
|
+
return out
|
46
|
+
|
47
|
+
|
48
|
+
def getHostInfo(include_versions=False, include_blocked=False):
|
76
49
|
mem = psutil.virtual_memory()
|
77
50
|
disk = psutil.disk_usage('/')
|
78
51
|
net = psutil.net_io_counters()
|
@@ -130,11 +103,11 @@ def on_get_system_info(request):
|
|
130
103
|
except Exception:
|
131
104
|
pass
|
132
105
|
|
133
|
-
if
|
106
|
+
if include_versions and SOFTWARE_VERSIONS:
|
134
107
|
out["versions"] = getVersions()
|
135
|
-
if
|
108
|
+
if include_blocked:
|
136
109
|
out["blocked"] = helpers.getBlockedHosts()
|
137
|
-
return
|
110
|
+
return out
|
138
111
|
|
139
112
|
|
140
113
|
def safe_cmd(cmd, *args):
|
@@ -147,14 +120,3 @@ def safe_cmd(cmd, *args):
|
|
147
120
|
return str(err)
|
148
121
|
# print( str(err))
|
149
122
|
return None
|
150
|
-
|
151
|
-
|
152
|
-
def getVersions(out=None):
|
153
|
-
if out is None:
|
154
|
-
out = {}
|
155
|
-
for key in SOFTWARE_VERSIONS:
|
156
|
-
if key == "django":
|
157
|
-
out[key] = django.__version__
|
158
|
-
else:
|
159
|
-
out[key] = safe_cmd(SOFTWARE_VERSIONS[key])
|
160
|
-
return out
|
@@ -0,0 +1,62 @@
|
|
1
|
+
from . import views
|
2
|
+
|
3
|
+
import version
|
4
|
+
from . import joke
|
5
|
+
from . import helpers
|
6
|
+
|
7
|
+
import django
|
8
|
+
from django.conf import settings
|
9
|
+
|
10
|
+
|
11
|
+
from .decorators import url
|
12
|
+
from rest.extra import hostinfo
|
13
|
+
|
14
|
+
|
15
|
+
URL_PREFIX = ""
|
16
|
+
|
17
|
+
SOFTWARE_VERSIONS = getattr(settings, 'SOFTWARE_VERSIONS', None)
|
18
|
+
ALLOW_PUBLIC_SYS_INFO = getattr(settings, 'ALLOW_PUBLIC_SYS_INFO', False)
|
19
|
+
SYS_INFO_KEY = getattr(settings, 'SYS_INFO_KEY', None)
|
20
|
+
# SOFTWARE_VERSIONS_ACTUAL = {}
|
21
|
+
|
22
|
+
|
23
|
+
@url('version')
|
24
|
+
def on_get_version(request):
|
25
|
+
return views.restStatus(request, True, {"data": version.VERSION, "ip": request.ip})
|
26
|
+
|
27
|
+
|
28
|
+
@url('versions')
|
29
|
+
def on_get_version(request):
|
30
|
+
from rest import __version__ as restit_version
|
31
|
+
versions = dict(
|
32
|
+
project=version.VERSION,
|
33
|
+
restit=restit_version)
|
34
|
+
if request.DATA.get("detailed") and SOFTWARE_VERSIONS:
|
35
|
+
hostinfo.getVersions(versions)
|
36
|
+
return views.restStatus(request, True, {"data": versions})
|
37
|
+
|
38
|
+
|
39
|
+
@url('test/session')
|
40
|
+
def on_get_my_session(request):
|
41
|
+
echo = request.DATA.get("echo", None)
|
42
|
+
if echo:
|
43
|
+
request.session["echo"] = echo
|
44
|
+
return views.restReturn(request, dict(echo=request.session.get("echo", "not set")))
|
45
|
+
|
46
|
+
|
47
|
+
@url('joke')
|
48
|
+
def on_get_joke(request):
|
49
|
+
return views.restGet(request, {"joke": joke.getRandomJoke()})
|
50
|
+
|
51
|
+
|
52
|
+
@url('system/info')
|
53
|
+
def on_get_system_info(request):
|
54
|
+
key = request.DATA.get("key")
|
55
|
+
if SYS_INFO_KEY is None or key != SYS_INFO_KEY:
|
56
|
+
if not ALLOW_PUBLIC_SYS_INFO and not request.user.is_authenticated:
|
57
|
+
return views.restPermissionDenied(request, "system info is not public", 565)
|
58
|
+
out = hostinfo.getHostInfo(
|
59
|
+
include_versions=request.DATA.get("versions") and SOFTWARE_VERSIONS,
|
60
|
+
include_blocked=request.DATA.get("blocked"))
|
61
|
+
return views.restGet(request, out)
|
62
|
+
|
@@ -392,7 +392,7 @@ class Task(models.Model, RestModel):
|
|
392
392
|
return task
|
393
393
|
|
394
394
|
@classmethod
|
395
|
-
def PublishModelTask(cls, model_name, fname, data, stale_after_seconds=0, channel="tq_model_handler", scheduled_for=
|
395
|
+
def PublishModelTask(cls, model_name, fname, data, stale_after_seconds=0, channel="tq_model_handler", scheduled_for=None):
|
396
396
|
return cls.Publish(cls, model_name, fname, data, stale_after_seconds, channel, scheduled_for)
|
397
397
|
|
398
398
|
@classmethod
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0003_member_phone_number.py
RENAMED
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0005_member_auth_code_expires.py
RENAMED
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0006_member_security_token.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0009_alter_member_phone_number.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0012_settings_settingsmetadata.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/migrations/0015_memberdevice_buid.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/plain/reset_code.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
{django_restit-4.2.103 → django_restit-4.2.105}/account/templates/email/simple/reset_code.html
RENAMED
File without changes
|
File without changes
|