Browse Source

Merge branch 'master' into stable

code reviewed by xlfd
remotes/origin/posli-mail-autorovi-korektury
Matěj Kocián 8 years ago
parent
commit
deb8fcc91a
  1. 28
      Makefile
  2. 23
      seminar/admin.py

28
Makefile

@ -1,4 +1,4 @@
.PHONY: clean_env init_env clean_virtualenv install_packages clean install run all schema_seminar.pdf schema_all.pdf .PHONY: clean_env init_env clean_virtualenv install_packages clean install run all schema_seminar.pdf schema_all.pdf sync_test_media sync_test_db sync_test sync_local_media sync_local_db sync_local
PYTHON=python2.7 PYTHON=python2.7
VE_VER=13.1.2 VE_VER=13.1.2
LOCAL_PYTHON=bin/python LOCAL_PYTHON=bin/python
@ -93,16 +93,36 @@ deploy_prod:
touch mamweb/wsgi.py touch mamweb/wsgi.py
@echo Done. @echo Done.
# Sync test media directory with production
sync_test_media:
@if [ ${USER} != "www-mam" ]; then echo "Only possible by user www-mam"; exit 1; fi
@if [ `pwd` != "/akce/MaM/WWW/mamweb-test" ]; then echo "Only possible in /akce/MaM/WWW/mamweb-test"; exit 1; fi
rsync -av /akce/MaM/WWW/mamweb-prod/media/ ./media
# Sync test database with production database
sync_test_db:
@if [ ${USER} != "www-mam" ]; then echo "Only possible by user www-mam"; exit 1; fi
pg_dump mam-test -U mam > dump-test-`date +"%Y%m%d_%H%M"`.sql
pg_dump -Fc mam-prod -U mam > dump-prod.sql
pg_restore -c -d mam-test -U mam dump-prod.sql
rm dump-prod.sql
@echo Done.
# Sync test with production
sync_test: sync_test_media sync_test_db
# Sync media directory with atrey. Useful for local development with production database # Sync media directory with atrey. Useful for local development with production database
# Does not sync Galerie and CACHE (too huge). # Does not sync Galerie and CACHE (too huge).
sync_media: sync_local_media:
rsync -ave ssh --exclude Galerie --exclude CACHE\ rsync -ave ssh --exclude Galerie --exclude CACHE\
atrey.karlin.mff.cuni.cz:/akce/MaM/WWW/mamweb-prod/media/ ./media/ atrey.karlin.mff.cuni.cz:/akce/MaM/WWW/mamweb-prod/media/ ./media/
# Downloads and restores production database to local database. PostgreSQL only. # Downloads and restores production database to local database. PostgreSQL only.
sync_db: sync_local_db:
scp atrey.karlin.mff.cuni.cz:`ssh atrey.karlin.mff.cuni.cz 'ls -v /akce/MaM/WWW/backups/mam-prod-*\.pgdump | tail -n 1'` \ scp atrey.karlin.mff.cuni.cz:`ssh atrey.karlin.mff.cuni.cz 'ls -v /akce/MaM/WWW/backups/mam-prod-*\.pgdump | tail -n 1'` \
./last.pgdump ./last.pgdump
pg_restore -c -d mam -U mam last.pgdump pg_restore -c -d mam -U mam last.pgdump
# Sync database and media. See above lines # Sync database and media. See above lines
sync: sync_media sync_db sync_local: sync_media sync_db

23
seminar/admin.py

