django-restit 4.0.2__tar.gz → 4.0.5__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.0.2 → django_restit-4.0.5}/PKG-INFO +1 -1
- django_restit-4.0.5/pushit/rpc/__init__.py +2 -0
- django_restit-4.0.5/pushit/rpc/githooks.py +61 -0
- django_restit-4.0.5/pushit/rpc/legacy.py +126 -0
- django_restit-4.0.5/pushit/rpc/products.py +15 -0
- django_restit-4.0.5/pushit/tq.py +6 -0
- django_restit-4.0.5/pushit/utils.py +58 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pyproject.toml +4 -7
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/__init__.py +1 -1
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/decorators.py +15 -3
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/log.py +7 -16
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/rpc.py +7 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/urls.py +3 -1
- django_restit-4.0.2/pushit/rpc.py +0 -334
- {django_restit-4.0.2 → django_restit-4.0.5}/LICENSE.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/fcm/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0003_member_phone_number.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0004_group_modified_alter_group_created.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0005_member_auth_code_expires.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0006_member_security_token.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0007_authtoken_signature_authsession.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0008_memberdevice_memberdevicemetadata.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0009_alter_member_phone_number.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0010_delete_authtoken.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0011_authtoken.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/0012_settings_settingsmetadata.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/device.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/feeds.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/group.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/legacy.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/member.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/membership.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/notify.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/session.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/models/settings.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/oauth/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/oauth/google.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/periodic.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/auth.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/device.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/group.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/member.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/notify.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/oauth.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/rpc/settings.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/settings.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/base.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/invite.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/plain/invite.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/plain/reset_code.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/reset_code.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/simple/invite.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/account/templates/email/simple/reset_code.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/README +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/decorators.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/middleware.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/periodic.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/tq.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/auditlog/urls.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/handlers.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/migrations/0002_alter_message_cc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/migrations/0003_attachment_content_type.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/migrations/0004_mailtemplate.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/models/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/models/bounce.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/models/complaint.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/models/message.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/models/template.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/utils/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/utils/parsing.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/utils/render.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/inbox/utils/sending.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0002_event_component_event_component_id.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0003_rule_action.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0004_serverossecalert_ssh_sig_alter_rulecheck_parent.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0005_incident_component_alter_incident_state.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0006_delete_eventmetadata.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0007_event_metadata.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/0008_incident_action_sent_incident_hostname_and_more.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/models/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/models/event.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/models/incident.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/models/ossec.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/models/rules.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/parsers/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/parsers/ossec.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/periodic.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/templates/email/incident_change.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/templates/email/incident_new.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/templates/email/incident_plain.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/incident/tq.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/geolocate.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/migrations/0002_geoip_subnet_alter_geoip_ip.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/address.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/ip.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/legacy.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/location.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/models/track.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/abstractapi.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/extremeip.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/geoplugin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/ipapi.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/ipinfo.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/iplookup/restit.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/location/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/location/google.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/timezones/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/timezones/google.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/providers/zillow.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/rpc/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/rpc/ip.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/rpc/location.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/location/rpc/track.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/cvutil/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/cvutil/contours.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/cvutil/images.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/cvutil/misc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/cvutil/text.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/fixtures/initial_data.json +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/fixtures/medialib.json +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/fixtures/medialib_test_fixture.json +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/forms.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/ocr.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/pdf.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/qrcode.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/anigif.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/ffmpeg.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/gifsicle.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/hls.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/mp4box.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/rtmp/Makefile +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/rtmp/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/rtmp/rtmp.i +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/rtmpdump.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/rtmpsink.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/video_getinfo.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/engines/websnap.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/exceptions.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/akamai.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/animated_thumbnail.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/ffmpeg.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/flv.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/hls.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/image_transcode.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/image_validate.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/mp4.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/video_still.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/video_validate.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/websnap.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/presets/youtube.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/render_utils.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/render/schedule.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/rpc/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/rpc/legacy.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/rpc/media.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/rpc/tools.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/scripts/init_config +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/css/base_medialibui.css +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/css/base_widgets.css +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/css/jquery.jcrop.css +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/arrow-down-white.png +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/bg-body.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/cancel.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/icon-generic.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/icon-image.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/icon-media.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/icon-zip.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/loading.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/noimage.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/render_err.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/rendering.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/star_off.png +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/star_on.png +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/img/unknown.gif +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/caman.full.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/hammer.min.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/jquery.Jcrop.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/jquery.hammer.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/load-image.min.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/swiper.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/tinymce/plugins/medialib/editor_plugin.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/tinymce/plugins/medialib/editor_plugin_src.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/tinymce/plugins/medialib/js/dialog.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/static/lib/tinymce/plugins/medialib/medialib.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/channel.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/discovery.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/errors.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/http.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/mimeparse.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/model.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/sample_tools.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/apiclient/schema.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/filestore.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/httplib2/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/httplib2/cacerts.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/httplib2/iri2uri.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/httplib2/socks.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/httpstore.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/nullstore.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/anyjson.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/appengine.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/client.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/clientsecrets.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/crypt.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/django_orm.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/gce.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/keyring_storage.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/locked_file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/multistore_file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/old_run.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/tools.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/util.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/oauth2client/xsrfutil.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/rtmpstore.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/s3store.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/uritemplate/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/stores/youtubestore.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/base.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/instances.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/items.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/library.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_error.subject +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_error.to +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_error.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_ready.subject +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_ready.to +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_ready.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_render_error.subject +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_render_error.to +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_render_error.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_validate_error.subject +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_validate_error.to +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/notify_validate_error.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/smil +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/test.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/templates/medialib/testpicker.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/tests.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/tq.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/urls.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/utils.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/views.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/channel.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/discovery.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/errors.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/http.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/mimeparse.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/model.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/sample_tools.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/apiclient/schema.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/httplib2/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/httplib2/cacerts.txt +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/httplib2/iri2uri.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/httplib2/socks.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/anyjson.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/appengine.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/client.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/clientsecrets.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/crypt.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/django_orm.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/gce.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/keyring_storage.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/locked_file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/multistore_file.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/old_run.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/tools.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/util.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/oauth2client/xsrfutil.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/upload.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/medialib/youtube/uritemplate/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/client.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/eod.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/examples/eod_example.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/delete_gauge.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/delete_metric.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/fix_redis_metrics_keys.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/generate_test_metrics.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/redis_metrics_send_mail.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/reset_weekly_metrics.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/management/commands/system_metric.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/0002_metrics_k11_metrics_k12_metrics_k13_metrics_k14_and_more.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/0003_metrics_expires.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/0004_eodmetrics.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/0005_alter_metrics_v1_alter_metrics_v10_alter_metrics_v11_and_more.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/periodic.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/providers/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/providers/aws.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/settings.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/tq.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/metrics/utils.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/pushit/static/js/models_pushit.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/.gitignore +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/RemoteEvents.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/arc4.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/cache.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/crypto/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/crypto/aes.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/crypto/privpub.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/crypto/util.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/datem.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/encryption.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/extra/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/extra/json_metadata.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/fields.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/forms.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/helpers.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/joke.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/jwtoken.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/mail.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/mailman.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/management/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/management/commands/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/management/commands/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/cors.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/db_router.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/jwt.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/request.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/session.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/middleware/session_store.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/regexes.yaml +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/requestex.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/search.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/collection.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/csv.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/excel.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/json.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/legacy.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/model.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/response.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/serializers/util.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/settings_helper.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/static/lib/jquery.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/static/rest/app.css +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/static/rest/app.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/static/rest/rest.js +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/static/rest/rest.scss +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/templates/email/error.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/templates/email/error.subject +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/templates/rest_docs.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/templates/rest_html.html +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/ua.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/uberdict.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/url_docs.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/rest/views.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/.gitignore +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/tests.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/sessionlog/views.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/periodic.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/tq.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/email.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/http.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/s3.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/sftp.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/transports/sms.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/taskqueue/worker.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/admin.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/decorators.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/migrations/0001_initial.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/migrations/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/models.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/phone_util.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/telephony/rpc.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/README.md +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/client.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/connection.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/exceptions.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/redis.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/servers/__init__.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/servers/base.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/servers/django.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/servers/uwsgi.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/settings.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/utf8validator.py +0 -0
- {django_restit-4.0.2 → django_restit-4.0.5}/ws4redis/websocket.py +0 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
from rest import decorators as rd
|
2
|
+
from rest import views as rv
|
3
|
+
from rest import settings
|
4
|
+
from rest import helpers as rh
|
5
|
+
from taskqueue.models import Task
|
6
|
+
from pushit import utils
|
7
|
+
import time
|
8
|
+
|
9
|
+
|
10
|
+
@rd.urlPOST('hooks/git_update')
|
11
|
+
def rest_on_git_hook(request):
|
12
|
+
sec_key = request.DATA.get("token")
|
13
|
+
git_key = settings.get("GIT_KEY", "hookswhat")
|
14
|
+
hook_request = None
|
15
|
+
|
16
|
+
req_key = request.DATA.getHeader("HTTP_X_GITLAB_TOKEN")
|
17
|
+
if req_key is not None:
|
18
|
+
hook_request = utils.parseGitLab(request)
|
19
|
+
else:
|
20
|
+
req_key = request.DATA.getHeader("HTTP_X_HUB_SIGNATURE_256")
|
21
|
+
if req_key is not None:
|
22
|
+
hook_request = utils.parseGithub(request)
|
23
|
+
|
24
|
+
if sec_key != git_key and req_key is None:
|
25
|
+
rh.error("GIT HOOK NO TOKEN", request.META)
|
26
|
+
return rv.restPermissionDenied(request)
|
27
|
+
|
28
|
+
git_projects = settings.get("GIT_PROJECTS", None)
|
29
|
+
|
30
|
+
if hook_request.name not in git_projects:
|
31
|
+
return rv.restStatus(request, False, error="no config for project")
|
32
|
+
|
33
|
+
proj_info = utils.getProjectForBranch(git_projects.get(hook_request.name), hook_request.branch)
|
34
|
+
if proj_info is None:
|
35
|
+
return rv.restStatus(request, False, error="no branch for project")
|
36
|
+
|
37
|
+
if hook_request.kind == "push":
|
38
|
+
on_git_push_request(proj_info, hook_request)
|
39
|
+
|
40
|
+
return rv.restStatus(request, True)
|
41
|
+
|
42
|
+
|
43
|
+
def on_git_push_request(info, hook_request):
|
44
|
+
branch = info.get("branch")
|
45
|
+
cmd = info.get("updater")
|
46
|
+
use_tq = info.get("use_tq", False)
|
47
|
+
|
48
|
+
if use_tq:
|
49
|
+
data = dict(branch=branch, update_cmd=cmd)
|
50
|
+
Task.Publish("pushit", "run_update", data, channel="tq_updater")
|
51
|
+
else:
|
52
|
+
asyncUpdater(cmd, branch)
|
53
|
+
|
54
|
+
|
55
|
+
@rd.rest_async
|
56
|
+
def asyncUpdater(cmd, branch):
|
57
|
+
import random
|
58
|
+
# randomize the hit so we avoid collisions (gitlabs issues)
|
59
|
+
time.sleep(random.randint(2, 15))
|
60
|
+
utils.updateCode(cmd, branch)
|
61
|
+
|
@@ -0,0 +1,126 @@
|
|
1
|
+
from pushit.models import Product, Release
|
2
|
+
from rest import decorators as rd
|
3
|
+
|
4
|
+
|
5
|
+
@rd.urlPOST (r'^product$')
|
6
|
+
@rd.urlPOST (r'^product/(?P<product_id>\d+)$')
|
7
|
+
@rd.urlPOST (r'^product/uuid/(?P<uuid>\w+)$')
|
8
|
+
@rd.login_optional
|
9
|
+
def updateProduct(request, product_id=None, uuid=None):
|
10
|
+
if not request.member:
|
11
|
+
return restPermissionDenied(request)
|
12
|
+
product = None
|
13
|
+
if not product_id and not uuid:
|
14
|
+
product = Product.createFromRequest(request, owner=request.member, group=request.group)
|
15
|
+
elif product_id:
|
16
|
+
product = Product.objects.filter(pk=product_id).last()
|
17
|
+
elif uuid:
|
18
|
+
product = Product.objects.filter(oid=uuid).last()
|
19
|
+
|
20
|
+
if not product:
|
21
|
+
return restStatus(request, False, error="unknown product")
|
22
|
+
if product.owner != request.member or (product.group and not request.member.isMemberOf(product.group)):
|
23
|
+
if not request.user.is_staff:
|
24
|
+
return restPermissionDenied(request)
|
25
|
+
product.saveFromRequest(request, owner=request.member)
|
26
|
+
return restGet(request, product, **Product.getGraph("default"))
|
27
|
+
|
28
|
+
|
29
|
+
@rd.urlGET (r'^product/(?P<product_id>\d+)$')
|
30
|
+
@rd.urlGET (r'^product/uuid/(?P<uuid>\w+)$')
|
31
|
+
@rd.login_optional
|
32
|
+
def getProduct(request, product_id=None, uuid=None):
|
33
|
+
product = None
|
34
|
+
if product_id:
|
35
|
+
product = Product.objects.filter(pk=product_id).last()
|
36
|
+
elif uuid:
|
37
|
+
product = Product.objects.filter(oid=uuid).last()
|
38
|
+
else:
|
39
|
+
return restNotFound(request)
|
40
|
+
|
41
|
+
if not product:
|
42
|
+
return restStatus(request, False, error="unknown product")
|
43
|
+
if not product.is_public and not request.member:
|
44
|
+
return restPermissionDenied(request, "not logged in")
|
45
|
+
return product.restGet(request)
|
46
|
+
|
47
|
+
|
48
|
+
@rd.urlGET (r'^product$')
|
49
|
+
@rd.login_optional
|
50
|
+
def listProducts(request):
|
51
|
+
if not request.member:
|
52
|
+
return restPermissionDenied(request)
|
53
|
+
if not request.member.is_staff:
|
54
|
+
return restPermissionDenied(request)
|
55
|
+
|
56
|
+
kind = request.DATA.get("kind")
|
57
|
+
qset = Product.objects.filter(archived=False)
|
58
|
+
if kind:
|
59
|
+
qset = qset.filter(kind=kind)
|
60
|
+
|
61
|
+
return restList(request, qset, **Product.getGraph("default"))
|
62
|
+
|
63
|
+
|
64
|
+
@rd.urlPOST (r'^release$')
|
65
|
+
@rd.urlPOST (r'^release/(?P<release_id>\d+)$')
|
66
|
+
@rd.login_optional
|
67
|
+
def updateRelease(request, release_id=None):
|
68
|
+
if not request.member:
|
69
|
+
return restPermissionDenied(request)
|
70
|
+
|
71
|
+
if not release_id:
|
72
|
+
auto_version = request.DATA.get("auto_version", False)
|
73
|
+
prod_uuid = request.DATA.get(["product", "product_uuid"])
|
74
|
+
product = None
|
75
|
+
if prod_uuid:
|
76
|
+
product = Product.objects.filter(oid=prod_uuid).last()
|
77
|
+
else:
|
78
|
+
prod_id = request.DATA.get("product_id")
|
79
|
+
if prod_id:
|
80
|
+
product = Product.objects.filter(pk=prod_id).last()
|
81
|
+
if not product:
|
82
|
+
return restStatus(request, False, error="product required")
|
83
|
+
version_num = request.DATA.get("version_num", field_type=int)
|
84
|
+
last_release = Release.objects.filter(product=product).order_by("-version_num").first()
|
85
|
+
|
86
|
+
if not version_num:
|
87
|
+
if last_release and auto_version:
|
88
|
+
version_num = last_release.version_num + 1
|
89
|
+
elif auto_version:
|
90
|
+
version_num = 1
|
91
|
+
else:
|
92
|
+
return restStatus(request, False, error="no version info supplied, try auto_version=1")
|
93
|
+
elif last_release and version_num <= last_release.version_num:
|
94
|
+
return restStatus(request, False, error="version is not greater then last")
|
95
|
+
|
96
|
+
release = Release.createFromRequest(request, product=product, owner=request.member, group=request.group, version_num=version_num)
|
97
|
+
else:
|
98
|
+
release = Release.objects.filter(pk=release_id).last()
|
99
|
+
if not release:
|
100
|
+
return restStatus(request, False, error="unknown release")
|
101
|
+
if release.owner != request.member or (release.product.group and not request.member.isMemberOf(release.product.group)):
|
102
|
+
if not request.user.is_staff:
|
103
|
+
return restPermissionDenied(request)
|
104
|
+
release.saveFromRequest(request, owner=request.member)
|
105
|
+
if request.DATA.get("make_current"):
|
106
|
+
release.makeCurrent()
|
107
|
+
elif request.DATA.get("make_beta"):
|
108
|
+
release.makeCurrent()
|
109
|
+
return restGet(request, release, **Release.getGraph("default"))
|
110
|
+
|
111
|
+
|
112
|
+
@rd.urlGET (r'^release/(?P<release_id>\d+)$')
|
113
|
+
@rd.login_optional
|
114
|
+
def getRelease(request, release_id):
|
115
|
+
release = Release.objects.filter(pk=release_id).last()
|
116
|
+
if not release:
|
117
|
+
return restStatus(request, False, error="unknown release")
|
118
|
+
if not release.product.is_public and not request.member:
|
119
|
+
return restPermissionDenied(request, "not logged in")
|
120
|
+
return restGet(request, release, **Release.getGraph("default"))
|
121
|
+
|
122
|
+
|
123
|
+
def reportRestIssue(subject, message, perm="rest_errors", email_only=False):
|
124
|
+
# notifyWithPermission(perm, subject, message=None, template=None, context=None, email_only=False)
|
125
|
+
# notify email only
|
126
|
+
Member.notifyWithPermission(perm, subject, message, email_only=email_only)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from rest import decorators as rd
|
2
|
+
from rest import views as rv
|
3
|
+
from pushit.models import Product, Release
|
4
|
+
|
5
|
+
|
6
|
+
@rd.url('product')
|
7
|
+
@rd.url('product/<int:pk>')
|
8
|
+
def rest_on_product(request, pk=None):
|
9
|
+
return Product.on_rest_request(request, pk)
|
10
|
+
|
11
|
+
|
12
|
+
@rd.url('release')
|
13
|
+
@rd.url('release/<int:pk>')
|
14
|
+
def rest_on_release(request, pk=None):
|
15
|
+
return Release.on_rest_request(request, pk)
|
@@ -0,0 +1,58 @@
|
|
1
|
+
from rest import settings
|
2
|
+
from rest import log
|
3
|
+
from objict import objict
|
4
|
+
import os
|
5
|
+
import subprocess
|
6
|
+
|
7
|
+
logger = log.getLogger("pushit", filename="pushit.log")
|
8
|
+
|
9
|
+
|
10
|
+
def updateCode(update_cmd, branch, update_user="ec2-user"):
|
11
|
+
if settings.PUSHIT_TEST_SUDO:
|
12
|
+
cmd = ["sudo", "-lU", update_user, update_cmd, branch]
|
13
|
+
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
14
|
+
out, err = process.communicate()
|
15
|
+
if err.strip():
|
16
|
+
logger.warning("WARNING: cannot run {}, we don't have sudo rights".format(update_cmd))
|
17
|
+
logger.warning("WARNING: add {} to your sudo user".format(update_cmd))
|
18
|
+
return
|
19
|
+
# - lock it so we kill any updates in progress and start a new one
|
20
|
+
cmd = ["sudo", "-u", update_user, update_cmd, branch]
|
21
|
+
logger.info("updating...", cmd)
|
22
|
+
subprocess.Popen(cmd, close_fds=True)
|
23
|
+
|
24
|
+
|
25
|
+
def parseGitLab(request):
|
26
|
+
info = objict(vendor="gitlab")
|
27
|
+
info.name = request.DATA.get("project.name")
|
28
|
+
info.kind = request.DATA.get("object_kind")
|
29
|
+
if "ref" in request.DATA:
|
30
|
+
info.branch = request.DATA.get("ref").split('/')[-1]
|
31
|
+
if info.kind == "merge_request":
|
32
|
+
info.state = request.DATA.get("object_attributes.state", None)
|
33
|
+
if info.state == "merged":
|
34
|
+
info.kind = "merged"
|
35
|
+
return info
|
36
|
+
|
37
|
+
|
38
|
+
def parseGithub(request):
|
39
|
+
info = objict(vendor="github")
|
40
|
+
info.name = request.DATA.get("repository.name")
|
41
|
+
info.kind = request.DATA.getHeader("HTTP_X_GITHUB_EVENT")
|
42
|
+
if "ref" in request.DATA:
|
43
|
+
info.branch = request.DATA.get("ref").split('/')[-1]
|
44
|
+
logger.info("github request", info)
|
45
|
+
return info
|
46
|
+
|
47
|
+
|
48
|
+
def getProjectForBranch(proj_info, branch):
|
49
|
+
if proj_info is None:
|
50
|
+
return None
|
51
|
+
if isinstance(proj_info, list):
|
52
|
+
for pi in proj_info:
|
53
|
+
if pi["branch"] == branch:
|
54
|
+
return pi
|
55
|
+
return None
|
56
|
+
if proj_info["branch"] == branch:
|
57
|
+
return proj_info
|
58
|
+
return None
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "django-restit"
|
3
|
-
version = "4.0.
|
3
|
+
version = "4.0.5"
|
4
4
|
description = "A Rest Framework for DJANGO"
|
5
5
|
authors = ["Ian Starnes <ians@311labs.com>"]
|
6
6
|
license = "MIT"
|
@@ -53,20 +53,17 @@ django-redis-sessions = "^0.6.2"
|
|
53
53
|
|
54
54
|
[tool.poetry.group.dev.dependencies]
|
55
55
|
twine = "^4.0.2"
|
56
|
-
bumpver = "^2023.1124"
|
57
56
|
|
58
57
|
[tool.bumpver]
|
59
|
-
current_version = "4.0.
|
58
|
+
current_version = "4.0.3"
|
60
59
|
version_pattern = "MAJOR.MINOR.PATCH"
|
61
60
|
commit_message = "bump version {old_version} -> {new_version}"
|
62
61
|
commit = false
|
63
62
|
tag = true
|
64
63
|
push = true
|
65
64
|
|
66
|
-
[tool.
|
67
|
-
|
68
|
-
'current_version = "{version}"',
|
69
|
-
]
|
65
|
+
[tool.poetry_bumpversion.file."rest/__init__.py"]
|
66
|
+
|
70
67
|
|
71
68
|
[build-system]
|
72
69
|
requires = ["poetry-core"]
|
@@ -18,12 +18,14 @@ from datetime import datetime
|
|
18
18
|
from auditlog.models import PersistentLog
|
19
19
|
|
20
20
|
import importlib
|
21
|
+
import pkgutil
|
21
22
|
import threading
|
22
23
|
import traceback
|
23
24
|
|
24
25
|
REST_METRICS = settings.get("REST_METRICS", False)
|
25
26
|
REST_METRICS_BY_ENDPOINT = settings.get("REST_METRICS_BY_ENDPOINT", False)
|
26
27
|
REST_METRICS_IGNORE = settings.get("REST_METRICS_IGNORE", [])
|
28
|
+
REST_MODULE_NAME = settings.get("REST_MODULE_NAME", "rpc")
|
27
29
|
|
28
30
|
|
29
31
|
# background task (no return)
|
@@ -130,6 +132,12 @@ def dispatcher(request, *args, **kwargs):
|
|
130
132
|
return restStatus(request, False, error="endpoint not found", error_code=404)
|
131
133
|
|
132
134
|
|
135
|
+
def _load_module(mod):
|
136
|
+
if pkgutil.find_loader(mod) is not None:
|
137
|
+
return importlib.import_module(mod)
|
138
|
+
return None
|
139
|
+
|
140
|
+
|
133
141
|
def _url_method(pattern, method=None, *args, **kwargs):
|
134
142
|
"""
|
135
143
|
Register a view handler for a specific HTTP method
|
@@ -150,13 +158,17 @@ def _url_method(pattern, method=None, *args, **kwargs):
|
|
150
158
|
# print module.__name__
|
151
159
|
root_name = module.__name__.split('.')[0]
|
152
160
|
# print "importing {0}.rpc".format(root_name)
|
153
|
-
|
161
|
+
rmodule = _load_module(f"{root_name}.{REST_MODULE_NAME}")
|
162
|
+
if rmodule is not None:
|
163
|
+
rpc_root_module = rmodule
|
154
164
|
# print "{0}/{1}".format(rpc_root_module.__name__, pattern)
|
155
|
-
elif not module.__name__.endswith(".
|
165
|
+
elif not module.__name__.endswith(f".{REST_MODULE_NAME}") and module.__name__.count('.'):
|
156
166
|
# print module.__name__
|
157
167
|
root_name = module.__name__.split('.')[0]
|
158
168
|
# print "importing {0}.rpc".format(root_name)
|
159
|
-
|
169
|
+
rmodule = _load_module(f"{root_name}.{REST_MODULE_NAME}")
|
170
|
+
if rmodule is not None:
|
171
|
+
rpc_root_module = rmodule
|
160
172
|
lmethod = method
|
161
173
|
if lmethod is None:
|
162
174
|
lmethod = "ALL"
|
@@ -12,7 +12,11 @@ import sys
|
|
12
12
|
import threading
|
13
13
|
import time
|
14
14
|
import traceback
|
15
|
+
from .settings_helper import settings
|
15
16
|
|
17
|
+
LOG_FOLDER = settings.LOG_ROOT
|
18
|
+
if LOG_FOLDER is None:
|
19
|
+
LOG_FOLDER = os.path.join(settings.BASE_DIR, "var", "logs")
|
16
20
|
|
17
21
|
COLOR_LOGS = True
|
18
22
|
MAX_LOG_SIZE = 10485760
|
@@ -21,19 +25,6 @@ MAX_LOG_SIZE = 10485760
|
|
21
25
|
ROTATE_LEFT_OVER_BYTES = 50000
|
22
26
|
LOG_COUNT = 3
|
23
27
|
|
24
|
-
REST_FOLDER = os.path.realpath(__file__)
|
25
|
-
# now work backwards until we find folder with "django"
|
26
|
-
ROOT = None
|
27
|
-
CUR_FOLDER = REST_FOLDER
|
28
|
-
while ROOT is None:
|
29
|
-
if os.path.exists(os.path.join(CUR_FOLDER, "django")):
|
30
|
-
ROOT = CUR_FOLDER
|
31
|
-
else:
|
32
|
-
CUR_FOLDER = os.path.dirname(CUR_FOLDER)
|
33
|
-
|
34
|
-
VAR_FOLDER = os.path.join(ROOT, "var", "logs")
|
35
|
-
PATH = VAR_FOLDER
|
36
|
-
|
37
28
|
|
38
29
|
class RestLogManager(object):
|
39
30
|
def __init__(self):
|
@@ -121,8 +112,8 @@ def getLogger(
|
|
121
112
|
LOG_MANAGER.loggers[name] = rest_logger
|
122
113
|
if set_master:
|
123
114
|
LOG_MANAGER.master = rest_logger
|
124
|
-
if not os.path.exists(
|
125
|
-
mkdir(
|
115
|
+
if not os.path.exists(LOG_FOLDER):
|
116
|
+
mkdir(LOG_FOLDER)
|
126
117
|
except Exception as err:
|
127
118
|
print((str(err)))
|
128
119
|
print((str(traceback.format_exc())))
|
@@ -160,7 +151,7 @@ class RestLoggerStream(object):
|
|
160
151
|
if not os.path.exists(self.filename):
|
161
152
|
path, fname = os.path.split(filename)
|
162
153
|
if not len(path):
|
163
|
-
self.filename = os.path.join(
|
154
|
+
self.filename = os.path.join(LOG_FOLDER, filename)
|
164
155
|
self.max_bytes = max_bytes
|
165
156
|
self.stream = None
|
166
157
|
self.is_stdout = False
|
@@ -31,6 +31,13 @@ def on_get_version(request):
|
|
31
31
|
return views.restStatus(request, True, {"data": version.VERSION})
|
32
32
|
|
33
33
|
|
34
|
+
@url(r'^versions$')
|
35
|
+
def on_get_version(request):
|
36
|
+
from rest import __version__ as restit_version
|
37
|
+
versions = dict(project=version.VERSION, restit=restit_version)
|
38
|
+
return views.restStatus(request, True, {"data": versions})
|
39
|
+
|
40
|
+
|
34
41
|
@url(r'^joke$')
|
35
42
|
def on_get_joke(request):
|
36
43
|
return views.restGet(request, {"joke": joke.getRandomJoke()})
|
@@ -24,7 +24,9 @@ urlpatterns = [
|
|
24
24
|
def load_app(app, root_module=None):
|
25
25
|
module = None
|
26
26
|
try:
|
27
|
-
module = loadModule(app
|
27
|
+
module = loadModule(f"{app}.rpc")
|
28
|
+
if module is None:
|
29
|
+
module = loadModule(f"{app}.rurl")
|
28
30
|
except ImportError as err:
|
29
31
|
print("**** failed to load {0}.rpc! ****".format(app))
|
30
32
|
print("**** missing dependencies ****")
|