Exemple #1
0
def upload():
    """
    Form to upload a document.

    :query revises: ID this doc is a new revision of.
    """
    form = UploadForm()
    if form.validate_on_submit():
        try:
            filename = documents.save(form.file.data)
        except UploadNotAllowed:
            flash('Unsupported file type')
            return redirect(url_for('bp.home'))
        title = form.title.data
        doc = Document(filename, title=title)
        db.session.add(doc)
        db.session.commit()
        revises = request.args.get('revises')
        if revises is not None:
            revises = kore_id(revises)
            (project, oldrev) = Revision.project_for(revises)
            revision = Revision(project, oldrev+1, doc.id)
            db.session.add(revision)
            db.session.commit()
        flash('Uploaded')
        return redirect(url_for('.view', id=koremutake.encode(doc.id)))
Exemple #2
0
def genKoremutakePass(length):
    import koremutake  # pylint:disable=import-outside-toplevel

    pw = koremutake.encode(int.from_bytes(getNBit(length),
                                          sys.byteorder)).upper()
    entr = ceil(length / 8) * 8
    return (pw, entr)
Exemple #3
0
def view_revisions(id):
    """
    View all the Revisions associated to a document.
    """
    id = kore_id(id)
    history = Revision.history(id)
    revs = ((koremutake.encode(rev.doc), rev.version) for rev in history)
    return render_template('revisions.html', revs=revs)
Exemple #4
0
    def __call__(self, key_exist=None, tries=5):
        rbytes = os.urandom(self.max_bytes)
        try:
            rbytes = rbytes.encode('hex')
            random_int = int(rbytes, 16)
        except AttributeError:
            random_int = int.from_bytes(rbytes, byteorder='big')

        key = six.text_type(koremutake.encode(random_int))

        if key_exist is not None:
            if key_exist(key):
                return self.__call__(key_exist=key_exist, tries=tries - 1)
        return key
Exemple #5
0
    def __call__(self, key_exist=None, tries=5):
        rbytes = os.urandom(self.max_bytes)
        try:
            rbytes = rbytes.encode('hex')
            random_int = int(rbytes, 16)
        except AttributeError:
            random_int = int.from_bytes(rbytes, byteorder='big')

        key = six.text_type(koremutake.encode(random_int))

        if key_exist is not None:
            if key_exist(key):
                return self.__call__(key_exist=key_exist, tries=tries - 1)
        return key
Exemple #6
0
    def send_all(self, queryset, message):
        # Check if a password or autologin message
        is_welcome_message = False
        is_autologin_message = False
        if "|password|" in message:
            is_welcome_message = True
        if "|autologin|" in message:
            is_autologin_message = True

        successful = 0
        fail = []
        for learner in queryset:
            password = None
            if is_welcome_message:
                # Generate password
                password = koremutake.encode(randint(10000, 100000))
                learner.password = make_password(password)
            if is_autologin_message:
                # Generate autologin link
                learner.generate_unique_token()
            learner.save()

            # Send sms
            try:
                sms, sent = self.send(
                    learner.username,
                    message=message,
                    password=password,
                    autologin=get_autologin_link(learner.unique_token)
                )
            except:
                sent = False
                pass

            if sent:
                successful += 1
            else:
                fail.append(learner.username)

            # Save welcome message details
            if is_welcome_message and sent:
                learner.welcome_message = sms
                learner.welcome_message_sent = True

            learner.save()

        return successful, fail
Exemple #7
0
def random_jobid():
    jobid = ""
    while jobid in jobdict:
        jobid = km.encode(random.randint(0, 128**3))
    return jobid
Exemple #8
0
 def title_or_id(self):
     return self.title or koremutake.encode(self.id)
Exemple #9
0
def random_jobid():
    jobid = ""
    while jobid in jobdict:
        jobid = km.encode(random.randint(0, 128**3))
    return jobid
Exemple #10
0
 def save(self, *args, **kwargs):
     if not self.code:
         code = random.randint(100000000, 99999999999)
         self.code = koremutake.encode(code)
     return super(Inbox, self).save(*args, **kwargs)