Ok hier ist alles. Die Funktion Checklogin habe ich aber nicht selbst implementiert, das scheint Django intern zu sein...
views.py
Code: Alles auswählen
from django import http
import django.newforms as newforms
from forms import CreateUserForm
from forms import DeleteForm
from django.shortcuts import render_to_response
from dateihochlader.settings import MEDIA_ROOT
from dateihochlader.hochlader import *
from time import strftime
import os.path
from models import dbfile
import hashlib
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout
from django.contrib.auth.models import User
import zipfile
import tarfile
class SimpleFileForm(newforms.Form):
file = newforms.Field(widget=newforms.FileInput, required=True)
@login_required
def benutzer(request):
if request.user.first_name == 'mark':
# Hole Alle Benutzer
users = User.objects.all()
#users.delete()
AnzahlUser = 0
AnzahlUserOnline = 0
files = dbfile.objects.all()
AnzahlFiles = 0
for x in files:
AnzahlFiles += 1
for x in users:
AnzahlUser += 1
if request.method == 'POST':
matrikelnr = request.matrikelnr
return http.HttpResponse("matrikelnr")
else:
form = DeleteForm()
return render_to_response("benutzer.html", { 'users' : users, 'form' : form})
else:
return HttpResponse("Sie sind nicht mark!")
@login_required
def directupload(request):
if request.user.first_name == 'mark':
form = SimpleFileForm()
# Suche nach einem Archiv
# ZIP
zipOK = 0
zipexist = 0
allfiles = os.listdir('/tmp/')
for x in allfiles:
name = '/tmp/'
name += x
if zipfile.is_zipfile(name):
zipexist = 1
f = open(name)
z = zipfile.ZipFile(f)
if z.testzip() == None:
zipOK = 1
# TAR
tarOK = 0
tarexist = 0
targzexist = 0
tarbz2exist = 0
for x in allfiles:
name = '/tmp/'
name += x
if os.path.isfile(name):
if tarfile.is_tarfile(name):
try:
tryfile = tarfile.open(name, "r:bz2")
tarbz2exist = 1
tarOK = 1
except:
try:
tryfile = tarfile.open(name, "r:gz")
targzexist = 1
tarOK = 1
except:
try:
tryfile = tarfile.open(name, "r:")
tarexist = 1
tarOK = 1
except:
tarOK = 0
tarexist = 0
targzexist = 0
tarbz2exist = 0
users = User.objects.all()
AnzahlUser = 0
files = dbfile.objects.all()
AnzahlFiles = 0
for x in files:
AnzahlFiles += 1
for x in users:
AnzahlUser += 1
if request.method == 'POST':
if 'file' in request.FILES:
file = request.FILES['file']
filename = file['filename']
fd = open(os.path.join('/tmp/', filename), 'wb')
fd.write(file['content'])
fd.close()
# Suche nach einem Archiv
# ZIP
zipOK = 0
zipexist = 0
allfiles = os.listdir('/tmp/')
for x in allfiles:
name = '/tmp/'
name += x
if zipfile.is_zipfile(name):
zipexist = 1
f = open(name)
z = zipfile.ZipFile(f)
if z.testzip() == None:
zipOK = 1
# TAR
tarOK = 0
tarexist = 0
targzexist = 0
tarbz2exist = 0
for x in allfiles:
name = '/tmp/'
name += x
if os.path.isfile(name):
if tarfile.is_tarfile(name):
try:
tryfile = tarfile.open(name, "r:bz2")
tarbz2exist = 1
tarOK = 1
except:
try:
tryfile = tarfile.open(name, "r:gz")
targzexist = 1
tarOK = 1
except:
try:
tryfile = tarfile.open(name, "r:")
tarexist = 1
tarOK = 1
except:
tarOK = 0
tarexist = 0
targzexist = 0
tarbz2exist = 0
users = User.objects.all()
AnzahlUser = 0
files = dbfile.objects.all()
AnzahlFiles = 0
for x in files:
AnzahlFiles += 1
for x in users:
AnzahlUser += 1
return render_to_response("adminpage.html", { 'users' : users, 'AnzahlUser' : AnzahlUser, 'AnzahlFiles' : AnzahlFiles, 'zipexist' : zipexist, 'zipOK' : zipOK, 'tarexist' : tarexist, 'tarOK' : tarOK, 'targzexist' : targzexist, 'tarbz2exist' : tarbz2exist, 'form' : form })
else:
return render_to_response("adminpage.html", { 'users' : users, 'AnzahlUser' : AnzahlUser, 'AnzahlFiles' : AnzahlFiles, 'zipexist' : zipexist, 'zipOK' : zipOK, 'tarexist' : tarexist, 'tarOK' : tarOK, 'targzexist' : targzexist, 'tarbz2exist' : tarbz2exist, 'form' : form })
else:
template = 'fileupload.html'
#time2 = strftime("%d %b %Y %H:%M:%S")
dir = []
a = os.walk('/tmp/')
for i in a:
if os.path.isdir(i[0]):
dir.append(i[0])
form = SimpleFileForm()
if request.method == 'POST':
button_upload = request.POST.get("Upload", "")
button_show = request.POST.get("Show", "")
if button_upload:
if 'file' in request.FILES:
file = request.FILES['file']
filename = file['filename']
selecteddir = request.POST['dirs']
fd = open(os.path.join(selecteddir, filename), 'wb')
fd.write(file['content'])
fd.close()
dbdatei = models.dbfile()
dbdatei.filename = filename
dbdatei.path = selecteddir
dbdatei.fullpath = os.path.join(selecteddir, filename)
dbdatei.md5 = hashlib.md5(open(dbdatei.fullpath).read()).hexdigest()
dbdatei.save()
fd = open(os.path.join(selecteddir, filename), 'wb')
fd.write(file['content'])
fd.close()
tmp = dbfile.objects.all().order_by('-time')
tmp2 = []
for i in tmp:
if i.path == selecteddir:
tmp2.append(i)
return render_to_response(template, { 'form': form, 'dir' : dir, 'tmp2' : tmp2, 'uploaded' : 'True', 'selecteddir' : selecteddir })
else:
selecteddir = request.POST['dirs']
tmp = dbfile.objects.all().order_by('-time')
tmp2 = []
for i in tmp:
if i.path == selecteddir:
tmp2.append(i)
return render_to_response(template, { 'form': form, 'dir' : dir, 'selecteddir' : selecteddir, 'nofile' : 'True' })
else:
selecteddir = request.POST['dirs']
tmp = dbfile.objects.all().order_by('-time')
tmp2 = []
for i in tmp:
if i.path == selecteddir:
tmp2.append(i)
return render_to_response(template, { 'form': form, 'dir' : dir, 'tmp2' : tmp2, 'selecteddir' : selecteddir })
else:
return render_to_response(template, { 'form': form, 'dir' : dir})
def registrieren(request):
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
ip = request.META.get('REMOTE_ADDR')
formdata = form.cleaned_data
username = formdata["username"]
firstname = formdata["firstname"]
lastname = formdata["lastname"]
matrikelnr = formdata["matrikelnr"]
password = formdata["password"]
email = "platzhalter@platzhalter.de"
try:
user = User.objects.get(username = username)
#eigentlich eine neue Seite
return HttpResponse("Kann den Nutzer nicht anlegen, da er schon existiert")
except:
# Erstelle den user und Verbinde das Profil
user = User.objects.create_user(username, email)
# Setze die Standart Felder
user.set_password(password)
user.first_name = firstname
user.last_name = lastname
user.save()
x = models.UserProfile()
x.user = request.user
#prof = user.get_profile()
#user.save()
return http.HttpResponse("User angelegt")
#return HttpResponseRedirect('fileupload.html')
else:
return http.HttpResponse("Fehler bei der Eingabe")
else:
form = CreateUserForm()
return render_to_response("registrierung.html", {'form': form})
def ausloggen(request):
logout(request)
return http.HttpResponse("ausgelogt")
models.py
Code: Alles auswählen
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
matrikelnr = models.IntegerField()
ip = models.CharField(max_length=15)
mac = models.CharField(max_length=17)
user = models.ForeignKey(User, unique=True)
class dbfile(models.Model):
filename = models.CharField(max_length=200)
fullpath = models.CharField(max_length=200)
path = models.CharField(max_length=200)
time = models.DateTimeField(auto_now=True)
md5 = models.CharField(max_length=32)
def __unicode__(self):
return self.question
class Admin:
pass
forms.py
Code: Alles auswählen
import django.newforms as forms
class CreateUserForm(forms.Form):
username = forms.CharField(max_length=20)
firstname = forms.CharField(max_length=20)
lastname = forms.CharField(max_length=20)
matrikelnr = forms.IntegerField()
password = forms.CharField(max_length=20, widget = forms.PasswordInput())
class DeleteForm(forms.Form):
matrikelnr = forms.IntegerField()