From de04d397bb1d71b0f083989e8ba11eb09ed1b58e Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Sat, 15 Feb 2020 21:18:14 +0100 Subject: [PATCH] =?UTF-8?q?Dateil=C3=B6sung=20fertig=20inkl.=20Rechte=20us?= =?UTF-8?q?w,=20DIV-Bug=20bei=20Module=20gel=C3=B6st,=20Profil=20zweispalt?= =?UTF-8?q?ig=20gemacht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud/__pycache__/forms.cpython-38.pyc | Bin 663 -> 682 bytes cloud/__pycache__/models.cpython-38.pyc | Bin 2573 -> 2567 bytes cloud/__pycache__/urls.cpython-38.pyc | Bin 374 -> 412 bytes cloud/__pycache__/views.cpython-38.pyc | Bin 2074 -> 4856 bytes cloud/forms.py | 2 +- cloud/models.py | 11 +- cloud/templates/cloud/cloud_main.html | 555 +++++++++++++++++- cloud/urls.py | 1 + cloud/views.py | 251 ++++---- .../__pycache__/settings.cpython-38.pyc | Bin 3605 -> 3625 bytes digitaleagentur/settings.py | 3 +- orga/templates/orga/orga_main.html | 1 + .../__pycache__/counter_tag.cpython-38.pyc | Bin 1753 -> 2003 bytes standards/templatetags/counter_tag.py | 16 + users/__pycache__/signals.cpython-38.pyc | Bin 3897 -> 3956 bytes users/__pycache__/usersforms.cpython-38.pyc | Bin 6268 -> 6268 bytes users/signals.py | 16 +- 17 files changed, 704 insertions(+), 152 deletions(-) diff --git a/cloud/__pycache__/forms.cpython-38.pyc b/cloud/__pycache__/forms.cpython-38.pyc index 87e0b866212062c8960184f8181e5785a2b7f9aa..81d441a0bde43d4b251c5683922c5eea4bc97278 100644 GIT binary patch delta 191 zcmbQvx{8%Il$V!_0SIn#dBpvj$ScceH&I(vB9|?Sjgi5fA%!)Ct%V_lEtN5gxtTeN zePW8bAk!@tm&B69TO1(LEi)%|;-r6U{6Hg$_$NZWD!WX2%-$m;s>$VfCMWL d7c&6~4rValPm_JJ8*P?Xuf;w;!|x3Z)40Q9w(BM&d_e0wG=`M&;m2Y_`mxTS`l2iwOd0 zOiaAk7@0(`dc=c?|IXe#dG+i?-`f^MA}71)Z+G6jnVo&V*=?s@r;Js@2nXP|dF9TN z_B-Q8D+rB6_`7icBOe3%fhwueee#Ju2o&hbi@g1m*VlKM-L#9H%ktjbL2<*Wakscv zIw&Zfy3r6@cGFWk{T|)kEKpB#>Tc7nuX9hsxI6+r*0f)rvza!IQvV$X8gj9kfz@EDg*sqfM3vjjz7a)dxPVln}ID3ZWsF@TW^04oX)=$0KQ z3!I^TX;}>o-?w7V9oMPUc)7A$-hom>wbD4I1b{5Ra(=+CcNS*~!wlVt3c<4(C8+Z3 z^bq77QIW%$@`w?{net&>C*&P9HNs?p~5GN)aDL7}Sn1ijD z^0mJ|q*EaU{08L=oo@Lmb&!+*X=Ycib`nLwCP%?>*dnMj0=XF$Wd;cCV;TrGJq?B8 zUhEkCBUJRkilFExn_u)ppkoYGuPhuJ!KHWNm}?o$XO4@nms1CO$4Mx;n}piNP@9-X zj3EBuYhJ$9@~!i2;jl?W=l#K}|4=2+gt&${EejlXUtjE50HA;W%jDbgMP&#aR4m9x h`uYs6#tYqTz$Zb(aF9PSjy&~{{^J_*yFN~0zX8L|{5=2w delta 1245 zcmbu9Pfrs;7{+&Y+tMxF?Na&&sHIv2T|p2;I2aQW30|ZZ^s**y+Rmt3YfIi;Oh615 zqtT=XGgnRI*soyXSMcC*Z+-*fC-8ljszAcYZsxc9&OWm{^E|VCm+R$>hlY_-@b{^7 z@A2o4#?ee1i@VtT9D=hi%D&QKEfuNlvqNo5vDMn%l&r8yV&T=&Yda>_Sgsl-{GA5( zz*fVg*YSgTrzyhZ6R#~g^%tVAfFV1q$ujZ>`+lphK@lGg^oCI1*=~31+zq;Y26^o1 zvrzALTrS!o5VgJvWzy#5w|H6pQWu5|DkGS3PJ2`Ynt!No;JY?F(dLjL!6kX9`4iKB zwI@bVpC#vGC1y!;sLZ~~BUY6kV&wy#;u;_3>7M4Kgw{%mVXTd)PGfBdvz6hA9&@Zy z)d*HuF^bHgUgKsj=H#Qk0}oz7TCWH7 zbq`>KW|>7ifKlWIl&Iq}!bzjgzU!eyc(yet$j$gP4zh1=M5cYFajI&wEsM44P5Sqh&#c!3=|t60V)=9(4MVKx`>1XaQm;f%{<{}pV$ zicr{IX0W<>*YyK%-I`s38N34|f~y2lf=#H(`-#N^N9VY#XhA?*)6oY@Xzao)$r6M) z!gaztVS%6#ZV(m;F~Sldi3k(hbr78Z&fOt5QB_jz;N;1iB+IfiHVY3Ej~t#0Dv+p& z?bMHEw1&-piyQ0tQ;ggcv>mL$)+*qZGBNZb*D>@Atf2O6-Y`a;P| diff --git a/cloud/__pycache__/urls.cpython-38.pyc b/cloud/__pycache__/urls.cpython-38.pyc index 99d2da436084ed7e14c8c60d6b739d731bf06132..14f7be31d27920e95aa3bb65baaceba452a71f7a 100644 GIT binary patch delta 122 zcmeyyG>2I`l$V!_0SGj?J>ujU85kaeILLq<$Z-JT;*g2jjuNSiDO{;cS*$6XDeS$> z>C91VDcr#fnmiNB;>4;%l5-NX5-ap=igQZStqKy0Qu9jeCSI8$zys9J!w7`TJdAvd Ge18G?`xqDi delta 83 zcmbQk{EbOFl$V!_0SIg*-Q%tS>Bk@rGGGI89DumkZKAd#S2|M^TMAb&gC_UHmbi&O RrtpC@^DqJ-GY=!*KL8^m4W0l1 diff --git a/cloud/__pycache__/views.cpython-38.pyc b/cloud/__pycache__/views.cpython-38.pyc index c0fadf0c946cc18260d9e22f6cc94db4ac8b398c..d137defec4fbb4226aa37a07bc9990d50e5b6e0c 100644 GIT binary patch literal 4856 zcmaJ_OK%*<5uWaO?Ck85%ZErxqMnw$h(qULAc^DHQbfs?A=8FM=P_ZtUTzPmSrf>`Bfg00aF19mrb*NMbqBJ)K*tlS65ee zSADY|HX4qG&+p!U`=kGz*0g_7*>oOkDyycR5kr`%JDuLq0alDnk%Mz9>7c26t58Jr2vx@Q&N3Rc_|*lxr2Irm(6 z-aW76Gr@)Mf_p*no#0}4$-TrhuPJ85+-KTj=3WLrFBTO4f;c4>KhxYRVo5CH_eIgV zqjgVzNpb4(+>%}-Jek|l6Tb8YX_w`l+wqPcec;_6Ln7YwKk=iknLF2|*H67)`QF3a zzU?Qe;+zjhVk&jkytMBJg?!Bmyh0lmjSmw~;+J8OxB&fp1?A;<30U#7#f&NKXBUm!^KSlYnmtZ@WJZ(q59rvcKa|_b;#AxzSs@ z^#S<$J4uWsC8Ib>ymc(RLUXM7SUE9dlt$26Qa>cVc5TOt29Ms7@pv@g6t419$FGg& zI-cYoaCt|Ya6G!NO$_{+c&v;Gc8|*^sg|-KAL@c<+Rzx9Lrdtp{4o>85=NDM=Cm*4 z!rImMDx$K_Cc3aQJ>x?=t&)Z8&_Z>Wr;d_MZ92P5)Sj9X;|Ysioz9uDsa;V&n6o0x ziJjK6%CNrI*vDxR2K@Y7@QEE=nM&8R-!D(9S#{V{7Fwiv&yrt|*8MLs`w5eO{f6)C zsPEtDgQLc_5u?T~o7A$}a7OTZI;;knx!1{R`-~NFYol*=Xcu}<*!`=Si94u?<{xy# z&r}g&nOR22Iau$>5o$fPCPp+T+QRnP#7O5dP0VD*WBrb%_)fuhXV-Ic+m}hY@eBvW zPkJ(r)7-+T!hw)cXO%;*L@|7nzPEZe4TDeT3!$RDugd)&nofs}KCd-wM2~N4ee) zg4|Tg%B^B`xxVA2Dv*foXoOT$1dXm+x1LuhQF!o%)}2=ot|Byf1*TN+DuXymy-!m4 zJ(`x*?bZs@@ir9P20085qGDR!-*MrQ_s|p6TcwV`dv9y_Op|Y5@K>*2e{GX;RkHbZ z9PD^L&PoFeCyW6rto+Cv>$lnMmm<8Dten_Fj*Zv%B$CD=ifyzXJIV)07T;k zE5F=kD||)gj6*WVI{$T?6>jhjvv`vcwfG7&nyk(ow!oW8leD4xmF;kie{JY>F0aDs za|vk%f(jm$kUmGz6KukfjC5QF6uEo+i7q4XY>x|lzqs&!EZZg$jZyLzcr(?Jrg%m& zB((Jr4@sh*jcHI>n?uy>6~C9CY&`x?_SYgpZLGNdiy3)vI>{@+T=G;0-U=I^ET z!WU*wkgGlq}=C)k^*}czFg=;dhhyVU?Q4@Jig+t)q7W`j+F5IF zQ8-z9xa6xDaUO1qb6JZ{Vzdt1nmAurMKmj=HFbW_YM_5vTv*bkze8HHnN^6Y8+LKm zoH)~XrKeHob#dt_Kmvf;<@JqRf9u8u@*^ro9Jy9sQ0`KBGIt{HAsSS6cA%Xb@4t6vBd?D~LEIOfpcznS4dtGS#oBWLA>@~g2LmrjP=5(# zp2@AyOYg=)UL(z)5TWWPzfa^9B0nIaD!q~PA9$+jqMQk#qMgss)YlX^So0-8$__}ji$R=pq7G^%t0l~d5Bj_9#iL4O1P0feO);uC#K~OYWWttHY)*wx;dWqiQ(Ht@3)OyT?{nVi3bbl?QYg}F5kjt310FUx4v2;3f?U^BOP)lv365)Jq zVV{z2UA{~`hli04)UgvOe@L=}BT^WpJ3TdG7U$&Wr1lz!TQ9Lw0cx2zwvBQFO8a;c zde70Ap+Jd^c&nc0fCqt&gQ)%m4Mdd#eCVl`v6MaLayi4>50WI}1SuN=T&QTP#0UJ( z5mB2!2_k7AqT2u<$FsNCMOn$WY6d%RU0m(%)L`kJG!WA-&@#(tv_HS1J^!7Fi7ddLZcn zNs9<=y0nSV)_;q=7+Eio^zTf*a?*st8{jP+Z|aGxktsTB$iv03CN-8$a$^;LQlzp) z{pL3Q14v|>_}bwV+mg`m!D!6ltx|4FR?GhdWC#83;xQz@I{ha>5^_H;P`DVRd`MfA<<#y6-IT&Qh3ELuxc4Zr|@B0Cj4Ls#(1mz4vDUwXtQExEf0afKN$~w=)cCV9k z72{Y-dDEB<4?vM&_xo>L0h0^5$XN}Gx{}|LBIJ=A^@o!+y8+e7mc8;sKO)cRd)gM6 zc^KOn4n@M{8GWZ`9JtDrVrL}M%)~ZJ`0ljlrW^KprVBS3B$;@T$tBEameNkr?um_7 z{N9pRCL7L!@eK0mRRoJLFq?R=2n|Yr0Q=>+4N?Oi_bjOy4*8#sD_1ci(v$hS9CWl9 zsdIEV6p&l7g;EhYL=O%Lr$88wCu>;Y=(J=|1u{obaTm+}+w9OsdQeGw2dEhA*W#)@fj zI#r{sJ$Rl7soZoFMIuduigNlQdph7!Pf1?ZFsETz!$l33G?-+ThR=kNSJ9AjIg2-e zBLf|9U4s@~UPEa5=6`Ht+k;lD+)VU`*r2?k?+vV=rz%(k>DF!-hc9j-lj@3EDjzCP zA@k4x4?WM3w~-H)KQ?Asu&Tu|#DDev74_Eo13v1BJ6gW<(&SV9e2Eb7m(iB~07QQ5 ABLDyZ diff --git a/cloud/forms.py b/cloud/forms.py index b4de77b..07e7df0 100644 --- a/cloud/forms.py +++ b/cloud/forms.py @@ -1,6 +1,6 @@ from django import forms from django.forms import ModelForm -from .models import Data +from .models import Data, DataFile class CloudAddFileForm(forms.ModelForm): diff --git a/cloud/models.py b/cloud/models.py index 9ac20c6..343cbd9 100644 --- a/cloud/models.py +++ b/cloud/models.py @@ -8,7 +8,7 @@ from django.utils import timezone def user_directory_path(instance, filename): # file will be uploaded to MEDIA_ROOT/agency_/files// - return 'agencydata/agency_{0}/files/{1}/{2}'.format(instance.agency.pk, instance.subdir, filename) + return 'agencydata/agency_{0}/files/{1}'.format(instance.agency.pk, filename) class Data(models.Model): @@ -28,7 +28,6 @@ class DataDir(models.Model): name = models.CharField(max_length=2000, default="", blank=True, null=True) is_root = models.BooleanField(default=False) dirs = models.ManyToManyField('self', blank=True, related_name='dirs_in_dirs', symmetrical = False) - datafiles = models.ManyToManyField('DataFile', blank=True, related_name='files_in_dir') visibleby = models.ManyToManyField(AgencyGroup, blank=True, related_name='visible_by_user') date_created = models.DateTimeField(default = timezone.now) date_last_modified = models.DateTimeField(default = timezone.now) @@ -42,12 +41,12 @@ class DataDir(models.Model): class DataFile(models.Model): name = models.CharField(max_length=2000, default="", blank=True, null=True) - file = models.FileField(null=True, max_length=255, upload_to=user_directory_path) + file = models.FileField(null=True, max_length=255, upload_to=user_directory_path, blank=True) date_created = models.DateTimeField(default = timezone.now) date_last_modified = models.DateTimeField(default = timezone.now) - owner = models.ForeignKey(User, on_delete=models.PROTECT) - agency = models.ForeignKey(Agency, on_delete=models.CASCADE, default=None) - parent = models.ForeignKey(DataDir, on_delete=models.PROTECT, related_name='thisfileindir') + owner = models.ForeignKey(User, on_delete=models.PROTECT, default=None, blank=True, null=True) + agency = models.ForeignKey(Agency, on_delete=models.CASCADE, default=None, blank=True, null=True) + parent = models.ForeignKey(DataDir, on_delete=models.PROTECT, related_name='thisfileindir', blank=True, null=True) def __str__(self): return str(self.name) diff --git a/cloud/templates/cloud/cloud_main.html b/cloud/templates/cloud/cloud_main.html index 3833a89..da6481f 100644 --- a/cloud/templates/cloud/cloud_main.html +++ b/cloud/templates/cloud/cloud_main.html @@ -1,13 +1,32 @@ {% extends "users/base.html" %} {% load crispy_forms_tags %} {% load counter_tag %} +{% load static %} {% block content %} + + + +
+ + +

Dateien 


@@ -23,45 +42,215 @@ {% endif %} {% endfor %} + + {% if user|usergperm:"filedirmanager" %} + {% endif %} +{% if user|usergperm:"filesviewer" %} - + - - + + + - {% for d in dirs %} + {% for d in dirs %} + + {% setbool False %} + {% for ag in d.visibleby.all %} + {% if user|has_group:ag.group.name %} + {% setbool True %} + {% endif %} + {% endfor %} + + {% if d.visibleby.all|length == 0 %} + {% setbool True %} + {% endif %} + + {% getbool as groupchecker %} - - + + + + + + - {% endfor %} - {% for file in dir.DataFiles %} + {% endfor %} + {% for file in files %} + + + + + + + - {% endfor %} + {% endfor %}
Name EigentümerDatumErstelltGeändert
{{d.name}} + + {% if groupchecker %} + {{d.name}} + {% else %} +  {{d.name}} + {% endif %} + {{d.owner.first_name}} {{d.owner.last_name}}{{d.date_created|date:"d.m.Y G:i"}}{{d.date_last_modified|date:"d.m.Y G:i"}} + {% if user|usergperm:"filedirmanager" and groupchecker %} + + {% endif %} +
- {{file}} - {{file.name}}{{file.owner.first_name}} {{file.owner.last_name}}{{file.date_created|date:"d.m.Y G:i"}}{{file.date_last_modified|date:"d.m.Y G:i"}} + {% if user|usergperm:"filesmanager" %} + + {% endif %} +
-