@ -77,6 +77,7 @@ class ResitelInline(admin.TabularInline):
fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ] fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ]
readonly_fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ] readonly_fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ]
extra = 0 extra = 0
view_on_site = False
def has_add_permission(self, req): return False def has_add_permission(self, req): return False
@ -89,6 +90,7 @@ class CisloInline(admin.TabularInline):
formfield_overrides = { formfield_overrides = {
models.TextField: {'widget': forms.TextInput}, models.TextField: {'widget': forms.TextInput},
} }
view_on_site = Cislo.verejne_url
def has_add_permission(self, req): return False def has_add_permission(self, req): return False
@ -100,9 +102,23 @@ class PrilohaReseniInline(admin.StackedInline):
formfield_overrides = { formfield_overrides = {
models.TextField: {'widget': forms.TextInput}, models.TextField: {'widget': forms.TextInput},
} }
view_on_site = False
extra = 0
class ProblemInline(admin.TabularInline):
model = Problem
fk_name = 'cislo_zadani'
fields = ['kod', 'typ', 'nazev', 'body', 'opravovatel', 'stav']
formfield_overrides = {
models.TextField: {'widget': forms.TextInput},
}
view_on_site = Problem.verejne_url
extra = 0 extra = 0
class ReseniKProblemuInline(admin.TabularInline): class ReseniKProblemuInline(admin.TabularInline):
form = autocomplete_light.modelform_factory(Reseni, autocomplete_fields=['resitel'], fields=['resitel']) form = autocomplete_light.modelform_factory(Reseni, autocomplete_fields=['resitel'], fields=['resitel'])
model = Reseni model = Reseni
@ -112,6 +128,7 @@ class ReseniKProblemuInline(admin.TabularInline):
formfield_overrides = { formfield_overrides = {
models.TextField: {'widget': forms.TextInput}, models.TextField: {'widget': forms.TextInput},
} }
view_on_site = False
def get_queryset(self, request): def get_queryset(self, request):
qs = super(ReseniKProblemuInline, self).get_queryset(request) qs = super(ReseniKProblemuInline, self).get_queryset(request)
@ -134,6 +151,7 @@ class ReseniKResiteliInline(admin.TabularInline):
formfield_overrides = { formfield_overrides = {
models.TextField: {'widget': forms.TextInput}, models.TextField: {'widget': forms.TextInput},
} }
view_on_site = False
def has_add_permission(self, req): return False def has_add_permission(self, req): return False
@ -191,6 +209,7 @@ class ResitelAdmin(VersionAdmin):
list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat'] list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat']
search_fields = ['jmeno', 'prijmeni', 'ulice', 'mesto', 'email'] search_fields = ['jmeno', 'prijmeni', 'ulice', 'mesto', 'email']
inlines = [ReseniKResiteliInline] inlines = [ReseniKResiteliInline]
view_on_site = False
def get_queryset(self, request): def get_queryset(self, request):
qs = super(ResitelAdmin, self).get_queryset(request) qs = super(ResitelAdmin, self).get_queryset(request)
@ -216,6 +235,7 @@ class SkolaAdmin(VersionAdmin):
list_filter = ['stat', 'je_zs', 'je_ss'] list_filter = ['stat', 'je_zs', 'je_ss']
search_fields = ['nazev', 'mesto', 'ulice'] search_fields = ['nazev', 'mesto', 'ulice']
inlines = [ResitelInline] inlines = [ResitelInline]
view_on_site = False
admin.site.register(Skola, SkolaAdmin) admin.site.register(Skola, SkolaAdmin)
@ -236,6 +256,7 @@ class CisloAdmin(VersionAdmin):
make_set_action('verejna_vysledkovka', True, u'Zveřejnit výsledkovku'), make_set_action('verejna_vysledkovka', True, u'Zveřejnit výsledkovku'),
make_set_action('verejna_vysledkovka', False, u'Skrýt (zneveřejnit) výsledkovku'), make_set_action('verejna_vysledkovka', False, u'Skrýt (zneveřejnit) výsledkovku'),
] ]
inlines = [ProblemInline]
def get_queryset(self, request): def get_queryset(self, request):
qs = super(CisloAdmin, self).get_queryset(request) qs = super(CisloAdmin, self).get_queryset(request)
@ -288,6 +309,7 @@ class ReseniAdmin(VersionAdmin):
list_filter = ['body', 'timestamp', 'forma'] list_filter = ['body', 'timestamp', 'forma']
search_fields = [] search_fields = []
inlines = [PrilohaReseniInline] inlines = [PrilohaReseniInline]
view_on_site = False
def get_queryset(self, request): def get_queryset(self, request):
qs = super(ReseniAdmin, self).get_queryset(request) qs = super(ReseniAdmin, self).get_queryset(request)
@ -307,6 +329,7 @@ class PohadkaAdminForm(forms.ModelForm):
class PohadkaAdmin(VersionAdmin): class PohadkaAdmin(VersionAdmin):
form = PohadkaAdminForm form = PohadkaAdminForm
view_on_site = False
def get_kod_ulohy(self, obj): def get_kod_ulohy(self, obj):
return obj.uloha.kod_v_rocniku() return obj.uloha.kod_v_rocniku()

Loading…
Cancel
Save