From 8f87ed4f378428049a506112d0a93bb652bf3ee8 Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Sun, 16 Feb 2020 15:58:39 +0100 Subject: [PATCH] Stadnards neu anlegen fertig, Ansicht fertig fehlen noch Gruppensichtbarkeit und das updaten --- cloud/__pycache__/views.cpython-38.pyc | Bin 5152 -> 5258 bytes cloud/templates/cloud/cloud_main.html | 9 +- cloud/views.py | 16 +- standards/__pycache__/forms.cpython-38.pyc | Bin 3221 -> 3974 bytes standards/__pycache__/models.cpython-38.pyc | Bin 1630 -> 2006 bytes standards/__pycache__/views.cpython-38.pyc | Bin 6385 -> 7480 bytes standards/forms.py | 28 +- standards/models.py | 23 +- .../templates/standards/standards_add.html | 281 +++++++++++++++++- .../templates/standards/standards_single.html | 60 +++- standards/views.py | 70 ++++- users/__pycache__/models.cpython-38.pyc | Bin 5061 -> 5631 bytes users/models.py | 13 +- users/templates/users/base.html | 9 +- 14 files changed, 469 insertions(+), 40 deletions(-) diff --git a/cloud/__pycache__/views.cpython-38.pyc b/cloud/__pycache__/views.cpython-38.pyc index 8ed2c763954e42b552627dfe0fc1e2de8e626367..438869913aeaf926bcb162bf8f059c21e3aee358 100644 GIT binary patch delta 1371 zcmZ`&O>Epm6!shcW^M1Lo20Nwx|@{z)KwvE3027tp|p(%KPo5$q0lzk?U>X~vYU*z z5fL^$MCE`e3Yw}CQVxkY=Qwn|a@S@AsSZ3~&ncHWlT4fmv#}CtVUCmwhPY3vmHTna28eIuyXqrg$=hn_ z66Lk)5VEip3v+Km;>1pPfWv}{$`50GD<3=C0Lp(FCu|GNrfvgPDzVNLe6u$wkDj&w zv0iV%d}?gVUs=(>R&txB9M%SpzP7^}W)RJZTCLtN%JY8p%9_CaQX2YOfr#ppJF4hJ zS9Hl6T94a>Qx8Ns81jyGvbSMSXuvTKTV6<4c0hQjySIyvXUc!H0T`4ez0yWu=~Bb0 z3GR!z%9^~T4?jj9z>hC4`&BNABw`4j+c1T{a?OwG!jnJiz4kF$>L(bKd1DMFw*d~}l~YE|PM39EOMT#T%D1wwFJGjd_|V zQOD`Fbjc070!Q!uZkOQL`F)ynY}Ss-t3Iz)!nuIYx_eHwyyVLsx4ZNl1)L`6Ab5h{ zIKc^mF8QW=0*2&Gcj%R2A|6G+)Ag5XtG;-On5PNoXdC+E)Jx~58+x?77}P~OQeKA` zq2;vB8JfLL&_{4iI@#0q6ir_scu`)+mf#s#%X)_=h)CgCoHd*>=R6RVwQ^W~dm5SO zJ^6Wd-Ljw+4^a5>Z0=TPfnw;APKrY`r44E*JDQl3zvT+oA17|V#UXMZ>XY1)1bgi? z6J+N7dUUOVUynS!*~}QpMiFM6^5P<`G=CJ}&64-(7PBb&6fJU;RvbWMbiph*%*3qx zxb=sN^T^_j&ID0Vjq2s<6~9>`ZD;c+{vFUZ@mm6Oo~{1jM3oAsJ7fmga&u{aLyFw7E4rN#cIq$3oLca7S4vAXkFHxf?I0wWv!?r zrqB~Ba$+-dH@z)|KF8oc2%cE&u?OsN<-$-h5D$cYc2tf$TZX(%UMsg_tIOng?sSksF3iJmHlv2(HnJ#Cj)LN#DATXgtY zn=JNt%9mRi(_^xV_Ivkn1O^297@W~BZYSr|T9Tq6FU_xJF7UlR^#p}Yjr#I(qb+0^ zH_o|4$zeEUe!#}zSF?sVY*i3z z)->X(HG$Z(P9y$heT4Yoz&+yalin@7M@8&v@vbJv;Ya%&R)v?G13TNA*pcw46!TaW zwGDhtrua+O07E_(K{sc+V?UjuQ0@0VOP-BA6gJ zKv073yn}2%{O(PRJWa&o2&o|(Z!W#nkW<7QBB;Vqzc}Xl~uG@dBiP&vPFS4bd0) z+bJjH2&q(Ts`NDZJeLfK2i~F4-)hfCoKzLFEpagwRt?d6X-H4rAEfX z2(P>K#YM7Ql1ocb%0xfmf3ue7(CG`5j;rKxVHz*v6SCMSm*+s;_S+j*kPW=lZg!gO zPE>DSZuC>6=iP7m|K>SKE?KhKtzM-_WB$T8zp&t3+sj5?CQxq=J5?r diff --git a/cloud/templates/cloud/cloud_main.html b/cloud/templates/cloud/cloud_main.html index 642b1f6..4118feb 100644 --- a/cloud/templates/cloud/cloud_main.html +++ b/cloud/templates/cloud/cloud_main.html @@ -384,6 +384,7 @@ function changeGroup(groupid, value){ //MOVING OPERATIONS function moveFile(fileid) { + workingfileid = fileid; workingdirid = false; @@ -398,14 +399,16 @@ function moveFile(fileid) success: function( data ) { $("#agencydirlist").html(""); + html = ['
  •  Heimverzeichnis']; createList(data["data"]["agencydirlist"], l); $("#agencydirlist").html(html); + } }); } -var html = ['
      ']; +var html = ['
      •  Heimverzeichnis']; let l = 2; @@ -429,6 +432,7 @@ function createList(arr, l) { } function targetParentToMove(parid){ + console.log(parid); $.ajax( { type: "GET", @@ -517,8 +521,7 @@ allowedtypes = "application/msword, application/vnd.ms-excel, application/vnd.ms function uploadAction(filetodo, parid){ var formData = new FormData($("#uploadFileForm")[0]); formData.append("uploadedfile", filetodo); - - console.log(filetodo.type); + if(allowedtypes.includes(filetodo.type) && filetodo.type.length > 0){ $.ajax({ url: "{% url 'cloud-adddir' %}" + parid, diff --git a/cloud/views.py b/cloud/views.py index 79b426f..7c941e6 100644 --- a/cloud/views.py +++ b/cloud/views.py @@ -23,7 +23,7 @@ def CloudMain(request, pk): context = {} breadcrump = [] files = [] - + rootid = list(DataDir.objects.filter(is_root=True, agency=request.user.profile.agency))[0].pk if(pk == "first"): diragency = list(DataDir.objects.filter(is_root=True, agency=request.user.profile.agency))[0] @@ -34,7 +34,8 @@ def CloudMain(request, pk): 'dirs' : alldirs, 'parentid' : diragency.pk, 'files' : DataFile.objects.filter(parent=diragency, agency=request.user.profile.agency), - 'agencygroups' : AgencyGroup.objects.filter(agency=request.user.profile.agency) + 'agencygroups' : AgencyGroup.objects.filter(agency=request.user.profile.agency), + "rootid" : rootid } else: @@ -51,7 +52,6 @@ def CloudMain(request, pk): userisingroup = True if userisingroup: - alldirs = DataDir.objects.filter(is_root=False, agency=request.user.profile.agency, parent=pk).order_by("name") vieweddir = list(DataDir.objects.filter(pk=pk, agency=request.user.profile.agency))[0] @@ -68,7 +68,8 @@ def CloudMain(request, pk): 'parentid' : pk, 'breadcrump' : breadcrump, 'files' : DataFile.objects.filter(parent=vieweddir, agency=request.user.profile.agency), - 'agencygroups' : AgencyGroup.objects.filter(agency=request.user.profile.agency) + 'agencygroups' : AgencyGroup.objects.filter(agency=request.user.profile.agency), + "rootid" : rootid } else: context = { @@ -122,10 +123,10 @@ def adddirbyajax(request, parent): DataDir.objects.get(pk=request.GET.get('id'), agency=request.user.profile.agency).delete() except: success = False - # MOVE DIR + # MOVE FILE elif(request.GET.get("action") == "movefile"): tempdatafile = DataFile.objects.get(pk=request.GET.get('fileid')) - tempdatafile.parent = DataDir.objects.get(pk=request.GET.get('newpar')) + tempdatafile.parent = DataDir.objects.get(pk=request.GET.get('newpar')) tempdatafile.date_last_modified = datetime.now() tempdatafile.save() # GROUPS @@ -164,7 +165,8 @@ def adddirbyajax(request, parent): if(file_ok): tempdatafile = DataFile(file=request.FILES['uploadedfile'], name=request.FILES['uploadedfile'].name, owner=request.user, parent=tempdir, agency=request.user.profile.agency) - tempdatafile.save() + tempdatafile.save() + data = {'savedobj_id' : tempdatafile.pk, 'savedobj_name' : tempdatafile.name} else: success = False diff --git a/standards/__pycache__/forms.cpython-38.pyc b/standards/__pycache__/forms.cpython-38.pyc index f5b11604f163ffe097ba9faeaf72759d17880a0c..a91b5bb0c27538f1f3462c1ed11558deda9f3ba4 100644 GIT binary patch literal 3974 zcmb_f&2JmW72nxi?k>M6%3o5{L}}VIED9m$cLO((8e6uDnkZ^JNf$yFE6$KwYPqD} z&c>A>pA;Y`_t-<>gMAdxLk>Ysz4;&TsfW4tls_Oq(@Xl^EJ@L#*rY&6?BkpFX5P%a zo%j0w`vR|hq}rrX81K4|z2X527%iI+bzcv-N% zb!_=dXsPfjTB>796D>7fM@xNdSw>5PFQH{=Y`MUjcZ}BZ=eTO4#Z;j?gh7f*@%E65 zcpF=vv)om@Bg2G;z{y?M0ugHEZkX!;W}A;yocdH1+Jq8aL7(q9P2Ral87F=AcvnDA41p&?3RwS* z01;zwkvO|1>%9i;0fW|3jlU)Y zj6M{~6Mq(+Ob$U6!%XfCA(97h5l6r!60{+p1;R@tR!OX&XrC077X&m{5U5fR42C?5 zNv{OK{Va@g4-~MkDxg!uP$u1dppQkWoEUQv<8L<-F;7nn_#Oo(@t@6i-`b(`mG0ae z#ytT$*M^;JfNM^7Zrr-N!=qj#!&rnpG-a@pPLA%5KHnRo17*|esbQ>i4TZ;S(=_a_ zY};fneE;o~;C1ZKp(>bssMzTk)$vKY=#hqGN5-+)H;>qn`4=pEY4z=X;mG7{#ppYI zx9@TD5%%d9xwT>hC0Xv117%LCN{R}IPDE0xBnpjrEEqV z(^w3GP8_Bw?n77N_bK8}QM`dq`dt(TYqE8GN?1e-Ufb#s-ivct9WpmLI* z69>M7QQ&0~uaKbH({rfmc=nEn_eOY*#iTVigNM;KX$BGt5_*QGALDI`Zbit`44E2vy60k|8w4GPFHL58ao(9M z6B__wI#3>U(gE*!1}u}ffTHD|Wj>-#&3C6za<;?<;-iGWuz~i;yfP_ zs!aLl4dkOS?-&oQTzhCsCQZ#y)|8=;QToo2McjnAoU;?M5Mp;(RN&F1I8EHQ!@e2~aB=IW}uaS6*1c7``Wmif2H3=$3 zc!$I$i7gU@qc9Mz5v17~ z0`x3!J8aclV{7d2l?9bEL2dXg2AKgSJ(-?|GCP}zLAJB0~gU2XL?KU1ahxfyzH`Gk-SMtV& zzSRPyQ91f5o#yxI3UPP3F*XrQs0!WqrzU-?SRF^9zbX*zZqPM}f#}Lx! z6R1}5fk8U`XSXrFyz8sHW?xMoc`48q&fBZLL59Ai-9NB_UPb=GaWp7+mirKf+fL| zYcfjmW6&XjnsXT=VQb#H|iBA5z-6Bet47gQF9Bf999AB-De zk2b8j?NN){mPcL7S>{--r>wLVYt=GO!UInsIuL0w7P>%GQ3>UhUUc+|C!skd4yKb4 zO)V4trbKv7{0!yfcaq4_w^x}2=^`ahtu`FjYLxA5;%QdJZj@I|b7eUQ4t^EOFwH9S z^BP@V*lDfUoJYm9a*fJD+{0G38%lJYH;sAR2A z49H!=jKpqq!8`m2B7?{wFoLI>X1QiLPT8*2Oq1{Rhr5#qKT{MeydQ@GR5@`JO8cR9 zi$#4j><|pnnR%Z}gxz{?T#~;yBpVZ!N=!;Qw7wWYEl0Ehm4J#B1%ty000v#BtUx9CmRp9;wB`2ZzooW>=l?D>e(7NHpz0!Q+{MGFED#nxmyDFB zuqCTe5zi9ywI1JWnog@;w|S%K+J*a7RLFqycfV|EKApbUZ!$3&O(ra{vGU diff --git a/standards/__pycache__/models.cpython-38.pyc b/standards/__pycache__/models.cpython-38.pyc index 6a49b2a7a5b6a8e02ad755d1c7b32842d3b9f600..59d37158b427330994dc41a7ad8795b54b7a4545 100644 GIT binary patch delta 798 zcmY*X%Wl&^6!kbZ*oo~p&4WPO5T3172^Q=S3LrtN7Ak~Vgft5xCvzz-W4jvLQ6nK$ zg04VaME(FImV87%fh7w|Al68H0UKt9C>Pu8CHLL1viAqp|57CP9Gxk;;X0owUd~zORtVPD%0F z`7gB9b-Aa)8UY)`3G^dB1Xkmcr^=1F`E#|~uw)Sf>Zd@aMfnG{vnfiknI*vb3=Wv5 zF;U9u0_4qFlu?RpSpkPI%+i=)M^ZmaU&Sm)#~$KiKC5?8JO8OZK{xZ;rNgyFaYai& zdj{uuR=9hR_WeN;(=3I4#^|m5TWJNY=DHT5W}awUsGOf_*-_yLOOQa6`e`tN!k8H_ zXS0jywjYgmV}a`dP{Is81ebk6fV||NGQlnlqSySjlhluh&q%^d;lmsSNid)=7_$q) z;j(~#UfT}^7mitlgUwg6%E3@wG!2odjp?%VmMX%LVQ8|;YvgbBH%)8}X`GQ8VN8G~ r(jhbR-}=%c@hcblw$Nq6ya9eB=NHBu-k4G7Az`Ay!9xFsfvnOWJ_NvQ delta 448 zcmY*TO-sW-5Zy`AcH5>&`soL?Mi3?TFO=%7P|zacB?n8}T}4S6*d!w2%^tmk{SE#C zZ=O91UOePb`~jXly9uS%8Rk89=gph>)aR;pUMdxkh|8Dq#UvYPO<+;`bk9}^BG@Up znymrqA(AJB86pJ=H~OP&8zgsztYY-qwN5OEad7R@dv8i7iPdUk#p6hn|Alx5-WxMdns&!@xb$fZmdUzU^-)A)~M){ zvuPa7W*c0ngk+RzRH;%^v3}%@DlY{jgphcEJi!A<^VlaI5NaQgAgU1O-0|9ui6~yp zH|O3t=iYP9{mz;3=Vv~-7`+*Z1O@ne^v$L3eK!4GG)G>2Z{}AWD$rO^g_I9Z!2P7&dnK;ty=jzAN-qzAU8;xT=QCTZV0!Zs-$2RTLixjYSWnhtQe09F~A z1*t1fDmcGalrt{nORAQmI_kOtY+4tECcq78N<1N9h7W4j=)S zDFLWNlK4!Sz^M0^1ObzN1upZnPY`UOB2cm+-WS<9XF)k05!s+ky7I07GlNb``9+6R zl2pwKwy%`2Q4Vl9%jF=K2W?+Bx+@TY&xNu=cZh~}Nn5g|Md6KHTef|bTzA;YS4JwM zwoD^CWS0=(KH0p$Eu#Atimh-9KUj=`MXWN?0TcfrlL|M9?VG5!%1r`bG7csae3QT- ziwE37&I;`y=nUK^>@x`4*PW#CU4kQPs(Z`^QrW=|1)BWGw<{8%K2G}}?07uyp` zDNo5dPW!jXieOFC^fp9fP1|JeF5TdH@ug1V+=c?j z_W{kcqxZ$l59$(1Hppz<4t3Ai5uSc=bKNGkNc;K0JmH8Pvd;4D3-)t8|Dc9;ASybT z6)LlMGL-|93?14LY3_l)ov`L1mBV&o+Xp3+cYg0b)fol0xlyJ!nQrQJOS6nyx~uB9 z^>WKP}qx4V_nZ=Md@g|g=`MAGj z>dc($l~_%yYil}t99Y4cbMmTjVGMonFD<{e@QtO#0%50MjAe*-*Ke35)@WD^Yh`be zjiT&#cGT>Naa0P!l2G)XXRgdQcGafFAS8n_+~7{m*$t8B4bFNa;AuP(UB-!%_ zClRm&T@^OGrB%Uf4(HGbHsXAt-s>!&co_j}lr18RBD{!j72z6yE1S)#VYz`@hH0!; z_0=uc2MJ+WR5*bOzBS!)<5i=M>Fg!Obb~x?+<7*Ldg{7nmYO=Nu_z2XuHS5x%erYY z=nk+=lNoi3&4A2?a6<6{=7+*w#u=Yht-3N#i>vHqN70&1y-r=JYM2%iL9LKvv$)7I z!Ycs9a9w|E-!ZlhQ!ZKS@I1Q2WY_t`o5i@L*P1>5>sn1Orkf3u2aPS)yu9_Amx7`S zj(Ddc;jNfNQk2SCy>!cft@vEPbDtWl=x=%~W9QJNy@m=Y;myBr5Ik+-3`9N+f)-WvAXDht^Q_E}#v&-rKHI$yl?f9yrncoanA-P*?5o_8@{{Lca|)0mcX1 zKTJSa3SZ`Kw8y`jO$wh6KY}^)1pq;e66fcU{;XuieKCehysD!4yvgmmgtTr@SvNUtU z{53o_6#xM|NfCA%B^u`NYl9whUL&*qX`aactsPh1W>4Q8#s0#(rS3^Z1AtFs6>(0r-P+H(q-I>BGhW z3O=^KCByG2nBW`mReAo8EP_gZbY>FI^nV2xxrp#p1kSum&aK4gCESRw#-2mzY2RcR z@btFP&=wpOb~`Olze#sQE|3jBf@Xi8~lTI_9Sxo@eTmo4{6b1{HJ-W_<>xTEqRM>#nzqtes7 z4fnFP0ABnJwDz)Z+Gu%~n-^ ro`8mlHFhzM?^iO)F-|i4&fmEt?n}l+5~OfF3zw2i0EXZSc=!JR7oR|~ delta 2536 zcmai0TW=dh6yDjJ9pBniAHGqEs3_9s@b-v7W>RBjna-=(jqBt z0Uo2Bf^P*LrwPHg!K@@r!K@U_3c;-HFq)!#vMiw@qfh+zfKf zu#9Q5W?Bv(4b0|qU{g@MfK_KTqk0_B3z)R*)ERQt%NM#*{8TV_u*cJDrgN=MSqDsE zZy@YKhyi&1vR(SnsFo?)jeUC%y7}$kLShK%TL{AlM-Y1WjZpp)lYtj>R=}>K2*&`5 zA4rn6=q8=PjdVvi)e;N;78I3y!a9=m@2~&|#nE%i#mP#7_bwNs_V-EKUMS zh=f#`!1o_rV`F?@q=yXgQ7DiApNVV_<{%$Fk>MPF5E&~=75`EU^T>X7I+x-ii&`bR zE{}t*R!OkmA)8t$0XE5XHmiBGlAF(UwWSp5$4S#L|D?V5-H0n!GSCvV{h>CeJE)qd ztBZtoj6NakB|NzZ{9$C9MfPnR7~w1JpT*(vN&%8241BKtm(eNQe^ z&%c)CmdnKs^P{ru!0e_VHcfwIE&Y?T6s{C>!ye?%I=Z(8LL?2@*8!8L1~mXpD1fL$ zeWCl<`FpW48RnH(zm#`{H*Lm)(U5g1>QyLhJa3>oL;&ig?TllP$?($^O6n-|*(FScXn zB>+#SX4Q1eMkO`lT=22IXo7X*sRo<2**<(ehtGay+Ou`bHa!ii$7bSM6rPH^@iG|Q zfo6+028oe01S?K%@+a})FiMDFJrxwz^n&eZbcj90Mxr7&tcynX`AA|QF@TG_itrkO zP~YqPP9lF8_ZF+ML1eA)iM51#cWq3`PJ0P7<$EoJF*BKJI8-b?K#>?s8GJTaof%AwWhGgp$4kvBfdY~Nlbn$ zUCVXBE(KEb8}Jq_m1bvHYg-jc{kL?ET;PAD4_2D`Z4`9teikQAp|e6}!^nhd+B(;S z1jO~dnSY_R*c<^bzT;nHGGv-R%6z`+o##jOZ}3hR-er1l$kP$av?vV4^)AZkD!g_I zjS|4h+thPWoWgT)hSn=aoMH8~BF-qzFof&;|3N0epP#_gPD*+Bk#i(MVsi7wAnJ47 z&nhr7TG;jUWOjgzi9Zu;47%8P1gvdQu8blx5vCDv);e)DYtZu_uGQ)FsyT%JNbCXr aqPweCiA7}+*bD6dG(FY<7=+f=`281~`V6)J diff --git a/standards/forms.py b/standards/forms.py index affe678..0d826c2 100644 --- a/standards/forms.py +++ b/standards/forms.py @@ -3,6 +3,8 @@ from django.forms import ModelForm from .models import Standards from areas.models import Areas from tasks.models import Tasks +from django.contrib.auth.models import User +from users.models import Profile, UserFullName from django_summernote.widgets import SummernoteInplaceWidget @@ -12,16 +14,19 @@ class StandardAddStandard(forms.ModelForm): class Meta: model =Standards widgets = { - 'content': SummernoteInplaceWidget(), + 'content': SummernoteInplaceWidget() } labels = { "name" : "Titel", "area" : "Übergeordneter Bereich", "task" : "Aufgabenbereich", "content": "Inhalt", - "public" : "Direkt veröffentlichen?" + "public" : "Direkt veröffentlichen?", + "representative" : "Vertreter", + "executor" : "Ausführender", + "authority" : "Verantwortlicher", } - fields = ['name', 'area', 'task', 'content', 'public'] + fields = ['name', 'area', 'task', 'content', 'public', "authority", "executor", "representative"] ''' Hier werden die Elemente für die DropDowns erstellt, damit @@ -45,6 +50,13 @@ class StandardAddStandard(forms.ModelForm): elif self.instance.pk: self.fields['task'].queryset = Tasks.objects.none() + self.fields['representative'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) + self.fields['executor'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) + self.fields['authority'].queryset = UserFullName.objects.filter(profile__agency__pk=kwargs['instance'].profile.agency.pk) + + self.fields['checked_groups'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) + self.fields['added_files'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) + self.fields['added_standards'] = forms.CharField(initial="", required=False, widget=forms.HiddenInput()) class StandardAddStandardEditor(forms.ModelForm): @@ -70,9 +82,12 @@ class StandardUpdateStandard(forms.ModelForm): "name" : "Titel", "area" : "Übergeordneter Bereich", "task" : "Aufgabenbereich", - "content": "Inhalt" + "content": "Inhalt", + "representative" : "Vertreter", + "executor" : "Ausführender", + "authority" : "Verantwortlicher", } - fields = ['name', 'area', 'task', 'content'] + fields = ['name', 'area', 'task', 'content', "authority", "executor", "representative"] ''' Hier werden die Elemente für die DropDowns erstellt, damit @@ -99,6 +114,9 @@ class StandardUpdateStandard(forms.ModelForm): elif loggeduser.pk: self.fields['task'].queryset = Tasks.objects.filter(area__pk=standard.area.pk) + self.fields['representative'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) + self.fields['executor'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) + self.fields['authority'].queryset = UserFullName.objects.filter(profile__agency__pk=loggeduser.profile.agency.pk) class StandardUpdateStandardEditor(forms.ModelForm): diff --git a/standards/models.py b/standards/models.py index 1284a6b..5fff059 100644 --- a/standards/models.py +++ b/standards/models.py @@ -4,6 +4,8 @@ from users.models import Agency from django.urls import reverse from areas.models import Areas from tasks.models import Tasks +from cloud.models import DataFile +from users.models import AgencyGroup import datetime from django.utils import timezone #from ckeditor_uploader.fields import RichTextUploadingField @@ -13,11 +15,9 @@ class Standards(models.Model): agency = models.ForeignKey(Agency, on_delete=models.CASCADE) area = models.ForeignKey(Areas, on_delete=models.CASCADE) task = models.ForeignKey(Tasks, on_delete=models.CASCADE) - name = models.CharField(max_length=200, blank=False, default="") - #content = RichTextUploadingField(blank=True, verbose_name='Inhalt') + name = models.CharField(max_length=200, blank=False, default="") content = models.TextField(blank=True, verbose_name='Inhalt', default="") - #content = models.CharField(max_length=200000, blank=True, verbose_name='Inhalt') - + created_standard_by = models.ForeignKey(User, on_delete=models.PROTECT) created_standard_date = models.DateTimeField(default=timezone.now, blank=True) @@ -29,6 +29,21 @@ class Standards(models.Model): public = models.BooleanField(default=False) + + # USER + # VERTRETER + representative = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_repr", blank=True, null=True) + # AUSFÜHRENDER + executor = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_executor", blank=True, null=True) + # VERANTWORTLICHER + authority = models.ForeignKey(User, on_delete=models.PROTECT, related_name="user_authority", blank=True, null=True) + # FILES + addedfiles = models.ManyToManyField(DataFile, blank=True) + # VERLINKTE STANDARDS + linked_standards = models.ManyToManyField('Standards', blank=True) + # GORUPS + visibleby = models.ManyToManyField(AgencyGroup, blank=True) + def __str__(self): return f'{self.name}' diff --git a/standards/templates/standards/standards_add.html b/standards/templates/standards/standards_add.html index f1ea737..6685631 100644 --- a/standards/templates/standards/standards_add.html +++ b/standards/templates/standards/standards_add.html @@ -1,19 +1,286 @@ {% extends "users/base.html" %} {% load crispy_forms_tags %} +{% load counter_tag %} {% block content %} -
        -

        Neuen Standard anlegen

        +
        +

        Neuen Standard anlegen 


        -
        - {% csrf_token %} - {{normalForm|crispy}} + + {% csrf_token %} +
        + {% for field in normalForm %} + {% if forloop.counter|divisibleby:6 %} +
        + {{field|as_crispy_field }} + {% else %} + {{field|as_crispy_field }} + {% endif %} + {% endfor %} + + + +
        +
        +
        +
        + +
        +
        + +
        +
        + {% for g in agencygroups %} +
        + + +
        + {% endfor %} +
        +
        +
        + {% if request.user.profile.agency.module_files %} +
        +
        +
        + +
        +
        +
        +
        +
        + +
        + +
        + + {% for f in files %} + + {% endfor %} + +
        + Verlinkte Dateien: + +
        + + + {% if user|usergperm:"filesmanager" %} + + {% endif %} + +
        +
        +
        + {% endif %} +
        +
        +
        + +
        +
        +
        +
        +
        + +
        + +
        + + {% for s in standards %} + + {% endfor %} + +
        + Verlinkte Standards: + +
        +
        +
        +
        +
        + +

        Wenn ein Standard erstellt wurde, kann er nur von einer Person mit dem Recht Standards bearbeiten und freischalten veröffentlicht werden.


        -   +   Abbrechen -
        + +
        + + + - + + + @@ -36,8 +37,8 @@ - - +